Пошаговое руководство с примером проекта

AWS предоставляет более 100 сервисов, и очень важно знать, какой сервис выбрать для своих нужд. Amazon Elastic Kubernetes Service (Amazon EKS) - это управляемый сервис, который упрощает запуск Kubernetes на AWS без необходимости вставать или поддерживать свою собственную плоскость управления Kubernetes. Kubernetes - это система с открытым исходным кодом для автоматизации развертывания, масштабирования и управления контейнерными приложениями.

В этом посте мы собираемся развернуть приложение React в среде Java. Сначала мы докеризуем наше приложение, загружаем этот образ в Amazon ECR и запускаем это приложение на Amazon EKS.

  • Пример проекта
  • Предварительные требования
  • Dockerize проекта
  • Отправка образа Docker в ECR
  • Создание кластера и рабочих узлов
  • Настройте kubectl для использования кластера
  • Развертывание объектов Kubernetes в кластере AWS EKS
  • Резюме
  • Заключение

Пример проекта

Это простой проект, демонстрирующий разработку и запуск приложения React с Java. У нас есть простое приложение, в котором мы можем добавлять пользователей, подсчитывать и отображать их сбоку, а также извлекать их, когда захотите.

Если вы хотите попрактиковаться, вот ссылка на этот проект на Github. Вы также можете клонировать его и запускать на своем компьютере.

// clone the project
git clone https://github.com/bbachi/react-java-ecs.git
// change directory
cd react-java-ecs
// install
mvn clean install
// Run the app
java -jar target/users-0.0.2-SNAPSHOT.jar

Предпосылки

  • Если вы новичок в React, перейдите по приведенной ниже ссылке о том, как разработать и собрать проект React с бэкэндом Java.

Как разработать и создать приложение React с помощью Java Backend

  • Настройка учетной записи AWS: AWS предлагает уровень бесплатного пользования в течение одного года вот ссылка для его настройки.
  • После настройки у вас будет учетная запись root. Не рекомендуется использовать свою учетную запись root для выполнения каких-либо задач, вместо этого вам следует создать группу IAM с разрешениями на развертывание на Elastic Beanstalk, добавить в нее пользователя и войти в систему с этим пользователем.
  • Установить AWS CLI
  • Настройте интерфейс командной строки AWS для пользователя, которого вы только что создали. Вы должны использовать эту команду aws configure, и она запросит идентификатор ключа доступа и секретный ключ.

  • Вам необходимо установить Docker для рабочего стола (независимо от вашей ОС). Пожалуйста, перейдите по этой ссылке, чтобы установить Docker на свой ноутбук. После установки вы можете проверить информацию или версию Docker с помощью следующих команд.
docker info
docker --version

Dockerize проект

Amazon EKS - это управляемый сервис, который упрощает запуск Kubernetes на AWS. Первое, что вам нужно сделать, это докеризовать ваш проект.

нам нужно создать Dockerfile, который создает образ Docker. Вот файл, который начинается с команды FROM и базового образа openjdk: 8-jre-alpine. Скопируйте сгенерированный файл войны и, наконец, команду CMD, которая запускается при создании образа.

Вот Dockerfile, использующий openjdk в качестве базового образа.

Если вы хотите узнать весь процесс создания образа Docker для этого проекта, перейдите по ссылке ниже.

Докеризация приложения React с помощью Java Backend

Вот команды для создания образа и его запуска на движке Docker на вашем локальном компьютере.

// build the image
docker build -t react-java-image .
// running on Image
docker run -d -it -p  8080:8080 --name react-java-ui react-java-image
// list the images you just built
docker images
//list containers
docker ps

Отправка образа Docker в ECR

Amazon Elastic Container Registry (ECR) - это полностью управляемый реестр контейнеров Docker, который упрощает разработчикам хранение, управление и развертывание образов контейнеров Docker. Amazon ECR интегрирован с Amazon Elastic Container Service (ECS), что упрощает рабочий процесс от разработки до производственной среды.

Amazon EKS работает с любым реестром Docker, таким как Docker Hub и т. Д. Но в этом посте мы увидим, как мы можем использовать Amazon ECR для хранения наших образов Docker. После того, как вы настроите учетную запись Amazon и создадите пользователя IAM с доступом администратора, первое, что вам нужно, - создать репозиторий Docker.

Вы можете создать свой первый репозиторий либо с помощью консоли AWS, либо с помощью интерфейса командной строки AWS.

Консоль AWS

Создать репозиторий с помощью консоли AWS просто, и все, что вам нужно, это указать имя.

AWS CLI

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

aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.us-east-1.amazonaws.com

Пришло время создать репозиторий с помощью следующей команды

