Автоматизация создания и обслуживания образов контейнеров с помощью Задач Реестра контейнеров Azure

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

Что такое "Задачи ACR"?

Задачи ACR — это набор компонентов в Реестре контейнеров Azure. Он обеспечивает построение облачных образов контейнеров для платформ, в том числе Linux, Windows и ARM, и позволяет автоматизировать применение исправлений ОС и платформ для контейнеров Docker. Набор компонентов "Задачи ACR" не только расширяет "внутренний цикл" разработки до облака за счет сборки образов контейнеров по требованию, но и обеспечивает создание автоматических сборок, активируемое обновлениями исходного кода, базового образа контейнеров, или таймерами. Например, с помощью триггеров обновления базовых образов можно автоматизировать процесс внесения исправлений в ОС и платформы приложений, поддерживая безопасную среду и соблюдая принципы неизменяемости контейнеров.

[! ВАЖНО] ACR временно приостановлено выполнение задач ACR из бесплатных кредитов Azure. Это может повлиять на существующие запуски задач. Если у вас возникли проблемы, откройте вариант поддержки для нашей команды, чтобы предоставить дополнительные рекомендации. Обратите внимание, что существующие клиенты не будут затронуты этой приостановкой. При отмене приостановки мы обновим наше уведомление о документации.

[! ПРЕДУПРЕЖДЕНИЕ] Обратите внимание, что любая информация, указанная в командной строке или в составе URI, может быть зарегистрирована в рамках трассировки диагностики Реестр контейнеров Azure (ACR). К ним относятся конфиденциальные данные, такие как учетные данные, GitHub личные маркеры доступа и другие безопасные сведения. Соблюдайте осторожность, чтобы предотвратить потенциальные риски безопасности, важно избежать включения конфиденциальных сведений в командные строки или URI, которые подвергаются ведения журналам диагностики.

Сценарии задач

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

Каждая задача ACR имеет связанный контекст исходного кода — расположение набора файлов исходного кода, используемых для построения образа контейнера или другого артефакта. Примеры контекстов — репозиторий Git и локальная файловая система.

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

Быстрая задача

Цикл разработки "внутреннего цикла" — это итеративный процесс написания кода, сборки и тестирования приложения перед фиксацией в системе управления версиями. Это лишь начало управления жизненным циклом контейнера.

Прежде чем зафиксировать первую строку кода, функция Быстрая задача службы "Задачи ACR" может обеспечить интегрированный опыт разработки, разгружая сборки образов контейнера в Azure. С помощью быстрых задач можно проверить автоматические определения сборки и перехватывать потенциальные проблемы перед фиксацией кода.

Используя знакомый формат docker build, команда az acr build в интерфейсе командной строки Azure принимает контекст (набор файлов для сборки), отправляет его в Задачи ACR и по умолчанию после завершения сборки отправляет собранный образ в свой реестр.

Общие сведения см. в кратком руководстве по созданию и запуску образа контейнера в Реестре контейнеров Azure.

Служба "Задачи ACR" разработана как примитив жизненного цикла контейнеров. К примеру, интегрируйте службу "Задачи ACR" в решение CI/CD. Выполнив команды az login с субъектом-службой, решение CI/CD может выдавать команды az acr build для запуска сборок образов.

Узнайте, как использовать быстрые задачи из первого руководства по Задачам ACR: Руководство. Создание образов контейнера в облаке с помощью службы "Задачи Реестра контейнеров Azure".

Совет

Если требуется создать и передать образ непосредственно из исходного кода, без Dockerfile, то Реестр контейнеров Azure предоставляет команду az acr pack build (предварительный просмотр). Это средство создает и отправляет образ из исходного кода приложения с помощью собственных облачных пакетов сборок.

Активация задачи при обновлении исходного кода

Активация сборки образа контейнера или многошаговой задачи при фиксации кода, выполнении или обновлении запроса на вытягивание в публичный или частный репозиторий Git в GitHub или Azure DevOps. Например, настройка задачи сборки с помощью команды Azure CLI az acr task create с указанием репозитория Git и, возможно, ветви и файла Dockerfile. Когда ваша группа обновляет код в репозитории, веб-перехватчик, созданный Задачами Реестра контейнеров Azure, запускает сборку образа контейнера, определенного в репозитории.

Задачи ACR поддерживают следующие триггеры при настройке репозитория Git в качестве контекста задачи.

Триггер Включено по умолчанию
Commit Да
Запрос на вытягивание No

Примечание.

Сейчас Задачи ACR не поддерживают триггеры фиксации или запроса на вытягивание в репозиториях GitHub Enterprise.

Узнайте, как активировать сборку при фиксации исходного кода из второго руководства по службе "Задачи ACR": Руководство. Автоматизация сборок образов контейнера с помощью службы "Задачи Реестра контейнеров Azure".

Личный маркер доступа

Чтобы настроить триггер обновления исходного кода, необходимо предоставить задаче личный маркер доступа (PAT) для установки веб-перехватчика в общедоступном или частном репозитории GitHub или Azure DevOps. Ниже перечислены необходимые области для PAT.

