Рубрики
Без рубрики

Микросервисы Java Spring Boot на AWS ECS для зарядки Вашего Kubernetes

пружинный ботинок

Автор оригинала: Sravan Cynixit.

В этом посте мы хотим глубже погрузиться в нашу реальную облачную архитектуру. Это означает, что мы поговорим о настройке учетных записей, конвейерах развертывания, настройке инфраструктуры (подумайте о ECS, Beanstalk, EKS и т. Д.) И обо всем вокруг.

Если вы хотите получить углубленные знания о Java Spring Boot, пожалуйста, перейдите по этой ссылке Тренировка с Весенней Загрузкой

Настройка учетной записи AWS

Мы развертываем каждую из наших сред (Live, QA, Dev и т. Д.) В отдельной учетной записи, Которые служат учетными записями участников для корневой учетной записи в организационной настройке, где в корневой учетной записи настроены только пользователи.

В учетных записях участников мы определяем роли , такие как разработчик, которые пользователи из корневой учетной записи могут выполнять в этих учетных записях участников. Роль разработчика имеет только необходимые разрешения, чтобы разработчики выполняли свою работу. Кроме того, у нас есть роль администратора. Это дает нам гибкость при добавлении пользователей только в корневую учетную запись, и то, что они могут делать, обрабатывается с помощью ролей в учетной записи участника — с помощью разрешений на уровне ролей.

В дополнение к ролям все наши приложения развернуты в этих учетных записях участников. Вот где происходит действие.

Все приложения развертываются и управляются ECS, и мы могли бы просто создать отдельный кластер ECS для каждой среды и работать только в одной учетной записи, но всегда есть дополнительные вещи, которые могут мешать друг другу без вашего ведома. В начале вашего облачного путешествия Группы безопасности AWS – это своего рода волшебный ящик, который требует времени для понимания и анализа в случае сбоев. То же самое относится к Балансировщику нагрузки приложений и целевым группам. Поэтому мы хотели, чтобы все это было разделено во всех средах, и единственный реальный способ сделать это-использовать разные учетные записи.

ECS как инфраструктура хостинга

Когда вы думаете о размещении приложений, на AWS есть несколько вариантов:

  1. Кубернетес, управляемый EKS
  2. самоуправляемый Kubernetes, размещенный через Kops
  3. ЭКС
  4. Бобовый стебель
  5. простые экземпляры EC2

У всех них есть свои плюсы и минусы для определенных сценариев. Мы решили пойти по маршруту ECS. Причинами для нас была простота, которую ECS предлагает к столу. Концепции очень близки к докеру. ECS даже работает на докере. EKS с точки зрения функциональности очень богат, но также самоуверен. Он привносит свои собственные концепции и реализации, и как пользователь вы должны их понимать. Это было слишком много для нас в сценарии миграции, чтобы пережевывать это сверху. Для этого вам нужно Онлайн-Тренинг по Весенней Загрузке

Наш самоуверенный и, безусловно, неполный взгляд на Kubernetes и ECS заключается в следующем.

Наш самоуверенный и, безусловно, неполный взгляд на Kubernetes и ECS заключается в следующем.

Инфраструктура ECS и AWS

После всех этих разговоров давайте погрузимся в то, как это на самом деле выглядит для нас. Все наши экземпляры EC2, которые мы используем для наших приложений, работают в частной подсети. Мы работаем в одном регионе с несколькими зонами доступности (AZs). Все приложения всегда развертываются в нескольких AZS. Связь с внешним миром осуществляется через шлюз NAT и интернет-шлюз, которые оба находятся в Общедоступной подсети.

Связь с внешним миром осуществляется через шлюз NAT и интернет-шлюз, которые оба находятся в Общедоступной подсети.

Реестр служб, Обнаружение и балансировка нагрузки

Существует связь между службами. Проблема в таком сценарии заключается в том, что вызывающей службе необходимо знать физический адрес (IP + порт) принимающей службы во время выполнения. Учитывая, что экземпляры службы приходят и уходят, а вместе с ними и ее физические адреса, рекомендуется вывести обнаружение и разрешение службы на внешний уровень. Каждая служба ECS имеет определенную запись DNS в маршруте 53, которая указывает на определенный маршрут в нашем внутреннем балансировщике нагрузки приложений (ALB). Маршрут 53 разрешает DNS балансировщика нагрузки приложения. ALB балансирует нагрузку между различными экземплярами одной и той же службы.

Эта настройка дает нам возможность просто использовать имя службы исправления в шаблоне Spring RestTemplate, которое одинаково в разных средах. Когда экземпляр службы ECS умирает, этот экземпляр автоматически удаляется из целевой группы ЛАБОРАТОРИИ и наоборот при создании.

Инфраструктура как код

Вся инфраструктура написана в облачном формате для всех учетных записей и, следовательно, сред. Каждое изменение любого фрагмента должно быть написано по сценарию, код должен быть проверен с помощью запросов на извлечение и успешно запущен в конвейере развертывания. Звучит утомительно и долго, на самом деле все наоборот.

Инфраструктура-это не монолит. Существуют сквозные компоненты, такие как VPC и Ass, но есть также части инфраструктуры, специфичные для приложений, в названии службы ECS, записи Route53 и маршруты прослушивателей ALB. Мы разделились на общие и специфические для конкретного приложения части. Общая инфраструктура находится в собственном репозитории git и имеет выделенный конвейер для ее развертывания. Каждое приложение имеет специфичный для приложения стек CloudFormation, который развертывается во время развертывания приложения. Обычно мы развертываем изменение инфраструктуры перед развертыванием приложения, которое может полагаться на эту инфраструктуру. Совет профессионала: внесите небольшие изменения в инфраструктуру с помощью формирования облака. Большие перемены занимают много времени.

В будущем мы извлекем роли и разрешения в собственный репозиторий git, чтобы развернуть его изолированно. Мы столкнулись с несколькими проблемами, из-за которых мы не смогли успешно выполнить откат после неудачного развертывания инфраструктуры, потому что разрешения были удалены до того, как компоненты инфраструктуры были удалены снова, и мы оказались в тупике.

Несколько слов о выбросах углерода

Центры обработки данных занимают большую долю в мировом потреблении энергии — в настоящее время 2% мировой электроэнергии. Это ставит центры обработки данных на текущий уровень энергопотребления авиационной промышленности и, по прогнозам, к 2024 году превысит авиацию в 4-5 раз. Поэтому сравнение различных поставщиков облачных услуг должно также включать их выбросы углерода. Для AWS это зависит от региона, в котором вы работаете. Мы работаем в 100% устойчивом регионе Франкфурт. Читайте дальше, чтобы узнать больше Весенний Курс безопасности

Оригинал: “https://www.codementor.io/@sravancynixit/spring-boot-java-microservices-on-aws-ecs-to-charge-your-kubernetes-15b52nsatk”