Деплой микросервисов в Kubernetes. Helm
Программа
Вводная часть
Этот курс является логическим продолжением курса CloudJava, в котором мы
разработали бэкенд для сервиса заказов еды на вынос на микросервисной архитектуре.
Теперь нам предстоит развернуть написанные сервисы в одной из наиболее популярных систем управления
контейнерами - Kubernetes.
План занятий
- В первом уроке мы познакомимся с тем, что такое Kubernetes, из каких элементов он состоит и как они взаимодействуют между собой. Узнаем основные абстракции Kubernetes, с помощью которых происходит управление контейнерами. Установим поддерживаемую k8s-коммьюнити утилиту Minikube, которая позволяет развернуть кластер Kubernetes на локальном хосте. Научимся пользоваться утилитой kubectl для управления абстракциями кластера, запустим свои первые Pod, ReplicaSet, Deployment и другие абстракции.
- Во втором уроке мы узнаем про такие сетевые абстракции Kubernetes, как Service и Ingress, а также про хранение конфигураций с помощью ConfigMap и Secret, какие задачи они решают и как их наличие изменит архитектуру наших микросервисов.
- В третьем уроке мы проведем рефакторинг написанных ранее микросервисов, чтобы подготовить их к развертыванию в Kubernetes, а также доработаем пайплайн Github Actions, чтобы при коммите в определенную ветку происходила сборка образа микросервиса и сохранение его в Github-репозитории.
- В четвертом уроке мы подготовим манифесты для запуска инфраструктурных компонентов нашей системы микросервисов в Kubernetes. Тут стоит оговориться, что основная задача курса - научить разработчиков готовить именно микросервисы к запуску в кластере, а не разворачивать инфраструктуру, так как это в основном задача DevOps команды. Поэтому база данных Postgres, брокер сообщений Apache Kafka, инструменты мониторинга, сбора метрик и логов и другие периферийные системы будут развернуты не в production-ready, а в необходимой для обеспечения работы сервисов конфигурации. Более того, системы, предназначенные для персистентного хранения данных, не рекомендуется разворачивать в Kubernetes. Хотя это и возможно сделать (подробнее в уроке), вместо этого для них, как правило, используют отдельные сервера.
- В пятом уроке мы подготовим манифесты для запуска микросервисов в Kubernetes. При этом постараемся учесть лучшие практики, такие как ограничение потребляемых контейнерами ресурсов, пробы готовности контейнера к работе (readinessProbe) и его жизнеспособности (livenessProbe), обеспечение безопасности контейнера через ограничение полномочий и другие. Мы запустим инфраструктуру и сервисы и протестируем их работоспособность.
- В шестом уроке мы познакомимся с пакетным менеджером Kubernetes - Helm, упрощающим развертывание, управление и обновление приложений в кластере.
- В седьмом уроке мы подготовим и развернем в кластере Helm-чарты для запуска инфраструктурных компонентов.
- Наконец, в последнем восьмом уроке мы подготовим и развернем в кластере Helm-чарты микросервисов.