Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как использовать функцию передачи ACR с расширением acrtransfer Az CLI.
Завершите выполнение предварительных условий
Перед выполнением действий, описанных в этой статье, выполните предварительные требования, описанные здесь. Это означает, что:
- У вас есть существующий реестр SKU "Премиум" в обоих облаках.
- У вас есть контейнер учетной записи хранения в обоих облаках.
- У вас есть существующее хранилище ключей с секретом, который содержит действительный маркер SAS с необходимыми разрешениями в обоих облаках.
- У вас есть последняя версия Az CLI, установленная в обоих облаках.
Установка расширения Az CLI
В AzureCloud можно установить расширение с помощью следующей команды:
az extension add --name acrtransfer
Создание ExportPipeline с расширением acrtransfer Az CLI
Создайте ресурс ExportPipeline для реестра контейнеров AzureCloud с помощью расширения acrtransfer Az CLI.
Создайте экспортный конвейер без параметров и с системно назначенной идентификацией.
az acr export-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--secret-uri https://$MyKV.vault.azure.net/secrets/$MySecret \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer
Создайте конвейер экспорта со всеми возможными параметрами и удостоверением, назначенным пользователем:
az acr export-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--secret-uri https://$MyKV.vault.azure.net/secrets/$MySecret \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer \
--options OverwriteBlobs ContinueOnErrors \
--assign-identity /subscriptions/$MySubID/resourceGroups/$MyRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$MyIdentity
Параметры экспорта
Свойство options для конвейеров экспорта поддерживает необязательные булевые значения. Рекомендуются следующие значения.
| Параметр | Ценность |
|---|---|
| опции | OverwriteBlobs — перезапись существующих целевых BLOB-объектов. ContinueOnErrors — продолжение экспорта оставшихся в исходном реестре артефактов в случае сбоя экспорта одного артефакта. |
Предоставьте ExportPipeline доступ к политике keyvault
Если вы создали конвейер с назначаемым пользователем удостоверением, просто предоставьте этому удостоверению разрешения политики доступа в хранилище ключей secret get.
Если вы создали конвейер с удостоверением, назначаемым системой, вам сначала необходимо получить идентификатор объекта, который система назначила вашему ресурсу конвейера.
Выполните следующую команду, чтобы получить ресурс конвейера:
az acr export-pipeline show --resource-group $MyRG --registry $MyReg --name $MyPipeline
Из этого вывода необходимо скопировать значение из поля principalId.
Затем выполните следующую команду, чтобы предоставить этому субъекту соответствующие secret get разрешения политики доступа в ваше хранилище ключей.
az keyvault set-policy --name $MyKeyvault --secret-permissions get --object-id $MyPrincipalID
Создайте ImportPipeline с использованием расширения acrtransfer Az CLI
Создайте ресурс ImportPipeline в целевом реестре контейнеров с помощью расширения acrtransfer Az CLI. По умолчанию конвейер настроен на автоматическое создание Import PipelineRun, когда контейнер в подключенной учетной записи хранилища получает новый blob артефакта.
Создайте поток импорта без опций и идентификатор, назначаемый системой.
az acr import-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--secret-uri https://$MyKV.vault.azure.net/secrets/$MySecret \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer
Создайте конвейер импорта со всеми возможными параметрами, отключенным источником триггера и удостоверением, назначенным пользователем:
az acr import-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--secret-uri https://$MyKV.vault.azure.net/secrets/$MySecret \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer \
--options DeleteSourceBlobOnSuccess OverwriteTags ContinueOnErrors \
--assign-identity /subscriptions/$MySubID/resourceGroups/$MyRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$MyIdentity \
--source-trigger-enabled False
Параметры импорта
Свойство options для конвейера импорта поддерживает дополнительные логические значения. Рекомендуются следующие значения.
| Параметр | Ценность |
|---|---|
| опции | OverwriteTags — перезапись существующих целевых тегов. DeleteSourceBlobOnSuccess — удаление BLOB-объекта исходного хранилища после успешного импорта в целевой реестр. ContinueOnErrors — продолжение импорта оставшихся в целевом реестре артефактов в случае сбоя импорта одного артефакта. |
Предоставьте идентификатору ImportPipeline доступ к политике Key Vault
Если вы создали конвейер с пользовательским удостоверением, просто предоставьте этому пользовательскому удостоверению разрешения политики доступа в хранилище ключей secret get.
Если вы создали конвейер с удостоверением, назначаемым системой, сначала необходимо получить идентификатор субъекта (principalId), назначенный вашему ресурсу конвейера системой.
Выполните следующую команду, чтобы получить ресурс конвейера:
az acr import-pipeline show --resource-group $MyRG --registry $MyReg --name $MyPipeline
Из этих выходных данных необходимо скопировать значение в поле principalId.
Затем выполните следующую команду для предоставления этому субъекту соответствующей secret get политики доступа в хранилище ключей.
az keyvault set-policy --name $MyKeyvault --secret-permissions get --object-id $MyPrincipalID
Создайте PipelineRun для экспорта с использованием расширения acrtransfer для az CLI.
Создайте ресурс PipelineRun для реестра контейнеров с помощью расширения acrtransfer Az CLI. Этот ресурс запускает ресурс ExportPipeline, созданный ранее, и экспортирует указанные артефакты из реестра контейнеров как BLOB в контейнер вашей учетной записи хранения.
Создание конвейера экспорта:
az acr pipeline-run create \
--resource-group $MyRG \
--registry $MyReg \
--pipeline $MyPipeline \
--name $MyPipelineRun \
--pipeline-type export \
--storage-blob $MyBlob \
--artifacts hello-world:latest hello-world@sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042 \
--force-redeploy
При повторном развертывании ресурса PipelineRun с идентичными свойствами необходимо использовать флаг --force-redeploy.
Экспорт артефактов может занять несколько минут. После успешного завершения развертывания проверьте экспорт артефактов, убедившись, что экспортированный блоб присутствует в контейнере исходной учетной записи хранения. Например, выполните команду az storage blob list:
az storage blob list --account-name $MyStorageAccount --container $MyContainer --output table
Передача BLOB между доменами
В большинстве случаев вы будете использовать решение для междоменного взаимодействия или другой метод для передачи вашего блоба из учетной записи хранения в исходном домене (учетная запись хранения, связанная с экспортным конвейером) в учетную запись хранения в целевом домене (учетная запись хранения, связанная с импортным конвейером). На этом этапе предполагается, что объект BLOB прибыл в целевую учетную запись хранилища в домене, связанную с импортной конвейерной линией.
Триггер ресурса ImportPipeline
Если вы не использовали параметр --source-trigger-enabled False при создании конвейера импорта, то конвейер запустится в течение 15 минут после поступления blob в контейнер учетной записи хранения. Импорт артефактов может занять несколько минут. После успешного завершения импорта проверьте импорт артефактов, перечислив теги в репозитории, который вы импортируете в целевом реестре контейнеров. Например, выполните az acr repository show-tags:
az acr repository show-tags --name $MyRegistry --repository $MyRepository
Замечание
Триггер источника будет импортировать только БЛОБы, измененные за последние 60 дней. Если вы планируете использовать Source Trigger для импорта BLOB-объектов, которые старше этого срока, обновите время их последнего изменения, добавив к ним метаданные, или импортируйте их с помощью вручную созданных запусков конвейера.
При использовании параметра --source-trigger-enabled False при создании ImportPipeline следует вручную создать PipelineRun, как показано в следующем разделе.
Создайте PipelineRun для импорта, используя расширение Azure CLI acrtransfer.
Создайте ресурс PipelineRun для реестра контейнеров с помощью расширения acrtransfer Az CLI. Этот ресурс запускает созданный вами ранее ресурс ImportPipeline и импортирует указанные блобы из вашей учетной записи хранения в реестр контейнеров.
Создайте конвейер импорта:
az acr pipeline-run create \
--resource-group $MyRG \
--registry $MyReg \
--pipeline $MyPipeline \
--name $MyPipelineRun \
--pipeline-type import \
--storage-blob $MyBlob \
--force-redeploy
При повторном развертывании ресурса PipelineRun с идентичными свойствами необходимо использовать флаг --force-redeploy.
Импорт артефактов может занять несколько минут. После успешного завершения процесса проверьте, как прошел импорт артефактов. Для этого выведите список репозиториев в целевом реестре контейнеров. Выполните, например, команду az acr repository show-tags:
az acr repository show-tags --name $MyRegistry --repository $MyRepository
Удалить ресурсы передачи ACR
Удаление ExportPipeline:
az acr export-pipeline delete --resource-group $MyRG --registry $MyReg --name $MyPipeline
Удаление ImportPipeline:
az acr import-pipeline delete --resource-group $MyRG --registry $MyReg --name $MyPipeline
Удаление ресурса PipelineRun. Обратите внимание, что это не отменяет действие, выполненное PipelineRun. Это больше похоже на удаление журнала PipelineRun.
az acr pipeline-run delete --resource-group $MyRG --registry $MyReg --name $MyPipelineRun
Устранение неполадок при передаче ACR
Ознакомьтесь с руководством по устранению неполадок с ACR Transfer.
Дальнейшие шаги
- Узнайте, как заблокировать возможность создания конвейеров экспорта из ограниченного сетью реестра контейнеров.