Пошаговое руководство с примером проекта
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
- Инструмент командной строки Kubernetes, kubectl, позволяет запускать команды для кластеров Kubernetes. Установите его отсюда.
Dockerize проект
Amazon EKS - это управляемый сервис, который упрощает запуск Kubernetes на AWS. Первое, что вам нужно сделать, это докеризовать ваш проект.
нам нужно создать Dockerfile, который создает образ Docker. Вот файл, который начинается с команды FROM и базового образа openjdk: 8-jre-alpine. Скопируйте сгенерированный файл войны и, наконец, команду CMD, которая запускается при создании образа.
Вот Dockerfile, использующий openjdk в качестве базового образа.
Если вы хотите узнать весь процесс создания образа Docker для этого проекта, перейдите по ссылке ниже.
Вот команды для создания образа и его запуска на движке 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 для использования кластера
- Нам нужно установить kubectl на нашу машину, следуйте этому руководству, чтобы установить в зависимости от вашей ОС.
- Следующее, что нам нужно сделать, это установить aws-iam-authentication. Следуйте этому руководству. Нам это нужно для аутентификации кластера, и он использует того же пользователя, с которым аутентифицируется AWS CLI.
- Используйте команду AWS CLI update-kubeconfig, чтобы создать или обновить kubeconfig для своего кластера. Здесь код региона - us-east-2, а имя_кластера - frontend_clutser.
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.