Helm 根据环境获取值

Helm get Values depending on environment

我想 select 不同的资源 limits/requests 取决于环境(作为输入给出)

这是我的图表中的 Values.yaml 文件

resources:
 dev:
   limits:
     cpu: 100m
     memory: 100Mi
   requests:
     cpu: 20m
     memory: 10Mi
 prod:
   limits:
     cpu: 1000m
     memory: 1000Mi
   requests:
    cpu: 200m
    memory: 100Mi

我使用此命令部署图表:

helm upgrade --install --values=global_values.yaml

和内部 global_values.yaml:

global:
  environmentSuffix: prod

我想做的是select根据environmentSuffix获取正确的资源(开发...生产。总共4个环境)

类似这样的事情(当然是行不通的):

resources:
  limits:
    cpu: {{ .Values.resources[.Values.global.environmentSuffix].limits.cpu }}
    memory: {{ .Values.resources[.Values.global.environmentSuffix].limits.memory}}
  requests:
    cpu: {{ .Values.resources[.Values.global.environmentSuffix].requests.cpu }}
    memory: {{ .Values.resources[.Values.global.environmentSuffix].requests.memory}}

我怎样才能做到这一点?

您可以使用 Go text/template 中的 index 函数将环境资源存储在变量中,然后访问它的值。

{{ $envResources := index .Values.resources .Values.global.environmentSuffix }}
      resources:
        limits:
          cpu: {{ $envResources.limits.cpu }}