Вы когда-нибудь думали о развертывании своего приложения в AWS через CICD? Этим приложением может быть любое приложение Java, приложение Python или приложение Node.js..

Что нам нужно, так это поместить наш код в репозиторий и развернуть его на AWS автоматически и правильным образом. Это должно дать нам уверенность в том, что код протестирован до того, как развертывание перейдет на разные стадии (например, разработка, тестирование, предварительная подготовка, продвижение). Он также обеспечивает ручное утверждение, когда это необходимо.

Если да, давайте переместим ваше приложение в AWS!

Задача:

Узнать о:

  • AWS CodeCommit: для хранения кода.
  • AWS CodePipeline: для автоматизации нашего конвейера от кода до Elastic Beanstalk.
  • AWS CodeBuild: для создания и тестирования нашего кода.
  • AWS CodeDeploy: для развертывания кода в парках EC2.

Предварительные условия:

  • Приложение, которое вы хотели развернуть
  • Аккаунт AWS
  • Хорошо иметь базовые знания для создания инстансов Amazon EC2
  • Хорошо иметь знания, чтобы создать простую корзину S3

Обзор:

AWS CodeCommit - это просто частный репозиторий Git. Нет ограничений по размеру, так как он легко масштабируется. Он полностью управляем и высокодоступен.

AWS CodePipline используется для непрерывной доставки кода и визуального представления рабочего процесса, который мы подробно рассмотрим ниже.

AWS CodeBuild - это полностью управляемая служба сборки. Он имеет непрерывное масштабирование с оплатой за использование. Проще говоря, нам нужно просто заплатить за время, необходимое для завершения сборки.

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

Давайте начнем:

Первый шаг нашего пути - войти / зарегистрироваться в учетной записи Amazon. Ниже приводится ссылка: https://aws.amazon.com/

Перейдите в консоль управления AWS:

AWS CodeCommit:

Найдите и перейдите к AWS CodeCommit:

В разделе «Источник» на левой вкладке мы найдем репозитории. В репозиториях просто нажмите кнопку «Создать репозиторий».

Дайте имя своему репозиторию и просто нажмите «Создать».

Во вновь созданном репозитории мы найдем возможность загрузить или создать файл. У меня уже есть простой html-файл, поэтому я просто загружу его и зафиксирую, нажав кнопку «Применить изменения», как показано ниже:

Вы можете загрузить то же самое с помощью команд Git. Для этого вы можете найти учетные данные Git для AWS CodeCommit в IAM. Найдите IAM в службах, нажмите «Пользователи» на левой вкладке и перейдите на вкладку «Учетные данные безопасности». Идя ниже, мы можем найти учетные данные Git, как показано ниже:

В любом случае загрузите все файлы в репозиторий CodeCommit.

AWS CodePipeline:

После этого давайте создадим конвейер кода. Он используется для соединения CodeCommit, CodeBuild со всеми этапами развертывания. Нажмите «Начало работы» в CodePipeline и нажмите «Создать конвейер», как показано:

После этого просто укажите имя конвейера и нажмите «Далее»:

При этом нам нужно добавить исходный этап. Как мы видим, для Code Pipeline мы можем получить код из любых вариантов, представленных ниже. Для этой демонстрации мы собираемся использовать репозиторий CodeCommit, поэтому просто нажмите на него:

Дайте имя репозитория, которое мы дали репозиторию CodeCommit, и выберите соответствующую ветку. Поскольку мы не меняли никаких веток для CodeCommit, по умолчанию ветвью будет ветвь Master. Нажмите «Далее»:

На данном этапе мы еще не настроили CodeBuild, поэтому нажмите «Пропустить этап сборки». На этапе развертывания я уже создал простое приложение Elastic Beanstalk, поэтому выбрал детали в соответствии с вашим приложением. Нажмите «Далее»:

После нажатия кнопки «Далее» развертывание начнется в тот же момент. Мы должны увидеть визуальное представление нашего конвейера кода, как показано ниже:

Щелкните ссылку развернутого приложения. Там мы могли увидеть код, который был в репозитории CodeCommit. Поиграйте, изменив и зафиксировав любой файл в репозитории, и посмотрите автоматическое развертывание кода.

К настоящему времени мы успешно создали AWS CodePipeline.

AWS CodeBuild:

Теперь рассмотрим сценарий, в котором мы хотели, чтобы обязательное условие успешно выполнялось перед сборкой в ​​нашем проекте. И если это условие не выполняется, код не следует собирать и развертывать в средах. Для этого воспользуемся AWS CodeBuild.

Для этого перейдем к CodeBuild на левой вкладке и начнем:

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

