使用Helm 3 go模板在每个环境中Kubernetes多个环境变量

问题描述 投票:0回答:1

我在每个阶段和生产环境中都有2个不同的values.yaml文件,例如values.dev.yaml> values.prod.yaml,并与Helm 3一起使用。我想学习如何在每个环境中传递环境变量的最佳实践。例如,我们需要为NODE_ENV变量设置不同的参数。

-我应该在使用helm upgrade/install标志运行--set命令时将变量指定为以下硬编码并传递环境变量吗?

-使用go模板执行此操作的正确方法是什么。我们是否可以指定一些{{.Values.node_env.value}},然后将此环境值传递到值yaml中,并且仅使用-f values.yaml标志?

  containers:
        - name: {{ .Chart.Name }}
          securityContext:
            {{- toYaml .Values.securityContext | nindent 12 }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          ports:
            - name: http
              containerPort: 8080
              protocol: TCP
          resources:
            {{- toYaml .Values.resources | nindent 12 }}
          env: 
          - name: "NODE_ENV"
            value: "stage"
          - name: "NODE_ENV"
            value: "production"
kubernetes kubernetes-helm
1个回答
0
投票

[如果您在每个环境中只有一个值文件(我不清楚这是您的情况。),例如values.prod.yaml(针对prod)和values.dev.yaml(针对dev),那么您的庙宇看起来就像这个。

  env:
    {{- range $key, $value := .Values.extraEnv }}
    - name: {{ $key }}
      value: {{ $value | quote }}
    {{- end }}

在您的[[values.dev.yaml文件中]

extraEnv: NODE_ENV: stage
以及您的

values.prod.yaml

文件中可以具有extraEnv: NODE_ENV: production
© www.soinside.com 2019 - 2024. All rights reserved.