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 yamlConfigMaps как переменные окружения
Один из распространенных способов передать данные 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-podConfigMaps как подключаемые тома
Для приложений, ожидающих конфигурационные файлы (например, 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 — локальная установка не требуется.
Все уроки этого курса
- ConfigMaps для конфигурации
- Секреты для конфиденциальных данных
- Постоянные тома и заявки
- StorageClasses и динамическое выделение