我在每个阶段和生产环境中都有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"
[如果您在每个环境中只有一个值文件(我不清楚这是您的情况。),例如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