【问题标题】:Different deployment configurations using Helm使用 Helm 的不同部署配置
【发布时间】:2019-03-06 14:39:11
【问题描述】:

我希望在不同的环境中有一个稍微不同的部署配置。也就是说,在 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。

【问题讨论】:

    标签: kubernetes-helm


    【解决方案1】:

    只需为每个环境创建一个值文件并将其作为目标:

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

    你可以使用条件来切换部署,想象你有一些东西,你想要有条件地部署的 yaml:

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

    【讨论】:

    • 但是这些值如何切换整个容器的部署?
    • 检查更新的答案,因为这在技术上是一个新问题
    • 所以我把东西的全部内容,yaml 放在 if 语句中......?或者我是否遗漏了任何标签,例如 apiVersion 和 kind?
    • 一切都在里面,只需将现有的yaml文件添加到顶部并在底部添加{{ end }}
    • 我希望有一种方法可以列出应该包含哪些服务,然后将该列表参数化。但我发现很难找到有关如何解释不同标签的信息。很多关于如何对它们进行字符串操作的文档,但是“种类”是什么意思? “节点选择器”?等等。抱歉,只是在这里发泄一些沮丧的情绪。
    猜你喜欢
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2010-12-24
    • 1970-01-01
    相关资源
    最近更新 更多