小编Tob*_*obi的帖子

如何在Helm子图中设置环境相关的values.yaml?

我目前正在使用 Helm 在 Kubernetes 集群中部署我的应用程序。现在我还需要能够针对不同的环境修改values.yaml 文件中的一些参数。

对于只有一个级别的简单图表,通过使用不同的values-local.yaml 和values-prod.yaml 并将其添加到标志中很容易helm install,例如helm install --values values-local.yaml

但是如果我有第二层子图,也需要区分多个环境之间的值,我就无法设置自定义的values.yaml。

假设以下结构:

| chart
   | Chart.yaml
   | values-local.yaml
   | values-prod.yaml
   | charts
      | foo-app
         | Chart.yaml
         | values-local.yaml
         | values-prod.yaml
         | templates
            | deployments.yaml
            | services.yaml
Run Code Online (Sandbox Code Playgroud)

这不会起作用,因为 Helm 期望values.yaml在子图中出现。

我现在的解决方法是在 subchart/values.yaml 中使用 if-else-construct 并将其设置为父 value.yaml 中的全局变量。

*foo-app/values.yaml*
    {{ - if .Values.global.env.local }}
        foo-app:
          replicas: 1
    {{ else if .Values.global.env.dev}}
        foo-app:
          replicas: 2
    {{ end }}
Run Code Online (Sandbox Code Playgroud)
parent/values-local.yaml
global:
  env:
   local: true

parent/values-prod.yaml …
Run Code Online (Sandbox Code Playgroud)

go-templates kubernetes kubernetes-helm

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

go-templates ×1

kubernetes ×1

kubernetes-helm ×1