使用环境变量运行 Helm Chart 时出错

Laz*_*ass 2 kubernetes-helm

我正在为 Kubernetes 部署创建Helm Chart (v3)。在deployment.yaml中我定义了一些环境变量

spec:
  ...  
    env:
      - name: GRAPHITE_ENABLED
        value: {{ .Values.env.graphiteEnabled }}
      - name: GRAPHITE_HOSTNAME
        value: {{ .Values.env.graphiteHostname }}
Run Code Online (Sandbox Code Playgroud)

并在values.yaml中指定这些环境变量的值

env:
  graphiteEnabled: "false"
  graphiteHostname: "localhost"
Run Code Online (Sandbox Code Playgroud)

使用此命令运行图表时

helm install --debug api-test ./rest-api
Run Code Online (Sandbox Code Playgroud)

导致以下错误:

错误:版本“v1beta1”中的部署无法作为部署处理:v1beta1.Deployment.Spec:v1beta1.DeploymentSpec.Template:v1.PodTemplateSpec.Spec:v1.PodSpec.Containers:[] v1.Container:v1.Container.Env :[]v1.EnvVar:v1.EnvVar.Value:ReadString:需要“或n,但找到f

Laz*_*ass 8

原来问题是由 value 引起的"false"

之后--dry-run我看到生成值的输出是

- name: GRAPHITE_ENABLED
  value: false
Run Code Online (Sandbox Code Playgroud)

但环境变量必须用引号定义。

使用value.yaml 中的值的quote函数解决了该问题

- name: GRAPHITE_ENABLED
  value: {{ .Values.env.graphiteEnabled | quote }}
Run Code Online (Sandbox Code Playgroud)

生成以下输出

- name: GRAPHITE_ENABLED
  value: "false"
Run Code Online (Sandbox Code Playgroud)