Ejemplo n.º 1
0
        public void TestLoadFromFile()
        {
            File.WriteAllText(_dockerFile, SampleDockerfile);
            var dockerfile = new KubernetesDotnetAppDockerfileFile(_dockerFile).KubernetesDotnetAppDockerfile;

            dockerfile.BaseImage.ShouldBe("mytag");
            dockerfile.App.ShouldBe("MyApp");
            dockerfile.BuildPath.ShouldBe("build/path");
        }
Ejemplo n.º 2
0
        public void TestStoreToFile()
        {
            var dockerFile = new KubernetesDotnetAppDockerfileFile(_dockerFile);

            dockerFile.KubernetesDotnetAppDockerfile.BaseImage = "mytag";
            dockerFile.KubernetesDotnetAppDockerfile.App       = "MyApp";
            dockerFile.KubernetesDotnetAppDockerfile.BuildPath = "build/path";
            dockerFile.Store();
            File.ReadAllText(_dockerFile).ShouldBe(SampleDockerfile);
        }
Ejemplo n.º 3
0
        public void TestDeployApp()
        {
            Context.Configuration.AddApp("my-App");
            _driver.DeployApp("my-App");
            // Dockerfile
            var dockerfileFile = new KubernetesDotnetAppDockerfileFile("Dockerfile");

            dockerfileFile.Exists().ShouldBeTrue();
            var dockerfile = dockerfileFile.KubernetesDotnetAppDockerfile;

            dockerfile.App.ShouldBe("my-App");
            dockerfile.BaseImage.ShouldBe("steeltoeoss/dotnet-runtime:2.1");
            dockerfile.BuildPath.ShouldBe("bin/Debug/netcoreapp2.1/publish");
            // deployment config
            var deployCfgFile = new KubernetesDeploymentConfigFile("my-App-deployment.yml");

            deployCfgFile.Exists().ShouldBeTrue();
            var deployCfg = deployCfgFile.KubernetesDeploymentConfig;

            deployCfg.ApiVersion.ShouldBe("apps/v1");
            deployCfg.Kind.ShouldBe("Deployment");
            deployCfg.MetaData.Name.ShouldBe("my-app");
            deployCfg.MetaData.Labels["app"].ShouldBe("my-app");
            deployCfg.Spec.Selector.MatchLabels["app"].ShouldBe("my-app");
            deployCfg.Spec.Template.Metadata.Labels["app"].ShouldBe("my-app");
            deployCfg.Spec.Template.Spec.Containers[0].Name.ShouldBe("my-app");
            deployCfg.Spec.Template.Spec.Containers[0].Image.ShouldBe("my-app");
            deployCfg.Spec.Template.Spec.Containers[0].ImagePullPolicy.ShouldBe("Never");
            deployCfg.Spec.Template.Spec.Containers[0].Ports.Count.ShouldBe(1);
            deployCfg.Spec.Template.Spec.Containers[0].Ports[0].ContainerPort.ShouldBe(80);
            deployCfg.Spec.Template.Spec.Containers[0].Image.ShouldBe("my-app");
            deployCfg.Spec.Template.Spec.Containers[0].Env.Count.ShouldBe(1);
            deployCfg.Spec.Template.Spec.Containers[0].Env[0].Name.ShouldBe("GET_HOSTS_FROM");
            deployCfg.Spec.Template.Spec.Containers[0].Env[0].Value.ShouldBe("dns");
            // service config
            var svcCfgFile = new KubernetesServiceConfigFile("my-App-service.yml");

            svcCfgFile.Exists().ShouldBeTrue();
            var svcCfg = new KubernetesServiceConfigFile("my-App-service.yml").KubernetesServiceConfig;

            svcCfg.ApiVersion.ShouldBe("v1");
            svcCfg.Kind.ShouldBe("Service");
            svcCfg.MetaData.Name.ShouldBe("my-app");
            svcCfg.Spec.Type.ShouldBe("NodePort");
            svcCfg.Spec.Ports[0].Port.ShouldBe(80);
            svcCfg.Spec.Selector["app"].ShouldBe("my-app");
            // commands
            Shell.Commands.Count.ShouldBe(3);
            Shell.Commands[0].ShouldBe("docker build --tag my-app .");
            Shell.Commands[1].ShouldBe("kubectl apply --filename my-App-deployment.yml");
            Shell.Commands[2].ShouldBe("kubectl apply --filename my-App-service.yml");
        }