Что касается среды, я использую Ubuntu в качестве ОС, выбирая стандартный образ 4.0. На момент написания этого блога последняя версия 4.0 была последней, поэтому я использую ее. AWS продолжает обновлять образ, поэтому используйте доступный последний образ в соответствии с рекомендациями AWS:

Теперь самая важная часть - это файл buildspec. Этот файл сообщает CodeBuild, как создать проект. По умолчанию CodeBuild ищет файл с именем buildspec.yml в корневом каталоге исходного кода. Нам нужно загрузить это в наш репозиторий CodeCommit и после этого нажать «Создать проект сборки».

Ниже мой файл yml, который я загрузил в репозиторий. Этот формат файла вполне удобен для чтения человеком в формате «ключ-значение». Я поставил условие на этапе сборки, что сборки будут проходить только тогда, когда «Поздравления» будет присутствовать в файле index.html. Мы можем настроить состояние согласно нашим требованиям.

Теперь, если мы пойдем и проверим наш проект CodeBuild, мы увидим успех в истории сборки, как показано ниже:

Теперь, как интегрировать наш недавно созданный CodeBuild с нашим CodePipeline. Это действительно очень просто. Просто зайдите в уже созданный CodePipeline. Нажмите кнопку «Редактировать» сверху и нажмите «Добавить этап»:

Дайте название стадии, я даю ей название «BuildAndTest» и добавляю группу действий, щелкнув по ней:

Дайте название любому действию. Выберите Action Provider как AWS CodeBuild и выберите соответствующий проект, как показано ниже:

Сохраните все изменения. Чтобы протестировать новую модификацию в нашем конвейере, просто внесите небольшое изменение в любой файл в CodeCommit и посмотрите на конвейер. Теперь все этапы должны пройти успешно, включая только что созданный:

AWS CodeDeploy:

Последний этап - развертывание кода. Прежде чем перейти к CodeDeploy, мы должны создать 2 роли в IAM. Первая роль - это роль службы для CodeDeploy. Для этого перейдите в IAM. Выберите Роли на левой вкладке и нажмите кнопку «Создать роль». Выберите первый вариант использования в соответствии с нашим требованием:

После этого просмотр тегов не требуется. Просто укажите любое имя роли и нажмите «Создать». Следующая роль, которую нам нужно создать, - это роль службы EC2, которая будет запускать агенты CodeDeploy. Эти агенты необходимы нам, чтобы EC2 мог получить код из Amazon S3. Для этого снова нажмите «Создать роль» и выберите «EC2», как показано ниже:

Предоставьте доступ только к S3, как указано ниже, и укажите имя роли:

Давайте создадим приложение для CodeDeploy. Дайте ему любое имя и выберите вычислительную платформу как «EC2 / On-premises»:

После создания приложения нам нужно создать группу развертывания. Для этого нам нужно создать инстансы EC2. Для роли IAM выберите роль, которую мы только что создали для CodeDeploy. Для группы безопасности добавьте тип HTTP с портом 80, чтобы наши веб-приложения были доступны.

После запуска экземпляра EC2 нам нужно установить агент CodeDeploy, выполнив SSH на нашем вновь созданном компьютере. Вы также можете запустить сценарий ниже:

Если вы хотите, вы можете указать тег как Environment: Dev для экземпляра EC2. Аналогичным образом создайте еще один экземпляр EC2 для среды Prod. После этого давайте быстро создадим группу развертывания, используя уже созданный экземпляр EC2.

Нам также нужно будет создать развертывание, поэтому нажмите кнопку «Создать развертывание» на вкладках «Развертывания».

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

Для CodeDeploy нам нужен файл appspec.yml в корневом каталоге. Он сообщает CodeDeploy о том, как мы хотим развертывать. Наконец, нажмите кнопку «Создать развертывание».

Наконец, добавьте все это в наш CodePipeline. Мы также можем установить Ручное Утверждение на любом этапе. Просто нажмите «Добавить действие» и настройте, как показано ниже:

Таким образом, мы успешно развернули наше простое приложение в AWS с помощью CICD. Поздравляем !!!

Что мы узнали?

Узнали о полной автоматизации развертывания в AWS. Теперь разработчику просто нужно отправить код в AWS CodeCommit. Как только код размещен, CodeBuild проверяет код и строит его. Разработчик получает отзыв о пройденном / не пройденном тесте.

Если вам понравился этот пост, пожалуйста, похлопайте по нему. Я буду очень признателен.

Twitter: https://twitter.com/SakshiKhandlwl
LinkedIn: www.linkedin.com/in/sakshikhandelwal276

Больше контента на plainenglish.io