← До фільтрів та технологій

← До списку лабораторних по Kubernetes

Kubernetes Лабораторна 64: Init контейнер для міграцій бази даних

Технологія: Kubernetes

Номер лабораторної: 64 · Рівень: middle

Тема: Init контейнер для міграцій бази даних

Повний опис / сценарій лабораторної:

Мета: налаштувати init контейнер який виконує міграції бази перед запуском основного додатка.



Крок 1. Підготувати базу даних у кластері.

Пояснення: це може бути зовнішній сервіс або statefulset з postgres.



Крок 2. Створити configmap з sql файлом або командою міграцій.

Пояснення: зручно зберігати скрипт міграцій у configmap.



Крок 3. Написати init контейнер який підключається до бази.

Опис: образ з cli бази наприклад psql який виконує sql з configmap.



Крок 4. Задати env для доступу до бази.

Пояснення: host, port, user і назву бази можна передати через secret.



Крок 5. Додати init контейнер до deployment веб сервісу.

Пояснення: основний контейнер маєзапускатися тільки після успішної міграції.



Крок 6. Застосувати deployment.

Команда: kubectl apply -f web-with-migrate.yaml

Пояснення: перевір статус pod і логи init контейнера.



Крок 7. Зімітувати помилку міграції.

Пояснення: змінити sql так щоб він містив синтаксичну помилку.



Крок 8. Повторити створення pod.

Пояснення: pod залишиться у стані Init або Error доки міграція не буде виправлена.



Крок 9. Виправити sql і перезапустити pod.

Команда: kubectl delete pod <pod-name>

Пояснення: новий pod пройде міграцію і запустить веб сервіс.



Крок 10. Міні звіт.

Завдання: опиши переваги init міграцій порівняно з вручну запущеними скриптами перед релізом.