Преимущество использования configmaps для переменных среды с Kubernetes / Helm - PullRequest
0 голосов
/ 06 декабря 2018

При создании развертываний я сейчас пытаюсь найти причину, по которой следует перенести переменные среды для контейнера в конфигурационную карту.Таким образом, вместо определения переменных среды с помощью

    env:
    - name: LANGUAGE
      value: "English"

в deploy.yaml используйте

    env:
    - name: LANGUAGE
      valueFrom:
        configMapKeyRef:
          name: language
          key: LANGUAGE

или

      envFrom:
      - configMapRef:
          name: env-configmap

с дополнительным configmap.yaml, например, так:

apiVersion: v1
kind: ConfigMap
metadata:
  name: env-configmap
data:
  LANGUAGE: English

Конечно, при использовании конфиденциальных значений их следует читать из секрета, но это не относится к неконфиденциальным переменным.Единственное преимущество, которое я вижу, заключается в том, что я могу повторно использовать эти конфигурационные карты, но кроме этого это только усложняет диаграмму, поскольку теперь я должен обеспечить перезапуск модулей и т. Д.

Итак: что является другимпреимущества при использовании ConfigMaps для чтения переменных среды?

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Используя configmap, вы отделяете конфиги от определения модуля.Одним из преимуществ ConfigMap является то, что он позволяет вам сделать значения переменных доступными для других модулей или приложений, которые не обязательно являются частью вашей диаграммы.

Вы можете обновить значения во время выполнения, не обновляя развертывание.Это означает, что вам может не потребоваться перезапускать ваше приложение (модули).Если вы не используете карту конфигурации, каждый раз, когда вы обновляете значение, ваше приложение (или модуль) будет воссоздано.

Это действительно добавляет немного дополнительной сложности, хотя может быть большой элемент предпочтениякогда использовать ConfigMap.Так как ваши ключи ConfigMap являются именами переменных среды

Вы можете использовать envForm для простого развертывания, как показано здесь

0 голосов
/ 06 декабря 2018

Как вы указали, вы можете повторно использовать ConfigMap, чтобы другие части вашей диаграммы могли легко повторно использовать те же самые переменные окружения .Насколько это полезно, может зависеть от того, сколько у вас переменных и в каком количестве мест они используются.

ConfigMap также доступен как объект в кластере, который могут использовать другие модули, включая те, которыене является частью вашей диаграммы.Это может означать, что на вашу конфигурационную карту ссылаются другие приложения, установленные в том же кластере, или это может означать, что вы решите опубликовать свою диаграмму, а затем она может быть упакована как зависимость в другую диаграмму.Если ваша диаграмма будет использоваться в качестве зависимости в другой диаграмме, тогда для диаграммы, которая строится поверх вашей, будет немного проще / чище ссылаться на части вашей конфигурации из ConfigMap.Таким образом, полезность может также зависеть от того, как вы собираетесь использовать свой график. официальные диаграммы используют много ConfigMaps, но иногда они используют непосредственно переменные среды, и они используют ConfigMaps различными способами для различных целей .

...