0Pricing
DevOps Bootcamp · Урок

ConfigMaps для конфигурации

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

«ConfigMaps для конфигурации» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Введение в ConfigMaps

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

Жестко заданные непосредственно в образах контейнеров данные делают образы негибкими и усложняют их обновление.

ConfigMaps позволяют вынести и централизовать некритичные настройки приложения, сохраняя гибкость образов.

Что такое ConfigMap?

ConfigMap — это объект Kubernetes, предназначенный для хранения некритичных данных в виде пар «ключ–значение».

Представьте его как единое хранилище настроек приложения, доступное вашим подам.

  • Отделение конфигурации: конфигурация отделяется от кода приложения.
  • Гибкость: настройки можно легко изменять без пересборки образов.
  • Переносимость: приложение можно перемещать между средами с разными конфигурациями.

Создание ConfigMaps: императивный способ

Быстро создать ConfigMap можно непосредственно из командной строки с помощью kubectl create configmap.

Этот способ хорошо подходит для простых разовых конфигураций или быстрой проверки.

Создадим ConfigMap с именем my-app-config и параметром уровня журналирования.

kubectl create configmap my-app-config \
  --from-literal=log_level=INFO

Проверка ConfigMap

После создания ConfigMap можно просмотреть его сведения и проверить содержимое.

Используйте kubectl get с флагом -o yaml, чтобы увидеть полное определение YAML, включая хранящиеся в нем данные.

kubectl get configmap my-app-config -o yaml

Декларативный ConfigMap (YAML)

Для производственной среды и контроля версий стандартной практикой является определение ConfigMaps с помощью манифестов YAML.

Такой подход делает конфигурации воспроизводимыми и упрощает их совместное управление с кодом приложения.

Ниже приведен пример YAML для конфигурации игры:

apiVersion: v1
kind: ConfigMap
metadata:
  name: game-config
data:
  game.properties: |
    level=easy
    player_limit=10
  ui.properties: |
    theme=dark
    language=en

Применение ConfigMap из YAML

Чтобы создать ConfigMap game-config, сохраните содержимое YAML из предыдущей сцены в файл (например, game-config.yaml).

Затем используйте kubectl apply -f, чтобы развернуть его в кластере.

# Save the YAML to game-config.yaml
kubectl apply -f game-config.yaml
kubectl get configmap game-config -o yaml

ConfigMaps как переменные окружения

Один из распространенных способов передать данные ConfigMap поду — внедрить их в виде переменных окружения.

Можно указать отдельные ключи для передачи или использовать envFrom, чтобы передать все пары «ключ–значение» из ConfigMap.

Это особенно удобно для простых настроек приложения.

apiVersion: v1
kind: Pod
metadata:
  name: my-env-pod
spec:
  containers:
  - name: my-container
    image: busybox
    command: ["sh", "-c", "echo Log Level: $LOG_LEVEL && sleep 3600"]
    env:
    - name: LOG_LEVEL
      valueFrom:
        configMapKeyRef:
          name: my-app-config
          key: log_level

Демонстрация: под с конфигурацией окружения

Запустим определение пода и посмотрим, как работает переменная окружения LOG_LEVEL.

Сохраните YAML пода в файл env-pod.yaml, примените его, а затем проверьте журналы пода.

# Save Pod YAML to env-pod.yaml
kubectl apply -f env-pod.yaml
kubectl logs my-env-pod

# Clean up
kubeclt delete pod my-env-pod

ConfigMaps как подключаемые тома

Для приложений, ожидающих конфигурационные файлы (например, nginx.conf, application.properties), ConfigMap можно подключить как том.

Каждая пара «ключ–значение» в ConfigMap становится файлом внутри указанного пути монтирования в контейнере.

apiVersion: v1
kind: Pod
metadata:
  name: my-volume-pod
spec:
  containers:
  - name: my-container
    image: busybox
    command: ["sh", "-c", "echo 'Contents of game.properties:' && cat /etc/config/game.properties && sleep 3600"]
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
  - name: config-volume
    configMap:
      name: game-config

Демонстрация: под с подключенной конфигурацией

Теперь развернем под, который подключает ConfigMap game-config как том.

Сохраните YAML пода в файл volume-pod.yaml, примените его и проверьте журналы, чтобы увидеть содержимое подключенного файла.

# Save Pod YAML to volume-pod.yaml
kubectl apply -f volume-pod.yaml
kubectl logs my-volume-pod

# Clean up
kubeclt delete pod my-volume-pod

Быстрая проверка: ConfigMaps

Какое из следующих утверждений о ConfigMaps Kubernetes верно?

Итоги: ConfigMaps

Отличная работа! Вы узнали, как ConfigMaps помогают управлять конфигурацией в Kubernetes:

  • Назначение: хранение некритичных данных конфигурации в виде пар «ключ–значение».
  • Создание: императивным способом с помощью kubectl create или декларативным способом с помощью YAML.
  • Использование: в виде переменных окружения или подключенных файлов внутри подов.
  • Преимущество: отделение конфигурации от кода приложения, повышающее гибкость.

Далее мы рассмотрим безопасную работу с конфиденциальной информацией с помощью Secrets Kubernetes!

Часто задаваемые вопросы

Урок «ConfigMaps для конфигурации» бесплатный?

Да — полный текст урока «ConfigMaps для конфигурации» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «ConfigMaps для конфигурации»?

Вынесите конфигурацию приложения за пределы образов контейнеров с помощью ConfigMaps. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «ConfigMaps для конфигурации»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. ConfigMaps для конфигурации
  2. Секреты для конфиденциальных данных
  3. Постоянные тома и заявки
  4. StorageClasses и динамическое выделение
← Назад к DevOps Bootcamp