如何设置掌舵环境变量?

时间:2020-08-08 20:57:15

标签: kubernetes kubernetes-helm

我具有以下部署定义:

...
containers:
        - name: {{ .Release.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          {{ if .Values.env.enabled }}
          env:
          {{- range .Values.env.vars }}
             ?????What comes here?????
          {{- end }}
          {{ end }}
          ports:
            - name: http
              containerPort: 8080
              protocol: TCP
          livenessProbe:
            httpGet:
              path: /
              port: http
          readinessProbe:
            httpGet:
              path: /
              port: http
          resources:
            {{- toYaml .Values.resources | nindent 12 }}
...

values.yaml中,我定义了:

env:
  enabled: false
  vars: [] 

我想做的是通过--set动态设置环境,例如:

helm template user-svc \
  --set image.tag=0.1.0 \
  --set image.repository=user-svc \
  --set env.enabled=true \
  --set env.vars.POSTGRES_URL="jdbc:postgresql://localhost:5432/users" \
  --set env.vars.POSTGRES_USER="dbuser" \
  ./svc

渲染后,它应该显示:

...
containers:
- name: demo
  image: game.example/demo-game
  env:
    - name: POSTGRES_URL
      value: jdbc:postgresql://localhost:5432/users
...

以及如何通过--set设置以下选项:

- name: UI_PROPERTIES_FILE_NAME
  valueFrom:
    configMapKeyRef:
      name: game-demo
      key: ui_properties_file_name 

1 个答案:

答案 0 :(得分:2)

您可以使用.Values访问--set选项。

{{- if eq .Values.env.enabled "true" -}}
 env:
   - name: {{ .Values.env.vars.POSTGRES_USER }}
     value: {{ .Values.env.vars.env.vars.POSTGRES_URL}}
{{- end }}

尝试上面的方法。