Создание образа облака CI / CD на Github в реестр AWS

Предварительные требования ✅

  1. Учетная запись AWS, отвечающая требованиям уровня бесплатного пользования.
  2. Базовые знания Docker.
  3. Базовые предварительные знания об экземплярах, удаленной среде и Github

Краткая хронология ⏲

  1. "Начиная"
  2. Создание репозитория Github
  3. Настройка действий Github
  4. Создание репозитория AWS для хранения изображений
  5. Создать пользователя AWS с разрешениями, ограниченными только ECR
  6. Подключение действий Github к AWS ECR
  7. Мониторинг, построение и продвижение

1️⃣ Начало работы

  1. Образ Docker приложения, созданный в вашей локальной среде, который готов к отправке в облачный реестр. (Альтернативный вариант: вы также можете использовать это базовое Приложение профиля пользователя для тестирования напрямую с помощью Forking)

2. Подготовка подходящей учетной записи уровня бесплатного пользования AWS для хранения образа.

2️⃣ Создание репозитория Github

  1. Создайте приложение в своей локальной среде, создав образ Docker.
  2. После того, как сборка будет завершена и протестирована вами, создайте новый репозиторий или вы можете использовать существующий.
  3. Если он создан, поместите последний код в репозиторий Github с файлом Docker в корневой каталог.

3️⃣ Настройка действий Github

Для рабочего процесса создания изображений мы используем отличный инструмент от Github под названием Github Actions. Рабочий процесс - это набор определений заданий, которые будут выполняться одновременно, а также последовательно. Задание состоит из нескольких шагов инструкций, которым удаленная система следует для выполнения действия.

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

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

Написание рабочего процесса Github Actions

После настройки репозитория создайте две папки в корне .github / workflow и внутри рабочего процесса, в папке создайте файл TASK_NAME.yml.

Этот TASK_NAME.yml содержит набор инструкций, которые будет выполнять рабочий процесс. Здесь aws.yml - это файл, который нам нужно записать.

Файл .yml должен иметь правильный отступ, форматирование текста и аргументы.

Если вы редактируете или пишете свой собственный .yml, вы должны использовать Онлайн-валидаторы .yml, прежде чем отправлять Код.

Работа команд

  1. Активировать действие, когда в основной ветке выполняется фиксация.
  2. Дает имя запуску рабочего процесса.
  3. JOB-A: создайте удаленную среду / Runner Ubuntu, где рабочий процесс может запускаться и создавать образ. (Подробнее об окружающей среде здесь)
  4. JOB-B: выполнить действия, указанные на удаленной машине после успешного запуска.
  5. ЗАДАНИЕ-B / ШАГ-A: войдите на удаленный компьютер через SSH, используя заранее написанный рабочий процесс с помощью официальных действий Github, то есть Оформить заказ.
  6. JOB-B / STEP-B: настройка AWS CLI / SDK на удаленном хосте и настройка учетных данных для входа в AWS и принятие ролей с использованием предварительно написанного рабочего процесса официальными командами AWS, т. е. Настройка учетных данных AWS. Для доступа к AWS ECR нам необходимо определить пользовательскую роль на более поздних этапах.

ПРИМЕЧАНИЕ ⚠: для доступа к AWS ECR с помощью интерфейса командной строки AWS на удаленном компьютере используется специальная роль, которую мы определим позже. Роль будет иметь KEY ID и ACCESS ID для CLI для входа в систему. Поскольку это учетные данные, мы не можем раскрыть их публично, поэтому необходимо установить их как Переменные среды, которые скрыты и защищены в среде. (Мы настроим переменную среды на более поздних этапах)

7. ЗАДАНИЕ-B / ШАГ-C: Создание образа Docker путем копирования с использованием кода из нашего репозитория (файл Docker), маркировка образа версией и его отправка в реестр эластичных контейнеров (частный ECR). (Будет сделано позже)

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

Уууууу! Очень рад, что ты до сих пор следил. Настройка действия может занять некоторое время, чтобы изучить и попрактиковаться. Для получения дополнительных сведений обратитесь к Официальной документации Github.

4️⃣Создание AWS ECR

  1. Войдите в свою панель AWS (уровень бесплатного пользования +) и найдите Elastic Container Registry (ECR) в строке поиска службы.
  2. Выберите "Частный" и нажмите Создать репозиторий.

3. Выберите видимость как частную и дайте имя своему репозиторию после URL-адреса хоста. «Здесь: my-app» и нажмите Создать репозиторий.

5️⃣Создайте пользователя AWS и установите разрешения

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

  1. В строке поиска службы введите Пользователи, откройте перечисленную Функция IAM и нажмите Добавить роль.

2. Введите имя пользователя: Github-Action-AWL-CLI-Allow-ECR и отметьте Программный доступ, что позволит нам создать пару ключей.

3. Щелкните Далее: Разрешения и на следующем экране выберите «Прикрепить существующие политики напрямую». В политиках поиска найдите «AmazonEC2ContainerRegistryFullAccess» и отметьте его, который даст этой учетной записи пользователя разрешение на запуск частной ECR.

4. Нажмите Далее: Теги, пропустите, нажмите Далее: Обзор и подтвердите Создать пользователя.

5. После создания необходимо сохранить файл учетных данных и скопировать «идентификатор ключа доступа» и «секретный ключ доступа».

6️⃣ Подключение действий Github к AWS ECR

Теперь мы всего в нескольких шагах от тестирования нашей первой сборки CI / CD. Чтобы разрешить доступ к Github нашей новой учетной записи пользователя, мы должны предоставить ей учетные данные.

  1. Откройте настройки репозитория Github и нажмите «Секреты».

2. Теперь нажмите Новый секрет репозитория, чтобы добавить переменные и их значения.

  • Добавьте REPO_NAME в качестве имени и свое имя ECR в качестве значения, my-app
  • Аналогичным образом добавьте AWS_ACCESS_KEY_ID в качестве имени и вставьте ранее скопированный идентификатор ключа доступа в качестве значения.
  • Аналогичным образом добавьте AWS_SECRET_ACCESS_KEY в качестве имени и вставьте ранее скопированный секретный ключ доступа в качестве значения.

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

7️⃣ Мониторинг, построение и продвижение

🎉 Мы почти у цели ...

  1. Зарегистрируйте свой репозиторий, добавив значение IMAGE_TAG в файл AWS.yml.
  2. После того, как изменения будут внесены в репозиторий, откройте вкладку Действия.

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

3. Щелкните имя сборки, которая находится в процессе, и откройте текущее развертывание.

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

5. Теперь вам нужно дождаться завершения развертывания и убедиться в отсутствии ошибок. Однако если вы получите ошибку в 5-й задаче, скорее всего, вы допустили ошибку при создании учетной записи пользователя / настройке учетных данных AWS ECR. Убедитесь, что вы проверили журналы заданий, щелкнув по ним.

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

Вот и все! Теперь вы также можете открыть частное репо ECR и проверить финальное изображение с последним тегом внутри него.

Ууууу! Были сделаны! Не стесняйтесь подтолкнуть меня - подтолкнуть меня. Если вы считаете, что это было полезно, подпишитесь на меня на Medium. Если вам понадобится помощь, вы можете связаться со мной через мои страницы в социальных сетях (по ссылке ниже).

Автор: Рохан Гупта

  1. Github
  2. Linkedin
  3. Твиттер

Подробности

  1. Операции по развитию
  2. Сборка образа CI / CD S1

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