aws ecr create-repository \     
     --repository-name frontend/react-java\     
     --image-scanning-configuration scanOnPush=true \
     --image-tag-mutability IMMUTABLE     
     --region us-east-2

У вас будет такой же результат.

Добавление тегов к локальному образу Docker и отправка

Ранее вы создали образ Docker на своем локальном компьютере. Пришло время пометить это изображение с помощью этого URI репозитория на изображении выше.

docker tag react-java-image:latest 032840272187.dkr.ecr.us-east-2.amazonaws.com/frontend/react-java:v1

После того, как вы пометили изображение, пришло время отправить образ Docker в ваш репозиторий.

// list the images
docker images
// push the image
docker push 032840272187.dkr.ecr.us-east-2.amazonaws.com/frontend/angular-java:v1

Создание кластера и рабочих узлов

Начать работу с AWS EKS очень просто. Все, что вам нужно, - это сделать следующие шаги.

  • Нам нужно создать кластер AWS EKS с консолью AWS, SDK или AWS CLI.
  • Создайте группу рабочих узлов, которая регистрируется в кластере EKS.
  • Когда ваш кластер будет готов, вы можете настроить kubectl для связи с вашим кластером.
  • Развертывайте и управляйте своими приложениями в кластере

Создание кластера

Давайте создадим кластер, следуя этому руководству здесь. Убедитесь, что вы создали роль для EKS, чтобы Amazon EKS и плоскость управления Kubernetes могли управлять ресурсами AWS от вашего имени. Я создал роль под названием eks_role

Перейдите в консоль EKS и настройте кластер, как показано ниже. Я использовал kubernetes версии 1.17, и вы можете проверить роль службы кластеров.

Для создания кластера требуется некоторое время, и после создания он должен перейти в активное состояние.

Создать рабочие узлы

Пришло время создать узлы, и прежде чем вы это сделаете, мы должны создать эту роль под названием NodeInstanceRole. Следуйте этому руководству, чтобы создать его.

Следуйте этому руководству, чтобы создать группу узлов после создания роли. Создание группы узлов занимает некоторое время. После завершения вы увидите статику как Активно.

Настройте kubectl для использования кластера

aws eks --region region-code update-kubeconfig --name cluster_name

Вы можете проверить эти команды.

// get the service
kubectl get svc
// get the current context
kubectl config current-context

Развертывание объектов Kubernetes в кластере AWS EKS

Теперь мы настроили kubectl для использования AWS EKS с нашей собственной машины. Давайте создадим объекты развертывания и обслуживания и воспользуемся образом из AWS ECR. Вот файл манифеста, который содержит эти объекты.

Если вы клонировали проект из приведенного выше примера и находитесь в корневой папке, просто используйте эту команду для создания объектов kubectl create -f manifest.yml

Вы можете использовать следующие команды, чтобы убедиться, что все объекты находятся в желаемом состоянии.

// list the deployment
kubectl get deploy
// list the pods
kubectl get po
// list the service
kubectl get svc

Резюме

  • Amazon Elastic Kubernetes Service (Amazon EKS) - это управляемый сервис, который упрощает запуск Kubernetes на AWS без необходимости вставать или поддерживать свою собственную плоскость управления Kubernetes.
  • В качестве предварительного условия вам необходимо создать учетную запись AWS.
  • Не рекомендуется использовать свою учетную запись root для выполнения каких-либо задач, вместо этого вам следует создать группу IAM с разрешениями для доступа администратора, добавить в нее пользователя и войти в систему с этим пользователем.
  • Вы должны использовать эту команду aws configure с ключом доступа и секретным ключом.
  • Amazon EKS - это управляемый сервис, который упрощает запуск Kubernetes на AWS.
  • Amazon Elastic Container Registry (ECR) - это полностью управляемый реестр контейнеров Docker, который упрощает разработчикам хранение, управление и развертывание образов контейнеров Docker.
  • Amazon ECR интегрирован с Amazon Elastic Container Service (ECS), что упрощает рабочий процесс от разработки до производственной среды.
  • Amazon ECS работает с любым реестром Docker, например с Docker Hub и т. Д.
  • Для запуска приложений в кластере Kubernetes необходимо выполнить следующие действия: нам нужно создать кластер AWS EKS с консолью AWS, SDK или AWS CLI. Создайте группу рабочих узлов, которая регистрируется в EKS Cluster, когда ваш кластер будет готов, вы можете настроить kubectl для связи с вашим кластером, развертывать и управлять своими приложениями в кластере.

Заключение

Мы развернули простое приложение React с Java Backend в кластере AWS EKS. В будущих публикациях мы увидим, как добавить балансировщик нагрузки и как направить запросы в кластер Kubernetes.