Выполнение домашнего задания по теме "13.1. контейнеры, поды, deployment, statefulset, services, endpoints"
Q/A
Настроив кластер, подготовьте приложение к запуску в нём. Приложение стандартное: бекенд, фронтенд, база данных.
Задание 1
Подготовить тестовый конфиг для запуска приложения.
Для начала следует подготовить запуск приложения в stage окружении с простыми настройками. Требования:
- pod содержит в себе 2 контейнера — фронтенд, бекенд;
- регулируется с помощью deployment фронтенд и бекенд;
- база данных — через statefulset.
Директория с проектом приложения: project.
В первую очередь необходимо собрать образы приложения и опубликовать их в registry,
который будет доступен из кластера. Например, hub.docker.com.
Для этой цели создан репозиторий dannecron/netology-devops-k8s-app
и собраны два тега: frontend-latest и backend-latest.
Итоговая конфигурация для деплоя приложения в кластер k8s будет выглядеть следующим образом: testing/deployment.yml. Здесь будет создано несколько сущностей, а именно:
ConfigMapдля хранения конфигурацииpostgresqlPersistentVolume- персистентное дисковое хранилище для базы данныхPersistentVolumeClaim- конфигурация для использования хранилища подамиStatefulSet- разворачивание базы данныхpostgresqlDeployment- разворачивание непосредственно приложения
Применение конфигурации:
kubectl apply -f testing/deployment.yml
После применения:
kubectl get pods
kubectl get pods
NAME READY STATUS RESTARTS AGE
testing-app-57d756f489-r6gw8 2/2 Running 0 4m13s
testing-db-0 1/1 Running 5 (6m20s ago) 7m53s
Задание 2
Подготовить конфиг для production окружения.
Следующим шагом будет запуск приложения в production окружении. Требования сложнее:
- каждый компонент (база, бекенд, фронтенд) запускаются в своем поде, регулируются отдельными deployment’ами;
- для связи используются service (у каждого компонента свой);
- в окружении фронта прописан адрес сервиса бекенда;
- в окружении бекенда прописан адрес сервиса базы данных.
Разделение на отдельные деплойменты будет выглядеть следующим образом:
- БД (production/database.yml) остаётся почти без изменений:
всё так же будут создаваться
ConfigMap,PersistentVolume,PersistentVolumeClaimи самStatefulSet - Для frontend (production/frontend.yml) и backend (production/backend.yml)
созданы собственные
deploymentиservice.
Как и в прошлом задании нужно применить данные конфигурации:
kubectl apply -f production/database.yml
kubectl apply -f production/backend.yml
kubectl apply -f production/frontend.yml
Затем нужно проверить, что все поды успешно запустились:
kubectl get pods
NAME READY STATUS RESTARTS AGE
prod-app-backend-784f995b5f-vvcr7 1/1 Running 0 84s
prod-app-frontend-947f64949-6vtn7 1/1 Running 0 30s
testing-db-0 1/1 Running 0 4m15s