Advanced
Тема интерфейса
Cloud Container Engine

Настройка переменных окружения

Эта статья полезна?
Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Сценарий

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

Функция установки переменных окружения в CCE такая же, как и указание ENV в Dockerfile.

Notice

После запуска контейнера не изменяйте конфигурации в контейнере. Если конфигурации в контейнере изменяются (например, пароли, сертификаты и переменные окружения контейнеризированного приложения добавляются в контейнер), они будут потеряны после перезапуска контейнера, и сервисы контейнера станут ненормальными. Пример сценария перезапуска контейнера — переназначение pod из‑за аномалий узла.

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

Переменные окружения могут устанавливаться в следующих режимах:

  • Пользовательский: Введите имя переменной окружения и значение параметра.
  • Добавлено из ConfigMap: Импортировать все ключ‑значения из ConfigMap в переменные окружения.
  • Добавлено из ключа ConfigMap: Импортировать значение ключа из ConfigMap в качестве значения переменной окружения. Как показано в Рисунок 1, если вы импортируете configmap_value из configmap_key в configmap-example в качестве значения переменной окружения key1, переменная окружения с именем key1 значением которой configmap_value доступна в контейнере.
  • Добавлено из secret: Импортировать все ключ‑значения из secret в переменные окружения.
  • Добавлено из ключа secret: Импортировать значение ключа из secret в качестве значения переменной окружения. Как показано в Рисунок 1, если вы импортируете secret_value из secret_key в secret-example в качестве значения переменной окружения key2, переменная окружения с именем key2 значением которой secret_value доступна в контейнере.
  • Значение/ссылка переменной: Использовать поле, определённое pod, в качестве значения переменной окружения. Как показано в Рисунок 1, если имя pod импортировано в качестве значения переменной окружения key3, переменная окружения с именем key3 значение которой — имя pod — доступно в контейнере.
  • Ссылка на ресурс: Значение Request или Limit определяемое контейнером используется в качестве значения переменной окружения. Как показано в Рисунок 1, если вы импортируете лимит CPU контейнера-1 в качестве значения переменной окружения key4, переменная окружения с именем key4 значением которой является лимит CPU контейнера-1, доступна в контейнере.

Добавление переменных окружения

  1. Войдите в консоль CCE.
  2. Нажмите имя кластера, чтобы перейти в консоль кластера, выберите Рабочие нагрузки в навигационной панели и нажмите Создать рабочую нагрузку в правом верхнем углу.
  3. При создании рабочей нагрузки измените информацию о контейнере в Настройки контейнера и нажмите Переменные окружения вкладке.
  4. Настройте переменные окружения.

    • Чтобы добавить переменные окружения по одной, нажмите Добавление переменной и настройте её параметры.
    • Чтобы добавить переменные окружения пакетно, нажмите Редактирование пользовательских переменных пакетно. Затем, в отображаемом диалоговом окне введите переменные окружения в формате "Имя переменной=Переменная или ссылка на переменную".

    Рисунок 1 Настройка переменных окружения


Пример YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: env-example
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: env-example
template:
metadata:
labels:
app: env-example
spec:
containers:
- name: container-1
image: nginx:alpine
imagePullPolicy: Always
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 250m
memory: 512Mi
env:
- name: key # Custom
value: value
- name: key1 # Added from ConfigMap key
valueFrom:
configMapKeyRef:
name: configmap-example
key: configmap_key
- name: key2 # Added from secret key
valueFrom:
secretKeyRef:
name: secret-example
key: secret_key
- name: key3 # Variable reference, which uses the field defined by a pod as the value of the environment variable.
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: key4 # Resource reference, which uses the field defined by a container as the value of the environment variable.
valueFrom:
resourceFieldRef:
containerName: container1
resource: limits.cpu
divisor: 1
envFrom:
- configMapRef: # Added from ConfigMap
name: configmap-example
- secretRef: # Added from secret
name: secret-example
imagePullSecrets:
- name: default-secret

Просмотр переменных окружения

Если содержимое configmap-example и secret-example следующее:

$ kubectl get configmap configmap-example -oyaml
apiVersion: v1
data:
configmap_key: configmap_value
kind: ConfigMap
...
$ kubectl get secret secret-example -oyaml
apiVersion: v1
data:
secret_key: c2VjcmV0X3ZhbHVl # c2VjcmV0X3ZhbHVl is the value of secret_value in Base64 mode.
kind: Secret
...

Переменные окружения в pod следующие:

$ kubectl get pod
NAME READY STATUS RESTARTS AGE
env-example-695b759569-lx9jp 1/1 Running 0 17m
$ kubectl exec env-example-695b759569-lx9jp -- printenv
/ # env
key=value # Custom environment variable
key1=configmap_value # Added from ConfigMap key
key2=secret_value # Added from secret key
key3=env-example-695b759569-lx9jp # metadata.name defined by the pod
key4=1 # limits.cpu defined by container1. The value is rounded up, in unit of cores.
configmap_key=configmap_value # Added from ConfigMap. The key value in the original ConfigMap key is directly imported.
secret_key=secret_value # Added from key. The key value in the original secret is directly imported.