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

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedDeploymentGroup(["Advanced Deployment"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/BasicCommandsGroup -.-> kubernetes/edit("Edit") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/AdvancedDeploymentGroup -.-> kubernetes/rollout("Rollout") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/exec("Exec") subgraph Lab Skills kubernetes/initialization -.-> lab-9689{{"Настройка приложений с использованием ConfigMap"}} kubernetes/get -.-> lab-9689{{"Настройка приложений с использованием ConfigMap"}} kubernetes/create -.-> lab-9689{{"Настройка приложений с использованием ConfigMap"}} kubernetes/edit -.-> lab-9689{{"Настройка приложений с использованием ConfigMap"}} kubernetes/apply -.-> lab-9689{{"Настройка приложений с использованием ConfigMap"}} kubernetes/rollout -.-> lab-9689{{"Настройка приложений с использованием ConfigMap"}} kubernetes/describe -.-> lab-9689{{"Настройка приложений с использованием ConfigMap"}} kubernetes/exec -.-> lab-9689{{"Настройка приложений с использованием ConfigMap"}} end

Запуск кластера 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 /bin/sh < pod-name > --

Замените <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 /bin/sh < pod-name > --

Замените <pod-name> именем пода, которое вы записали ранее.

После того как вы войдете в сеанс оболочки, выполните следующую команду, чтобы вывести значение переменной окружения DATABASE_URL:

echo $DATABASE_URL

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

kubectl rollout restart deployment my-app

После завершения перезапуска снова войдите в контейнер и используйте вышеуказанную команду для проверки конфигурации.

Вы должны увидеть обновленную строку подключения к базе данных.

Итог

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