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

Параметр | Описание |
|---|---|
Тип | Тип переменной среды. Возможные варианты:
|
Имя переменной | Имя переменной среды, установленной в контейнере. |
Значение переменной/Ссылка | Значение переменной среды или значение переменной среды, полученное из других источников. |
Предположим, что ConfigMap и secret уже доступны в кластере. Для подробностей о том, как их создать, см. Создание ConfigMap и Создание Secret.
kubectl get configmap configmap-example -oyaml
Вывод команды:
apiVersion: v1\ndata:\n configmap_key: configmap_value\nkind: ConfigMap\n...
kubectl get secret secret-example -oyaml
Вывод команды:
apiVersion: v1\ndata:\n secret_key: c2VjcmV0X3ZhbHVl # c2VjcmV0X3ZhbHVlc2VjcmV0X3ZhbHVl — значение secret_value в режиме Base64.\nkind: Secret\n...
vi nginx-deployment.yaml
Настройте переменные среды в YAML‑файле нагрузки. Ниже приведён пример:
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: env-example\n namespace: default\nspec:\n replicas: 1\n selector:\n matchLabels:\n app: env-example\n template:\n metadata:\n labels:\n app: env-example\n spec:\n containers:\n - name: container-1\n image: nginx:alpine\n imagePullPolicy: Always\n resources:\n requests:\n cpu: 250m\n memory: 512Mi\n limits:\n cpu: 250m\n memory: 512Mi\n env:\n - name: key # Define the environment variable name and value.\n value: value\n - name: key1 # Import the value of a key in the ConfigMap as the value of an environment variable.\n valueFrom:\n configMapKeyRef :\n name: configmap-example\n key: configmap_key\n - name: key2 # Import the value of a key in the secret as the value of an environment variable.\n valueFrom:\n secretKeyRef :\n name: secret-example\n key: secret_key\n - name: key3 # Use the field defined by the pod as the value of an environment variable.\n valueFrom:\n fieldRef :\n apiVersion: v1\n fieldPath: metadata.name\n - name: key4 # Use the value of the resource request or limit defined in the container as the value of an environment variable.\n valueFrom:\n resourceFieldRef :\n containerName: container1\n resource: limits.cpu\n divisor: 1\n envFrom:\n - configMapRef: # Import all key values in a ConfigMap as environment variables.\n name: configmap-example\n - secretRef: # Import all key values in a secret as environment variables.\n name: secret-example\n imagePullSecrets:\n - name: default-secret
kubectl create -f nginx-deployment.yaml
Если отображается информация, аналогичная следующей, нагрузка создаётся:
deployment.apps/env-example created
kubectl get pod
Вывод команды:
NAME READY STATUS RESTARTS AGE\nenv-example-695b759569-lx9jp 1/1 Running 0 17m
kubectl exec env-example-695b759569-lx9jp -- printenv
Если отображается информация, аналогичная следующей, переменные среды успешно настроены:
/ # env\nkey=value # Пользовательская переменная среды\nkey1=configmap_value # Добавлено из ключа ConfigMap\nkey2=secret_value # Добавлено из ключа secret\nkey3=env-example-695b759569-lx9jp # metadata.namemetadata.name определено pod\nkey4=1 # limits.cpulimits.cpu определено container1. Значение округляется вверх, в единицах ядер.\nconfigmap_key=configmap_value # Добавлено из ConfigMap. Значение ключа из оригинального ConfigMap импортировано.\nsecret_key=secret_value # Добавлено из secret. Значение ключа из оригинального secret импортировано.