Возникла проблема с рефакторингом

В последней статье мы разобрались, как построить пайплайн CI/CD, и увидели, как он реально работает. Наш конвейер по-прежнему достаточно хорош для автоматизации сложных процессов развертывания и предотвращения ошибок, которые могут возникнуть при развертывании вручную. Тем не менее, это дает нам свободу действий, чтобы мы могли быстрее строить и легче находить ошибки.

Ловушка Docker-зависимой архитектуры

Написанный нами файл Github Action состоит из трех шагов:

  1. Сборка с Gradle
  2. Отправьте файл сборки в виде образа в Docker Hub
  3. Извлеките образ и запустите в EC2

Поскольку львиная доля этого пайплайна зависит от Docker, нам нужно будет написать кучу команд docker в скрипте Github Action или преднамеренно добавить часть файла docker, так как требуется больше триггеров. Кроме того, скорость сборки может быть ниже, чем у других конвейеров, поскольку она передает файлы сборки через Docker Hub, который находится за пределами платформы AWS.

Уязвимость при использовании внешнего ключа SSH

Чтобы получить доступ к нашему EC2 через ключ SSH, мы использовали проект с открытым исходным кодом, в котором я создал пару ключей SSH и зарегистрировал открытый ключ в EC2. Добавление ключей, которые не были созданы AWS, может сделать ваше приложение незащищенным, что повысит его уязвимость.

По этим причинам мы пытаемся изменить эту архитектуру, чтобы сделать ее более удобной для AWS, используя AWS EC2, CodeDeploy и S3. Вот схема этого.

Краткое объяснение используемых ресурсов AWS

EC2

Amazon Elastic Compute Cloud (Amazon EC2) — это веб-сервис, который позволяет компаниям запускать приложения в общедоступном облаке Amazon Web Services. EC2 позволяет разработчику запускать виртуальные машины (ВМ), которые обеспечивают облачные рабочие нагрузки. Экземпляр Amazon EC2 — это виртуальный сервер для запуска приложений в инфраструктуре AWS.

КодРазвертывание

CodeDeploy — это служба развертывания, которая автоматизирует развертывание приложений в инстансах Amazon EC2, локальных инстансах, бессерверных функциях Lambda или сервисах Amazon ECS.

S3

Amazon Simple Storage Service (Amazon S3) — это сервис хранения объектов, который предлагает лучшую в отрасли масштабируемость, доступность данных, безопасность и производительность.

Я

Amazon Identity and Access Management (IAM) — это веб-сервис, который помогает вам безопасно контролировать доступ к ресурсам AWS. Вы используете IAM, чтобы контролировать, кто проходит проверку подлинности (входит в систему) и авторизуется (имеет разрешения) для использования ресурсов.

Начать

Настройка среды EC2

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

Если он у вас уже есть, установите CodeDeploy в своем экземпляре с помощью приведенных ниже команд. Вам нужно знать, что bucket-name — это имя корзины Amazon S3, в которой хранится набор ресурсов CodeDeploy, а regin-identifier — идентификатор вашего региона. Поскольку это в основном для Amazon Linux, см. эту документацию, если ваш экземпляр Ubuntu.

sudo yum update
sudo yum install ruby
sudo yum install wget
cd /home/ec2-user
wget https://bucket-name.s3.region-identifier.amazonaws.com/latest/install
# In case of Asia-Pacific (Seoul), use https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install 
chmod +x ./install
sudo ./install auto
sudo service codedeploy-agent status

Назначить роль IAM для EC2

Теперь, когда CodeDeploy установлен, он может обрабатывать ваш экземпляр при развертывании любого приложения. Однако политика Amazon в отношении обработки ресурсов заключается в том, что один ресурс должен иметь надлежащую авторизацию для управления другим, и для каждого действия необходимо разрешение. Мы передадим это EC2.

Перейдите в IAM и создайте новую роль, которая будет назначена экземпляру. Я привязал к роли 2 политики — S3FullAccess, CodeDeployFullAccess. Вернувшись к EC2, измените роль IAM на только что созданную (mhjang-ec2-deploy) и сохраните.

Отличная работа! Теперь EC2 с этой ролью предоставляет доступ к CodeDeploy! Мы увидим, как сделать настройки CodeDeploy, а также вещи S3 в следующий раз. Пожалуйста, оставайтесь со мной.

Рекомендации

Амазон Сервисы

https://searchaws.techtarget.com/definition/Amazon-EC2-экземпляры

https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html

https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html