На базе Лабораторной работы #2 выполнить деплой приложения в managed кластер k8s.
- Скопировать исходный код из ЛР #2 в проект.
- Развернуть руками свой Managed Kubernetes Cluster, настроить Ingress Controller (для публикации сервисов наружу можно использовать только Ingress).
- Собрать и опубликовать образы docker в Docker Registry.
- Описать манифесты для деплоя в виде helm charts, они должен быть универсальным для всех сервисов и отличаться лишь набором параметров запуска.
- В кластере k8s можно использовать один физический instance базы, но каждый сервис должен работать только со своей виртуальной базой данных. Задеплоить базу в кластер можно руками, либо использовать уже готовый helm chart.
- Код хранить на Github, для сборки использовать Github Actions.
- Для автоматических прогонов тестов в файле autograding.json
и classroom.yml заменить
<variant>
на ваш вариант. - В classroom.yml дописать шаги:
- сборка приложения;
- сборка и публикация образа docker (можно использовать
docker compose build
,docker compose push
); - деплой каждого сервиса в кластер k8s.
Т.к. развертывание полноценного кластера на виртуальным машинах очень сложный процесс, можно использовать Managed Kubernetes Cluster, т.е. готовый кластер k8s, предоставляемый сторонней платформой, например:
Платформ, которые предоставляют Kubernetes as a Service большое количество, вы можете сами исследовать рынок и выбрать другого провайдера услуг. Большинство провайдеров имеют бесплатный триальный период или денежный грант.
Для создания кластера достаточно 2-3 worker ноды 2Gb, 1CPU.
- При получении задания у вас создается fork этого репозитория для вашего пользователя.
- После того как все тесты успешно завершатся, в Github Classroom на Dashboard будет отмечено успешное выполнение тестов.
Распределение вариантов заданий аналогично ЛР #2.