Поделиться через


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

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

Реестр контейнеров Azure задачи — это набор функций, которые:

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

Например, с триггерами обновления базового образа можно автоматизировать исправление ОС и платформы для контейнеров Docker. Эти триггеры помогают поддерживать безопасные среды при соблюдении принципов неизменяемых контейнеров.

Внимание

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

Предупреждение

Любые сведения, предоставляемые в командной строке или в составе URI, могут быть зарегистрированы в рамках Реестр контейнеров Azure трассировки диагностики. Эти сведения включают конфиденциальные данные, такие как учетные данные и маркеры личного доступа GitHub. Соблюдайте осторожность, чтобы предотвратить потенциальные риски безопасности. Не включайте конфиденциальные сведения в командные строки или URI, которые подлежат ведения журналам диагностики.

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

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

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

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

Быстрые задачи

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

Функция быстрой задачи в Реестр контейнеров Azure задачах может обеспечить интегрированный интерфейс разработки, выгрузив сборки образа контейнера в Azure. Вы можете создать и отправить один образ контейнера в реестр контейнеров по запросу в Azure, не требуя локальной установки подсистемы Docker. Выполняйте docker build и docker push в облаке. С помощью быстрых задач вы можете проверить определения автоматизированной сборки и поймать потенциальные проблемы перед фиксацией кода.

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

Реестр контейнеров Azure задачи предназначены как примитив жизненного цикла контейнера. Например, можно интегрировать Реестр контейнеров Azure задачи в решение непрерывной интеграции и непрерывной доставки (CI/CD). Если вы запускаете az login с помощью субъекта-службы, решение CI/CD может затем выдавать команды az acr build , чтобы начать сборки образов.

Сведения об использовании быстрых задач см. в кратком руководстве посозданию и развертыванию образов контейнеров с помощью Реестр контейнеров Azure задач.

Совет

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

Автоматически активированные задачи

Включите один или несколько триггеров для создания образа.

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

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

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

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

Примечание.

В настоящее время Реестр контейнеров Azure задачи не поддерживают триггеры фиксации или запроса на вытягивание в репозиториях GitHub Enterprise.

Сведения о том, как активировать сборки на основе фиксаций исходного кода, см. в статье Автоматизация сборок образов контейнеров с помощью Реестр контейнеров Azure задач.

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

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

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

Сведения о создании личного маркера доступа см. в документации по GitHub или Azure DevOps .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В следующей таблице показаны примеры поддерживаемых расположений контекста для задач Реестр контейнеров 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 в качестве контекста для задачи, которая активируется обновлением исходного кода, необходимо предоставить личный маркер доступа.

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

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

ОС Архитектура
Linux AMD64
ARM
ARM64
386
Windows AMD64

Выходные данные задачи

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

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