/ui7-rsoi-lab4

Template repository for Homework #4 RSOI

Primary LanguageC#

Лабораторная работа #4

GitHub Classroom Workflow

Deploy to Cloud

Формулировка

На базе Лабораторной работы #2 выполнить деплой приложения в managed кластер k8s.

Требования

  1. Скопировать исходный код из ЛР #2 в проект.
  2. Развернуть руками свой Managed Kubernetes Cluster, настроить Ingress Controller (для публикации сервисов наружу можно использовать только Ingress).
  3. Собрать и опубликовать образы docker в Docker Registry.
  4. Описать манифесты для деплоя в виде helm charts, они должен быть универсальным для всех сервисов и отличаться лишь набором параметров запуска.
  5. В кластере k8s можно использовать один физический instance базы, но каждый сервис должен работать только со своей виртуальной базой данных. Задеплоить базу в кластер можно руками, либо использовать уже готовый helm chart.
  6. Код хранить на Github, для сборки использовать Github Actions.
  7. Для автоматических прогонов тестов в файле autograding.json и classroom.yml заменить <variant> на ваш вариант.
  8. В classroom.yml дописать шаги:
    1. сборка приложения;
    2. сборка и публикация образа docker (можно использовать docker compose build, docker compose push);
    3. деплой каждого сервиса в кластер k8s.

Пояснения

Т.к. развертывание полноценного кластера на виртуальным машинах очень сложный процесс, можно использовать Managed Kubernetes Cluster, т.е. готовый кластер k8s, предоставляемый сторонней платформой, например:

Платформ, которые предоставляют Kubernetes as a Service большое количество, вы можете сами исследовать рынок и выбрать другого провайдера услуг. Большинство провайдеров имеют бесплатный триальный период или денежный грант.

Для создания кластера достаточно 2-3 worker ноды 2Gb, 1CPU.

Прием задания

  1. При получении задания у вас создается fork этого репозитория для вашего пользователя.
  2. После того как все тесты успешно завершатся, в Github Classroom на Dashboard будет отмечено успешное выполнение тестов.

Варианты заданий

Распределение вариантов заданий аналогично ЛР #2.