Введение
В этом практическом занятии (lab) вы узнаете, как использовать ConfigMaps в Kubernetes для настройки своих приложений. ConfigMaps предоставляют способ отделить конфигурационные данные от кода вашего приложения, что позволяет легко управлять и обновлять конфигурацию приложения без изменения самого приложения.
Запустите кластер Minikube
Перед созданием ресурсов вам нужен работающий кластер Kubernetes. Minikube - это легковесная среда Kubernetes, которая запускается на вашем локальном компьютере.
Перейдите в рабочую директорию:
Откройте терминал и перейдите в папку проекта по умолчанию:
cd /home/labex/projectЗапустите Minikube:
Запустите Minikube для инициализации кластера Kubernetes:
minikube start- Эта команда настраивает однодневный кластер Kubernetes на вашем локальном компьютере.
- В зависимости от производительности вашей системы Minikube может потребовать несколько минут для запуска.
Проверьте, что Minikube запущен:
Проверьте статус кластера Minikube:
minikube status- Ищите компоненты, такие как
kubeletиapiserver, перечисленные какRunning(работающие). - Если кластер не запущен, запустите команду
minikube startснова.
- Ищите компоненты, такие как
Если у вас возникли проблемы при запуске Minikube, используйте minikube delete для сброса среды при необходимости.
Создание ConfigMap
На этом шаге вы создадите ConfigMap, содержащий конфигурационные данные для вашего приложения.
Создайте файл с именем configmap.yaml в директории /home/labex/project/ со следующим содержимым:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
DATABASE_URL: postgres://user:password@host:port/dbname
Этот ConfigMap содержит одну пару ключ-значение, где ключ - DATABASE_URL, а значение - строка подключения к базе данных PostgreSQL.
Для создания ConfigMap выполните следующую команду:
kubectl apply -f configmap.yaml
Использование ConfigMap в вашем приложении
На этом шаге вы будете использовать ConfigMap в своем приложении.
Создайте файл с именем deployment.yaml в директории /home/labex/project/ со следующим содержимым:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx:latest
env:
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: my-config
key: DATABASE_URL
В этом развертывании (deployment) указан один контейнер, запускающий ваше приложение, которое использует переменную окружения DATABASE_URL для подключения к базе данных PostgreSQL. Значение DATABASE_URL получается из ConfigMap с именем my-config.
Для создания развертывания выполните следующую команду:
kubectl apply -f deployment.yaml
Проверка конфигурации
На этом шаге вы убедитесь, что конфигурация была применена к вашему приложению.
Сначала найдите имя пода (pod), запускающего ваше приложение, выполнив следующую команду:
kubectl get pods -l app=my-app
Вы должны увидеть один под, запускающий ваше приложение. Запишите имя этого пода.
Затем выполните следующую команду, чтобы открыть сеанс оболочки (shell) в контейнере, запускающем ваше приложение:
kubectl exec -it pod-name -- /bin/sh
Замените <pod-name> именем пода, которое вы записали ранее.
После того как вы войдете в сеанс оболочки, выполните следующую команду, чтобы вывести значение переменной окружения DATABASE_URL:
echo $DATABASE_URL
Вы должны увидеть строку подключения к базе данных, которую вы установили в ConfigMap.
Обновление ConfigMap
На этом шаге вы обновите ConfigMap и увидите, как это повлияет на ваше приложение.
Обновите файл configmap.yaml, установив новое значение для ключа DATABASE_URL:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
DATABASE_URL: postgres://newuser:newpassword@newhost:newport/newdbname
Это обновляет ключ DATABASE_URL до нового значения.
Для обновления ConfigMap выполните следующую команду:
kubectl apply -f configmap.yaml
Проверка обновления
На этом шаге вы убедитесь, что обновление ConfigMap было применено к вашему приложению.
Сначала найдите имя пода (pod), запускающего ваше приложение, выполнив следующую команду:
kubectl get pods -l app=my-app
Вы должны увидеть один под, запускающий ваше приложение. Запишите имя этого пода.
Затем выполните следующую команду, чтобы открыть сеанс оболочки (shell) в контейнере, запускающем ваше приложение:
kubectl exec -it pod-name -- /bin/sh
Замените <pod-name> именем пода, которое вы записали ранее.
После того как вы войдете в сеанс оболочки, выполните следующую команду, чтобы вывести значение переменной окружения DATABASE_URL:
echo $DATABASE_URL
Вы увидите, что конфигурация не вступила в силу, данные по-прежнему те же. Вам нужно перезапустить Deployment с помощью следующей команды:
kubectl rollout restart deployment my-app
После завершения перезапуска снова войдите в контейнер и используйте вышеуказанную команду для проверки конфигурации.
Вы должны увидеть обновленную строку подключения к базе данных.
Резюме
В этом практическом занятии (lab) вы узнали, как использовать ConfigMap в Kubernetes для настройки своих приложений. Вы создали ConfigMap, содержащий конфигурационные данные, использовали этот ConfigMap в своем приложении и обновили его, чтобы увидеть, как это влияет на приложение. Вы также узнали, как проверить, что конфигурация была применена к вашему приложению, и как очистить ресурсы, созданные в рамках этого практического занятия.


