gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:30:51 28 4
gpt4 key购买 nike

我目前正在使用 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

这将不起作用,因为 Helm 期待 values.yaml在子图中。

我现在的解决方法是在 subchart/values.yaml 中有一个 if-else-construct 并将其设置为父 values.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 }}
parent/values-local.yaml
global:
env:
local: true

parent/values-prod.yaml
global:
env:
prod: true

但我希望有更好的方法,所以我不需要依赖这些自定义标志。

我希望你能帮我解决这个问题。

最佳答案

这是我的做法(供引用 overriding values ):

  • 在您的子图表 (foochart) 中,将副本数定义为变量:
  • foochart/values.yaml

  • ...
    replicas: 1
    ...
  • foochart/templates/deployment.yaml

  • ...
    spec:
    replicas: {{ .Values.replicas }}
    ...
  • 然后,在主图表的值文件中:
  • values-local.yaml

  • foochart:
    replicas: 1
  • values-prod.yaml

  • foochart:
    replicas: 2

    关于kubernetes - 如何在 Helm 子图中设置与环境相关的 values.yaml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47590788/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com