Exemplo n.º 1
0
        public void DeployApp(string app)
        {
            KubernetesDotnetAppDockerfileFile dockerfileFile = new KubernetesDotnetAppDockerfileFile("Dockerfile");
            var dockerfile = dockerfileFile.KubernetesDotnetAppDockerfile;

            dockerfile.App       = app;
            dockerfile.BaseImage = "steeltoeoss/dotnet-runtime:2.1";
            dockerfile.BuildPath = "bin/Debug/netcoreapp2.1/publish";
            dockerfileFile.Store();
            _dockerCli.Run($"build --tag {app.ToLower()} .", "building Docker image for app");

            void PreSaveAction(KubernetesDeploymentConfig deployCfg, KubernetesServiceConfig svcCfg)
            {
                deployCfg.Spec.Template.Spec.Containers[0].ImagePullPolicy = ImagePullNever;
                deployCfg.Spec.Template.Spec.Containers[0].Env             =
                    new List <KubernetesDeploymentConfig.DeploymentSpec.ServiceTemplate.TemplateSpec.Container.
                              NameValuePair>
                {
                    new KubernetesDeploymentConfig.DeploymentSpec.ServiceTemplate.TemplateSpec.Container.
                    NameValuePair()
                    {
                        Name = "GET_HOSTS_FROM", Value = "dns"
                    }
                };
                svcCfg.Spec.Type = NodePort;
            }

            // TODO: get 'port' from somewhere else
            // TODO: get 'image' from somewhere else
            DeployKubernetesService(app, app.ToLower(), 80, PreSaveAction);
        }
Exemplo n.º 2
0
        public void DeployApp(string app)
        {
            KubernetesDotnetAppDockerfileFile dockerfileFile = new KubernetesDotnetAppDockerfileFile("Dockerfile");
            var dockerfile = dockerfileFile.KubernetesDotnetAppDockerfile;

            dockerfile.App         = app;
            dockerfile.AppPath     = "/app";
            dockerfile.BaseImage   = "steeltoeoss/dotnet-runtime:2.1";
            dockerfile.BuildPath   = "bin/Debug/netcoreapp2.1/publish";
            dockerfile.Environment = "Docker";
            dockerfileFile.Store();
            _dockerCli.Run($"build --tag {app.ToLower()} .", "building Docker image for app");

            void PreSaveAction(KubernetesDeploymentConfig deployCfg, KubernetesServiceConfig svcCfg)
            {
                deployCfg.Spec.Template.Spec.Containers[0].ImagePullPolicy = ImagePullNever;
                deployCfg.Spec.Template.Spec.Containers[0].Env             =
                    new List <KubernetesDeploymentConfig.DeploymentSpec.ServiceTemplate.TemplateSpec.Container.
                              NameValuePair>
                {
                    new KubernetesDeploymentConfig.DeploymentSpec.ServiceTemplate.TemplateSpec.Container.
                    NameValuePair()
                    {
                        Name = "GET_HOSTS_FROM", Value = "dns"
                    }
                };
                svcCfg.Spec.Type = NodePort;
            }

            // TODO: get 'port' from somewhere else
            // TODO: get 'image' from somewhere else
            DeployKubernetesService(app, app.ToLower(), 80, PreSaveAction);
//            var appPodInfo = _kubectlCli.Run($"get pods --selector app={app.ToLower()}", "getting app pod");
//            var pod = new Regex($"^({app.ToLower()}-\\S+)", RegexOptions.Multiline).Match(appPodInfo).Groups[1].ToString();
//            _kubectlCli.Run($"port-forward {pod} 8080:80", "forwarding port 8080->80");
        }