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"); }
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); }
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"); }