Увеличьте трубопровод CI/CD: автоматизируйте Docker с действиями GitHub

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

Начнем!

Как настроить действия GitHub для Docker

Давайте сразу же настройку действий GitHub. Первое, что вам нужно сделать, это создать файл рабочего процесса. Это простой файл yaml, размещенный в .github/workflows/your Repo.

Шаг 1: Создайте файл рабочего процесса

  • Перейти к своему репо.
  • Создайте папку, называемую .github, если ее еще не существует.
  • Внутри этого создайте папку, называемую рабочими процессами.
  • Создайте файл с именем docker.yml (или все, что вам нравится) в .github/Workflows/.
  • Вот основная структура вашего файла docker.yml:

    Имя: Docker Workflow On: Push: Branches: -Основные задания: Build: Runs -on: Ubuntu -Latest Steps: -Имя: Проверьте код. Использование: Actions/Checkout@V2 -Имя: Настройка Docker Buildx: Docker/Setup -Buildx -Action@V1 -Имя: Build Docker Изображение: Docker build -t: $ {github. — Имя: Push Docker Image Run: | echo $ {{secrets.docker_password}} | Docker login -username $ {{secrets.docker_username}} -пасвест -Стдин Docker Push MyApp: $ {{github.sha}} 12345678910111213141516171819202122232425. runs -on: Ubuntu -Latest Steps: -Имя: Проверка кода Использование: Actions/Checkout@v2 -имя: Настройка Docker BuldX использует: Docker/setup -buildx -action@v1 -Имя: Build Docker Run: Docker Build -t MyApp: $ {{github.sha}}. — Имя: Push Docker Image Run: | echo $ {{secrets.docker_password}} | Docker login-username $ {{secrets.docker_username}}-password-stdin docker push myapp: $ {{github.sha}}

    Приведенный выше файл YAML автоматизирует сборку. Кроме того, он толкает ваше изображение Docker всякий раз, когда изменения перемещаются в главную ветвь.

    Самостоятельные против бегунов, проведенных на GitHub

    Есть два варианта, доступные для выполнения вашего рабочего процесса:

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

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

    Бегуны с Github, проведенные для большинства пользователей. Так как они работают лучше всего для Docker Builds.

    автоматизация сборки изображения Docker

    Допустим, вы выдвинули новый код. Теперь вы хотите автоматизировать создание изображения Docker. Вот как вы можете это сделать.

    Шаг 2: Постройте изображение Docker автоматически

    Вы используете команду Docker Build в файле рабочего процесса GitHub Actions для автоматического создания изображения Docker.

    Например, внутри вашего файла docker.yml:

    — Имя: Построение изображения Docker Run: Docker Build -t MyApp: $ {{github.sha}}. 12 — Имя: Построение изображения Docker Run: Docker Build -t MyApp: $ {{github.sha}}.

    Указанная команда создаст изображение Docker и пометит его с помощью Commit SHA ($ {{github.sha}}). Это гарантирует, что каждое изображение однозначно помечено идентификатором коммита.

    Шаг 3: Динамически текски изображений Docker Docker

    Вы, вероятно, захотите пометить ваши изображения значимым образом. Например, по названию филиала и, возможно, с тегом версии. Вы можете сделать это с переменными действиями GitHub:

    -Имя: сборка и тег Docker Run: Docker Build -t MyApp: $ {{github.sha}} -t myApp: $ {{github.ref}}. 12 -Имя: сборка и тег Docker Run: Docker Build -t MyApp: $ {{github.sha}} -t myApp: $ {{github.ref}}.

    В этом примере:

    • $ {{github.sha}} помечает изображение с уникальным хэшем коммита.
    • $ {{github.ref}} помечает его с именем ветви (например, refs/heads/main).

    Это делает ваши изображения легко отслеживать и идентифицировать.

    Толкание в Docker Hub или GHCR

    Теперь, когда вы построили изображение, следующим шагом является то, чтобы подтолкнуть его к реестру контейнеров, такого как Docker Hub или реестр контейнеров Github (GHCR).

    Шаг 4: Настройка безопасной аутентификации

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

    Перейдите в настройки вашего GitHub Repo> Секреты и добавьте два секрета:

    • Docker_username
    • Docker_password

    Затем, в вашем файле рабочего процесса, вы используете эти секреты, чтобы войти в свой Docker:

    — Имя: Войдите в Docker Hub Run: | echo $ {{secrets.docker_password}} | Docker login -username $ {{secrets.docker_username}} -Пасвинд -Стдин 123 -Имя: Войдите в Docker Hub Run: | echo $ {{secrets.docker_password}} | Docker login-username $ {{secrets.docker_username}}-password-stdin

    Шаг 5: Нажмите изображение в Docker Hub или GHCR

    Наконец, после входа в систему нажмите изображение Docker:

    — Имя: Нажмите изображение Docker To Docker Hub Run: Docker Push MyApp: $ {{github.sha}} 12 — Имя: Нажмите изображение Docker to Docker hub.

    Код YAML подталкивает ваше изображение в Docker Hub. Более того, вы можете поменять это на GHCR, если это ваш выбор.

    Multiach Arch строится с qemu и buildx

    Ваш существующий рабочий процесс должен поддерживать несколько машинных архитектур, таких как ARM и x86. Это позволяет оборудовать аппаратные операции с помощью устройств Raspberry Pi (на основе ARM) до облачных серверов (x86). На этом этапе комбинация qemu+buildx внутри действий GitHub удобна.

    Шаг 6: Настройка многоарха

    Во -первых, вы должны настроить QEMU и BuildX в вашем файле рабочего процесса.

    Вот как это выглядит:

    -Имя: Настройка QEMU использует: docker/setup-qemu-action@v2-Имя: Настройка Buildx Использование: Docker/setup-buildx-action@v1-Имя: Стройте многоаршерный изображение Docker Run: | Docker Buildx Build -PLATFORM LINUX/AMD64, Linux/ARM64 -T MYAPP: $ {{github.sha}}. 123456789-Имя: Настройка QEMU использует: Docker/setup-qemu-action@v2-Имя: Настройка Buildx Использование: Docker/setup-buildx-action@v1-Имя: Строительница Multiach Docker Изображение: | Docker Buildx Build -PLATFORM LINUX/AMD64, Linux/ARM64 -T MYAPP: $ {{github.sha}}.

    Это будет создавать изображения как для AMD64 (стандартная архитектура рабочего стола/сервера), так и для ARM64 (используется Raspberry Pi, так и некоторые облачные серверы).

    Улучшения безопасности: сканирование изображений для уязвимостей

    Безопасность всегда на высшем уровне. Вы не хотите раздвигать изображения, которые имеют уязвимости.

    Шаг 7: Сканировать изображения докеров для уязвимостей

    Вы можете интегрировать инструменты безопасности, такие как Trivy, и Snyk в ваши действия GitHub, чтобы сканировать ваши изображения в процессе сборки. Вот пример с использованием Trivy:

    — Имя: Сканировать изображение Docker для уязвимостей. Запуск: | Trivy Image MyApp: $ {{github.sha}} if [ $? -ne 0 ]; затем выйти 1; FI 1234 — Имя: Сканирование Docker Image для уязвимостей. Запустите: | Trivy Image MyApp: $ {{github.sha}} if [ $? -ne 0 ]; затем выйти 1; фигура

    Если Trivy обнаружит уязвимости, сборка потерпит неудачу. Это гарантирует, что только безопасные изображения нажимаются.

    автоматизация развертывания

    Вы построили свое изображение Docker и теперь должны подтолкнуть его в реестр. Теперь пришло время развернуть его.

    Шаг 8: развертывание в Kubernetes

    Используя действия GitHub, вы можете легко развернуть свое изображение Docker в кластер Kubernetes. Вот как;

    — Имя: развертывание в kubernetes использует: appleboy/kubernetes-action@v0.1.0 с: kubeconfig: $ {{secrets.kubeconfig}} Контекст: $ {{secrets.k8s_context}} Команда: kubectl set deperipment/myApp = myApp: $ {{kitSSHA {{{a {a {kitSsha eMit. 123456 — Имя: развертывание в Kubernetes Использование: Appleboy/kubernetes-action@v0.1.0 с: kubeconfig: $ {{secrets.kubeconfig}} Контекст: $ {{secrets.k8s_context}} command: kubectl set/myApp = w. }}

    Действие обновляет развертывание Kubernetes с последним изображением, с меткой $ {{github.sha}}.

    Краткое содержание

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

    Самая лучшая часть? Вы можете сделать все это прямо из GitHub с несколькими линиями YAML с несколькими линиями YAML. Таким образом, независимо от того, нажимаете ли вы код, тестируете изображения или развертываете для Prod, Github Doass заставит вас осветить.

    Итак, вы готовы сделать решающий шаг? Начните автоматизировать свои рабочие процессы Docker прямо сейчас! Чтобы получить полную рабочую демонстрацию, посмотрите на репозиторий GitHub.

    Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Advait Patel — квалифицированный инженер по надежности старшего сайта, базирующийся в Чикаго, страсть к использованию технологии для управления эффективными решениями. Благодаря обширному опыту в области облачных вычислений, облачной безопасности и кибербезопасности, он в настоящее время работает в Broadcom, где он играет … Подробнее от Advait Patel

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *