Настройка приложений с использованием ConfigMap

KubernetesBeginner
Практиковаться сейчас

Введение

В этом практическом занятии (lab) вы узнаете, как использовать ConfigMaps в Kubernetes для настройки своих приложений. ConfigMaps предоставляют способ отделить конфигурационные данные от кода вашего приложения, что позволяет легко управлять и обновлять конфигурацию приложения без изменения самого приложения.

Запустите кластер Minikube

Перед созданием ресурсов вам нужен работающий кластер Kubernetes. Minikube - это легковесная среда Kubernetes, которая запускается на вашем локальном компьютере.

  1. Перейдите в рабочую директорию:

    Откройте терминал и перейдите в папку проекта по умолчанию:

    cd /home/labex/project
    
  2. Запустите Minikube:

    Запустите Minikube для инициализации кластера Kubernetes:

    minikube start
    
    • Эта команда настраивает однодневный кластер Kubernetes на вашем локальном компьютере.
    • В зависимости от производительности вашей системы Minikube может потребовать несколько минут для запуска.
  3. Проверьте, что 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 в своем приложении и обновили его, чтобы увидеть, как это влияет на приложение. Вы также узнали, как проверить, что конфигурация была применена к вашему приложению, и как очистить ресурсы, созданные в рамках этого практического занятия.