Переменные окружения контейнера (например, DB_HOST=db.example.com) являются параметрами конфигурации, динамически передаваемыми при работе контейнера. Они позволяют гибко настраивать поведение приложений и параметры без пересборки образа. Они предоставляют:
Вы можете изменять переменные окружения даже после развертывания рабочих нагрузок, повышая гибкость конфигурации нагрузки. Настройка переменных окружения в CCE имеет ту же функцию, что и указание ENV в Dockerfile. Для получения дополнительной информации смотрите Определение переменных окружения для контейнера.
Прежде чем использовать ConfigMap или secret в качестве переменной окружения, убедитесь, что ConfigMap и secret созданы в кластере. Подробную информацию о том, как создать ConfigMap и secret, смотрите Создание ConfigMap и Создание Secret.
Figure 1 Настройка переменных среды

Параметр | Описание |
|---|---|
Тип | Тип переменной окружения. Параметры перечислены ниже:
|
Имя переменной | Имя переменной окружения, установленной в контейнере. |
Значение/Ссылка переменной | Значение переменной окружения или значение переменной окружения, полученное из других источников. |
Предположим, что ConfigMap и secret уже доступны в кластере. Подробности о том, как их создать, см Создание ConfigMap и Создание Secret.
kubectl get configmap configmap-example -oyaml
Отображается информация, аналогичная следующей:
apiVersion: v1data:configmap_key: configmap_valuekind: ConfigMap...
kubectl get secret secret-example -oyaml
Отображается информация, аналогичная следующей:
apiVersion: v1data:secret_key: c2VjcmV0X3ZhbHVl # c2VjcmV0X3ZhbHVl is the value of secret_value in Base64 mode.kind: Secret...
vi nginx-deployment.yaml
Настройте переменные среды в YAML‑файле рабочей нагрузки. Ниже приведён пример:
apiVersion: apps/v1kind: Deploymentmetadata:name: env-examplenamespace: defaultspec:replicas: 1selector:matchLabels:app: env-exampletemplate:metadata:labels:app: env-examplespec:containers:- name: container-1image: nginx:alpineimagePullPolicy: Alwaysresources:requests:cpu: 250mmemory: 512Milimits:cpu: 250mmemory: 512Mienv:- name: key # Define the environment variable name and value.value: value- name: key1 # Import the value of a key in the ConfigMap as the value of an environment variable.valueFrom:configMapKeyRef:name: configmap-examplekey: configmap_key- name: key2 # Import the value of a key in the secret as the value of an environment variable.valueFrom:secretKeyRef:name: secret-examplekey: secret_key- name: key3 # Use the field defined by the pod as the value of an environment variable.valueFrom:fieldRef:apiVersion: v1fieldPath: metadata.name- name: key4 # Use the value of the resource request or limit defined in the container as the value of an environment variable.valueFrom:resourceFieldRef:containerName: container1resource: limits.cpudivisor: 1envFrom:- configMapRef: # Import all key values in a ConfigMap as environment variables.name: configmap-example- secretRef: # Import all key values in a secret as environment variables.name: secret-exampleimagePullSecrets:- name: default-secret
kubectl create -f nginx-deployment.yaml
Если отображается информация, аналогичная следующей, рабочая нагрузка создаётся:
deployment.apps/env-example created
kubectl get pod
Отображается информация, аналогичная следующей:
NAME READY STATUS RESTARTS AGEenv-example-695b759569-lx9jp 1/1 Running 0 17m
kubectl exec env-example-695b759569-lx9jp -- printenv
Если отображается информация, аналогичная следующей, переменные среды успешно настроены:
/ # envkey=value # Custom environment variablekey1=configmap_value # Added from a ConfigMap keykey2=secret_value # Added from a secret keykey3=env-example-695b759569-lx9jp # metadata.name defined by the podkey4=1 # limits.cpu defined by container1. The value is rounded up, in unit of cores.configmap_key=configmap_value # Added from a ConfigMap. The key value in the original ConfigMap key is imported.secret_key=secret_value # Added from a secret. The key value in the original secret is imported.