使用Helm的不同部署配置

时间:2019-03-06 14:39:12

标签: kubernetes-helm

我希望在不同的环境中具有稍微不同的部署配置。也就是说,在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=frontendkubectl create cfg.yaml --selector=environment=prod之类的选择器,并且我已经标记了容器,所以这很简单。但是helm install无法接受类似的标志并将其传递给kubectl。

1 个答案:

答案 0 :(得分:2)

只需为每个环境创建一个值文件,然后将其定位:

helm install . -f values.production.yaml
helm install . -f values.development.yaml

您可以使用条件来切换部署,假设您有条件要部署的东西,

{{ if .Values.something}}
something.yaml original content goes here
{{ end }}