Поиск по сайту:

Как начать работу с конвейерами AWS CI/CD


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

Что такое CI/CD?

Непрерывная интеграция, непрерывное развертывание (CI/CD) — это частые (часто ежедневные) обновления кода, сборка и тестирование новых выпусков, а также быстрое и эффективное развертывание изменений на рабочих серверах.

Это очень широкий термин, который включает в себя суть культуры DevOps — оптимизацию потока нового кода из мозгов вашего разработчика на ваши серверы. Обычно CI/CD реализуется с помощью набора инструментов, называемого конвейер, который представляет собой набор инструментов, автоматизирующих весь процесс от исходного кода до развертывания.

Это то, что AWS предоставляет со своими инструментами CodeSuite, и они особенно хорошо подходят для реализации такого конвейера, поскольку вы обычно будете запускать свои производственные серверы на EC2, что значительно упрощает этап развертывания и хорошо интегрируется.

Инструменты AWS CodeSuite

CodeSuite состоит из нескольких разных инструментов. Все начинается с CodeCommit, управляемой службы управления исходным кодом AWS. Это немного более громоздко и менее многофункционально, чем у конкурентов, но достаточно легко настроить Git с несколькими пультами дистанционного управления, которые вы также можете использовать, если планируете использовать остальную часть конвейера. У CodeCommit очень щедрый бесплатный уровень, так что вы, скорее всего, не будете платить за него много денег.

Далее следует CodeBuild, который берет управление исходным кодом из CodeCommit (или GitHub/BitBucket) и строит из исходного кода, выполняя любые тесты, которые вы предоставляете в процессе. При этом для сборки используется сервер EC2, за который вы должны платить во время сборки. Для сложных проектов может потребоваться мощная машина для быстрой сборки.

После завершения сборки ваше приложение готово к развертыванию. Этот этап обрабатывается с помощью CodeDeploy; вы создаете «группу развертывания», которая может содержать любое количество экземпляров EC2 или целых групп автоматического масштабирования. Вот где конвейер AWS действительно сияет.

С помощью CodeDeploy вы можете точно настроить процесс развертывания — есть предустановки для всех сразу, для половины группы, 10 % каждые несколько минут и многие другие, которые предназначены для сведения к минимуму времени простоя приложения из-за непредвиденных ошибок в рабочей среде. Автоматическое обновление всех ваших серверов — это достаточно хорошо, но CodeDeploy может даже подключиться к вашему балансировщику нагрузки и сократить трафик к инстансам в процессе обновления. В сочетании со стратегией поэтапного развертывания, обеспечивающей минимальное количество работоспособных хостов, это позволяет без стресса выполнять обновления в рабочей среде.

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

Как настроить конвейер

Во-первых, вам нужно получить свой код в CodeCommit. Мы рекомендуем настроить CodeCommit как отдельный удаленный выпуск вместе с вашим основным исходным элементом управления. Если вы используете Github или BitBucket, вместо этого вы можете напрямую подключиться к своему репозиторию, но CodeCommit — это полностью решение AWS, которое позволяет вам управлять доступом организации к обновлениям сервера через консоль IAM.

Затем перейдите в консоль CodePipeline, чтобы начать. Нажмите «Создать конвейер» и дайте ему имя и описание.

Каждый этап конвейера нуждается в определенной настройке. Первый — это этап исходного кода, который подключается к CodeCommit, Github и BitBucket. Последние два требуют, чтобы вы подключали свои учетные записи через OAuth, но CodeCommit подключается напрямую. Выберите репозиторий, который вы используете, и ветку для выпусков. Если вы используете CodeCommit в качестве вторичного пульта, вы, вероятно, выберете здесь master, но если вы используете стороннего поставщика, вы можете настроить отдельную ветку выпуска.

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

Далее этап сборки. CodePipeline поддерживает Jenkins и встроенный CodeBuild для создания кода. Если вы уже используете Jenkins для сборки, необходимо установить подключаемый модуль CodePipeline, чтобы подключить его к AWS. В противном случае вы можете настроить CodeBuild, нажав «Создать проект», чтобы открыть диалоговое окно.

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

Следующий этап — развертывание. CodePipeline поддерживает несколько различных вариантов развертывания; в частности, если вы используете AWS CloudFormation или Elastic Container Service, вы можете развертывать обновления непосредственно для них. Для общих развертываний EC2 и Lambda необходимо использовать CodeDeploy.

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

Когда вы закончите, вернитесь в CodePipeline и выберите развертывание, которое вы только что настроили. Это должно означать, что все настройки выполнены, и вы можете нажать «Далее», чтобы просмотреть свой конвейер, прежде чем запускать его.

После создания конвейера он автоматически запускает первую сборку. Если он столкнется с какими-либо ошибками в сборке, конвейер остановится, и ваши серверы не будут обновлены.

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

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