Рефакторинг микросервисов

В этом уроке мы подготовим наши микросервисы к развертыванию в Kubernetes, а именно, мы откажемся от Netflix Eureka Service Discovery, так как Kubernetes предоставляет этот функционал, что называется, "из коробки", также мы уберем зависимость Spring Cloud Config Server, так как приложения будут получать конфигурации из ConfigMap и Secret. Помимо этого, нам предстоит усовершенствовать пайплайн GitHub Actions, чтобы при каждом push или pull request в ветку k8s происходила сборка Docker-образа проекта, а также его публикация в ваш приватный репозиторий в GitHub, в котором, помимо кода, вы можете хранить Docker-образы (GitHub Packages documentation).

Доступ после оплаты курса


Обновление версии Spring Boot до 3.5.10

Так как в раннерах Github Actions обновилась версия Docker, нам необходимо поднять версию Spring Boot до 3.5.10, чтобы сборка образа в пайплайне CI проходила успешно.
В ветке k8s в каждом микросервисе примените патч 3_spring_boot_version.patch

Обновления минимальные:
  1. Поднимаем версию Spring Boot
  2. Дорабатываем пайплайн CI, чтобы название образа было с маленькой буквы в случае, если в названии вашего репозитория есть заглавные буквы
  3. В обработчике ошибок отказываемся от использования Deprecated методов
  4. Добавляем беспрепятственный доступ к эндпоинтам актуатора
  5. В gateway-service меняем настройки роутов - используем рекомендованный путь для новой версии Spring Boot
  6. Также в gateway-service добавляем настройку server.forward-headers-strategy = none, чтобы заголовки X-Forwarded-*, если они каким-то образом будут в запросах на gateway-service, не меняли роуты. Подробнее об этом можно почитать в spring-cloud-gateway issue.

Заключение

В этом небольшом уроке мы провели необходимый рефакторинг микросервисов, а также настроили пайплайн GitHub Actions для сборки и публикации Docker-образов приложений в репозиторий GitHub. В следующем уроке будет много практики - мы развернем все инфраструктурные компоненты системы микросервисов в Kubernetes, в процессе познакомимся с такими абстракциями, как StatefulSet, ServiceAccount, PersistenceVolume, PersistenceVolumeClaim, ClusterRole и ClusterRoleBinding.
Занятие 4: Подготовка инфраструктуры к запуску в Kubernetes