← До списку лабораторних по Kubernetes
Повний опис / сценарій лабораторної:
Мета: налаштувати 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 міграцій порівняно з вручну запущеними скриптами перед релізом.