Облачная платформаAdvanced

Настройка переменных среды

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

Переменные среды контейнера (например, DB_HOST=db.example.com) являются параметрами конфигурации, динамически передаваемыми во время работы контейнера. Они позволяют гибко настраивать поведение и параметры приложения без пересборки образа. Они предоставляют:

  • Динамическая конфигурация приложения: Вы можете внедрять разные значения переменных (например, DB_HOST=prod.db.com или DB_HOST=test.db.com), чтобы изменять поведение приложения без пересборки образа. Даже если контейнер перезапускается из‑за планирования, информация конфигурации остаётся действительной, включая данные о подключении к базе данных, конечные точки API и переключатели функций.
  • Конфигурация изоляции среды: Один и тот же образ используется с разными переменными среды для адаптации к средам разработки, тестирования и производства. Например, ENV_MODE=production включает конфигурацию производственной среды.
  • Управление безопасностью конфиденциальных данных: Конфиденциальные данные, такие как пароли и ключи, передаются безопасно с использованием механизмов, например, secrets. Конфиденциальные данные не захардкожены в образе или коде.

Вы можете изменять переменные среды даже после развертывания рабочих нагрузок, повышая гибкость их конфигурации. Настройка переменных среды в CCE имеет ту же функцию, что и указание ENV в Dockerfile. Для получения дополнительной информации см. Defining Environment Variables for a Container.

Добавление переменных среды в консоли

Прежде чем использовать ConfigMap или secret в качестве переменной среды, убедитесь, что ConfigMap и secret созданы в кластере. Подробности о том, как создать ConfigMap и secret, см. Creating a ConfigMap и Creating a Secret.

  1. Войдите в CCE console.
  2. Click the cluster name to go to the cluster console, choose Workloads in the navigation pane, and click Create Workload in the upper right corner.
  3. В Container Information (Container Settings > Container Information) выберите Environment Variables.
  4. Настройте переменные среды по необходимости. Кластеры CCE поддерживают несколько типов переменных среды. Подробности см. в Table 1.

    • To add environment variables one by one, click Add Variable and set Type, Variable Name, and Variable Value/Reference.
    • To add environment variables in batches, click Batch Edit Custom Variables. Then, in the displayed dialog box, enter environment variables in the format of "Variable name=Variable value or variable reference".

    Figure 1 Настройка переменных среды


    Таблица 1Переменные среды

    Параметр

    Описание

    Тип

    Тип переменной среды. Варианты следующие:

    • Custom: Введите имя и значение переменной среды.
    • Added from ConfigMap: Импортировать все ключ‑значения в ConfigMap в виде переменных среды.

      Как показано на Figure 1, все ключ‑значения в configmap-example импортируются в виде переменных среды.

    • Added from ConfigMap key: Импортировать значение ключа из ConfigMap в качестве значения переменной среды.

      Как показано на Figure 1, значение configmap_key в configmap-example импортируется в качестве значения переменной среды. Если значение configmap_key равно configmap_value, то значение key1 будет configmap_value.

    • Added from secret: Импортировать все ключ‑значения в secret в виде переменных среды.

      Как показано на Figure 1, все ключ‑значения в secret-example импортируются в виде переменных среды.

    • Added from secret key: Импортировать значение ключа в secret в качестве значения переменной среды.

      Как показано на Figure 1, значение secret_key в secret-example импортируется в качестве переменной среды. Если значение secret_key равно secret_value, то значение key2 будет secret_value.

    • Variable Value/Reference: Использовать поле, определённое pod, в качестве значения переменной среды.

      Как показано в Figure 1, имя pod импортируется как значение key3.

    • Resource Reference: Значение Request или Limit, определённое контейнером, используется как значение переменной среды.

      Как показано в Figure 1, ограничение CPU для container-1 импортируется как значение key4.

    Variable Name

    Имя переменной среды, установленной в контейнере.

    Variable Value/Reference

    Значение переменной среды или значение переменной среды, полученное из других источников.

  5. Настройте другие параметры и нажмите Create Workload в правом нижнем углу. Через некоторое время статус рабочей нагрузки меняется на Running.

Добавление переменных среды с помощью kubectl

Предположим, что ConfigMap и secret уже доступны в кластере. Подробности о том, как их создать, см. Creating a ConfigMap и Creating a Secret.

  1. Используйте kubectl для доступа к кластеру. Подробности см. в Accessing a Cluster Using kubectl.
  2. Проверьте ConfigMap в кластере. В этом примере ConfigMap называется configmap-example.

    kubectl get configmap configmap-example -oyaml

    Вывод команды:

    apiVersion: v1
    data:
    configmap_key: configmap_value
    kind: ConfigMap
    ...

  3. Проверьте secret в кластере. В этом примере secret называется secret-example.

    kubectl get secret secret-example -oyaml

    Вывод команды:

    apiVersion: v1
    data:
    secret_key: c2VjcmV0X3ZhbHVl # c2VjcmV0X3ZhbHVl is the value of secret_value in Base64 mode.
    kind: Secret
    ...

  4. Создайте файл с именем nginx-deployment.yaml. nginx-deployment.yaml — пример имени файла, и вы можете переименовать его по необходимости.

    vi nginx-deployment.yaml

    Настройте переменные среды в 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 # 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-example
    key: configmap_key
    - name: key2 # Import the value of a key in the secret as the value of an environment variable.
    valueFrom:
    secretKeyRef:
    name: secret-example
    key: secret_key
    - name: key3 # Use the field defined by the pod as the value of an environment variable.
    valueFrom:
    fieldRef:
    apiVersion: v1
    fieldPath: 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: container1
    resource: limits.cpu
    divisor: 1
    envFrom:
    - 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-example
    imagePullSecrets:
    - name: default-secret

  5. Создайте Deployment.

    kubectl create -f nginx-deployment.yaml

    Если отображается информация, аналогичная следующей, рабочая нагрузка создаётся:

    deployment.apps/env-example created

  6. Проверьте имя pod.

    kubectl get pod

    Вывод команды:

    NAME READY STATUS RESTARTS AGE
    env-example-695b759569-lx9jp 1/1 Running 0 17m

  7. Просмотрите переменные среды в pod.

    kubectl exec env-example-695b759569-lx9jp -- printenv

    Если отображается информация, аналогичная следующей, переменные среды успешно настроены:

    / # env
    key=value # Custom environment variable
    key1=configmap_value # Added from a ConfigMap key
    key2=secret_value # Added from a 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 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.

Настройка переменных среды — документация Cloud Container Engine руководство пользователя облако Cloud.ru