Тип репозитория GitHub DevOps
Общедоступный репозиторий repo:status
public_repo
Код (чтение)
Частный репозиторий repo (полный доступ) Код (чтение)

Сведения о том, как создать PAT, см. в документации GitHub или Azure DevOps.

Автоматизация установки исправлений ОС и платформы

Возможность набора компонентов "Задачи Реестра контейнеров Azure" значительно улучшать рабочий процесс сборки контейнера обеспечивается его способностью обнаруживать обновление базового образа. Компонент большинства образов контейнеров, базовый образ, является родительским образом, на котором основаны один или несколько образов приложений. Базовые образы обычно содержат операционную систему, а иногда исполняющие среды.

Вы можете настроить задачу Реестра контейнеров Azure, чтобы отслеживать зависимость от базового образа при сборке образа приложения. Когда обновленный базовый образ помещается в реестр или базовый образ обновляется в общедоступном репозитории, например в Docker Hub, Задачи ACR могут автоматически создавать образы приложений на его основе. Благодаря такому автоматическому обнаружению и повторному выполнению сборок служба "Задачи ACR" экономит время и усилия, необходимые для того, чтобы вручную отслеживать и обновлять каждый образ приложения, ссылающийся на обновленный базовый образ.

Дополнительные сведения о триггерах обновления базовых образов для Задач Реестра контейнеров Azure. Узнайте, как активировать сборку образа при отправке базового образа в реестр контейнеров в руководстве по автоматизации сборок образов контейнеров при обновлении базового образа в реестре контейнеров Azure

Планирование задачи

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

Многошаговые задачи

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

Например, можно создать многошаговую задачу, которая автоматизирует следующие операции:

  1. Сборка образа веб-приложения.
  2. Выполнение контейнера веб-приложения.
  3. Сборка тестового образа веб-приложения.
  4. Выполнение контейнера для тестирования веб-приложения, который выполняет тесты работающего контейнера приложения.
  5. Если тесты проходят успешно, создайте пакет архива диаграмм Helm.
  6. Выполнение команды helm upgrade с использованием нового пакета архива диаграмм Helm.

Многошаговые задачи позволяют разделить создание, выполнение и тестирование образов на большее количество составных шагов с поддержкой зависимостей между шагами. Благодаря многошаговым задачам в службе "Задачи ACR" у вас есть более детальный контроль над рабочими процессами создания и тестирования образа, а также исправления платформы и ОС.

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

Расположения контекста

В следующей таблице приведены примеры поддерживаемых расположений контекста для Задач Реестра контейнеров Azure:

Расположение контекста Description Пример
Локальная файловая система Файлы в каталоге в локальной файловой системе. /home/user/projects/myapp
Главная ветвь GitHub Файлы в основной (или другой по умолчанию) ветви в общедоступном или частном репозитории GitHub. https://github.com/gituser/myapp-repo.git
Ветвь GitHub Конкретная ветвь общедоступного или частного репозитория GitHub. https://github.com/gituser/myapp-repo.git#mybranch
Вложенная папка GitHub Файлы во вложенной папке в общедоступном или частном репозитории GitHub. В примере показано сочетание спецификации ветви и вложенной папки. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
Фиксация GitHub Конкретная фиксация в общедоступном или частном репозитории GitHub. В примере показано сочетание спецификации хэша фиксации (SHA) и вложенной папки. https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Вложенная папка DevOps для Azure Файлы во вложенной папке в общедоступном или частном репозитории Azure. В примере показано сочетание спецификации ветви и вложенной папки. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
Удаленный архив Tarball Файлы в сжатом архиве на удаленном веб-сервере. http://remoteserver/myapp.tar.gz
Артефакт в реестре контейнеров Файлы артефактов OCI в репозитории реестра контейнеров. oci://myregistry.azurecr.io/myartifact:mytag

Примечание.

При использовании репозитория Git в качестве контекста для задачи, активируемой в результате обновления исходного кода, необходимо предоставить личный маркер доступа (PAT).

Платформы образов

По умолчанию Задачи Реестра контейнеров Azure строят образы для ОС Linux и архитектуры AMD64. Укажите тег --platform для создания образов Windows или Linux для других архитектур. Укажите операционную систему и при необходимости поддерживаемую архитектуру в формате ОС/архитектура (например, --platform Linux/arm). Для архитектур ARM можно дополнительно указать вариант в формате OS/Architecture/Variant (например, --platform Linux/arm64/v8):

ОС Архитектура
Linux amd64
arm
arm64
386
Windows amd64

Просмотр выходных данных задачи

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

См. дополнительные сведения о просмотре журналов задач и управлении ими.

Следующие шаги

Когда вы будете готовы автоматизировать сборку и обслуживание образов контейнеров в облаке, см. серию руководств по Задачам Реестра контейнеров Azure.

При необходимости установите расширение Docker для Visual Studio Code и расширение учетной записи Azure для работы со своими реестрами контейнеров Azure. Извлекайте и отправляйте образы в реестр контейнеров Azure или запускайте Задачи ACR в Visual Studio Code.