我希望在不同的环境中有一个稍微不同的部署配置。也就是说,在Prod和Ver中,我不希望部署所有容器。
使用docker-compose,我们通过增加docker-compose文件来解决这个问题,例如:docker-compose up -f docker-compose.yml -f docker-compose-prod.yml
如何使用Helm图表完成?我们在顶部有一个Chart.yaml和values.yaml的结构,然后在子文件夹中每个容器有一个yaml文件。天真的解决方案是复制该结构并省略一些图表文件,但我希望每个服务只有一个文件(最多一个文件!)。
我们使用CircleCI部署到AKS。
总结一下:今天,每个服务都有自己的yaml文件,并且在每次部署时,所有服务都会被部署。我想配置我的图表,以便在某些环境中只部署一部分服务。
编辑:
kubectl有可能使用选择器,如kubectl create cfg.yaml --selector=tier=frontend
或kubectl create cfg.yaml --selector=environment=prod
,我已经标记了我的容器,所以这很简单。但helm install
没有可能接受类似的旗帜并将其传递给kubectl。
只需为每个环境创建一个值文件并将其作为目标:
helm install . -f values.production.yaml
helm install . -f values.development.yaml
你可以使用条件来切换部署,想象你有什么,你想条件部署的yaml:
{{ if .Values.something}}
something.yaml original content goes here
{{ end }}