Kubernetes несколько переменных среды на среду, используя шаблон Helm 3 go - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть 2 разных файла values.yaml для каждой стадии и производственной среды, таких как values.dev.yaml> values.prod.yaml и использование с Helm 3. Я хотел бы изучить лучшие практики передачи переменных среды для сред Например, нам нужно установить различные параметры для переменной NODE_ENV.

-Можно ли указывать переменную так же жестко, как указано ниже, и передавать переменные среды при запуске команды helm upgrade/install с флагом --set?

- Как правильно использовать шаблон go для этого. Можем ли мы указать что-то {{.Values.node_env.value}}, а затем передать это значение env в значения 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"

1 Ответ

3 голосов
/ 13 февраля 2020

Если у вас есть один файл значений для среды (мне не ясно, что это ваш случай.), Например values.prod.yaml (для prod) и values.dev.yaml (для dev), тогда ваш храм может выглядеть вот так.

Это заставит шаблон искать extraEnv: в ваших значениях {dev / prod} .yaml и перебирать все ключи / значения из этого раздела.

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

В ваших values.dev.yaml файлах вы добавляете все свои KEY: values, которые указаны c для этой среды. Обратите внимание, что вы можете иметь несколько значений ключа здесь, все они будут загружены. В этом случае у нас есть NODE_ENV, ANOTHER_KEY, YET_ANOTHER_KEY - все они будут загружены.

extraEnv:
  NODE_ENV: stage
  ANOTHER_KEY: value
  YET_ANOTHER_KEY: value

то же самое в ваших values.prod.yaml можно указать несколько пар KEY: value и все они будут загружены.

extraEnv:
  NODE_ENV: production
  ANOTHER_KEY: value
...