Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
ACR Transfer permite transferir imágenes de contenedor y artefactos OCI entre registros de contenedor de Azure utilizando una cuenta de almacenamiento intermedia, lo que lo hace ideal para escenarios aislados y de nube cruzada. Para obtener información general sobre la característica, consulte Transferencia de artefactos a otro registro.
En este artículo se muestra cómo usar la característica Transferencia de ACR con la extensión acrtransfer de la CLI de Az.
Realización de los requisitos previos
Complete los requisitos previos descritos en requisitos previos de ACR Transfer antes de intentar las acciones de este artículo. Esto significa que:
- Ya tiene un registro de SKU prémium existente en ambas nubes.
- Tiene un contenedor de cuenta de almacenamiento en ambas nubes.
- Si usa el modo de acceso al almacenamiento de tokens de SAS , asegúrese de tener un almacén de claves existente con un secreto que contenga un token de SAS válido con los permisos necesarios en ambas nubes.
- Si usa el modo de acceso de almacenamiento Managed Identity, asegúrese de que la identidad administrada de la canalización tenga el rol RBAC adecuado (por ejemplo,
Storage Blob Data Contributor) en la cuenta de almacenamiento. - Tiene una versión reciente de la CLI de Azure instalada en ambas nubes.
ACR Transfer admite dos modos de acceso de almacenamiento: token de SAS e identidad administrada. Debe especificar el modo que se va a usar a través del --storage-access-mode parámetro al crear canalizaciones. Para obtener una comparación detallada, consulte Modos de acceso de almacenamiento.
Nota:
El --storage-access-mode parámetro requiere la versión 2.0.0 o posterior de la extensión acrtransfer de la CLI de Azure. Si usa una versión anterior, actualice con az extension update --name acrtransfer.
Importante
ACR Transfer admite artefactos con tamaños de capa de hasta 8 GB debido a limitaciones técnicas.
Instalación de la extensión de la CLI de Az
En AzureCloud, puede instalar la extensión con el siguiente comando:
az extension add --name acrtransfer
Creación de ExportPipeline con la extensión acrtransfer de la CLI de Az
Cree un recurso ExportPipeline para el registro de contenedor de AzureCloud mediante la extensión acrtransfer de la CLI de Az.
Modo de token de SAS
Cree una canalización de exportación con el modo de acceso al almacenamiento de tokens de SAS, sin opciones ni una identidad asignada por el sistema:
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 \
--storage-access-mode SasToken
Cree una canalización de exportación con el modo token de SAS, todas las opciones posibles y una identidad asignada por el usuario:
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 \
--storage-access-mode SasToken \
--options OverwriteBlobs ContinueOnErrors \
--assign-identity /subscriptions/$MySubID/resourceGroups/$MyRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$MyIdentity
Modo de identidad administrada
Al usar el modo de acceso de almacenamiento de identidad administrada, la canalización se autentica directamente en la cuenta de almacenamiento mediante la identidad administrada de Entra de la canalización. No se requiere ningún token de Key Vault o SAS para el acceso al almacenamiento.
Cree una canalización de exportación con el modo identidad administrada y una identidad asignada por el sistema:
az acr export-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer \
--storage-access-mode ManagedIdentity
Cree una canalización de exportación con el modo identidad administrada, todas las opciones posibles y una identidad asignada por el usuario:
az acr export-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer \
--storage-access-mode ManagedIdentity \
--options OverwriteBlobs ContinueOnErrors \
--assign-identity /subscriptions/$MySubID/resourceGroups/$MyRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$MyIdentity
Importante
Al usar el modo Identidad Administrada, no debe proporcionar el--secret-uri parámetro. El --secret-uri parámetro solo se usa con el modo token de SAS.
Opciones de exportación
La propiedad options para las canalizaciones de exportación admite valores booleanos opcionales. Se recomiendan los siguientes valores:
| Parámetro | Importancia |
|---|---|
| opciones | OverwriteBlobs: sobrescribe los blobs de destino existentes ContinueOnErrors: continúa la exportación de artefactos restantes en el registro de origen si se produce un error en la exportación de un artefacto. |
Provisión de acceso a la directiva de almacén de claves de identidad de ExportPipeline
Nota:
Esta sección solo se aplica cuando se usa el modo de acceso al almacenamiento de tokens de SAS . Si usa el modo de acceso de almacenamiento de identidad administrada, omita esta sección y asegúrese de que la identidad administrada de la canalización tenga el rol RBAC adecuado (por ejemplo, Storage Blob Data Contributor) en la cuenta de almacenamiento.
Si ha creado la canalización con una identidad asignada por el usuario, simplemente asígnele a esta permisos de directiva de acceso secret get.
Si creó la canalización con una identidad asignada por el sistema, primero deberá recuperar el principalId que el sistema ha asignado al recurso de canalización.
Ejecute el siguiente comando para recuperar el recurso de canalización:
az acr export-pipeline show --resource-group $MyRG --registry $MyReg --name $MyPipeline
A partir de esta salida, querrá copiar el valor en el campo principalId.
A continuación, ejecutará el siguiente comando para conceder a esta entidad de seguridad los permisos de directiva de acceso secret get adecuados en el almacén de claves.
az keyvault set-policy --name $MyKeyvault --secret-permissions get --object-id $MyPrincipalID
Creación de ImportPipeline con la extensión acrtransfer de la CLI de Az
Cree un recurso ImportPipeline en el registro de contenedor de destino mediante la extensión acrtransfer de la CLI de Az. De forma predeterminada, la canalización está habilitada para crear un recurso Import PipelineRun automáticamente cuando el contenedor de la cuenta de almacenamiento asociada recibe un nuevo blob de artefacto.
Modo de token de SAS
Cree una canalización de importación con el modo de acceso al almacenamiento de tokens de SAS, sin opciones ni una identidad asignada por el sistema:
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 \
--storage-access-mode SasToken
Cree una canalización de importación con el modo token de SAS, todas las opciones posibles, el desencadenador de origen deshabilitado y una identidad asignada por el usuario:
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 \
--storage-access-mode SasToken \
--options DeleteSourceBlobOnSuccess OverwriteTags ContinueOnErrors \
--assign-identity /subscriptions/$MySubID/resourceGroups/$MyRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$MyIdentity \
--source-trigger-enabled False
Modo de identidad administrada
Al usar el modo de acceso de almacenamiento de identidad administrada, la canalización se autentica directamente en la cuenta de almacenamiento mediante la identidad administrada de Entra de la canalización. No se requiere ningún token de Key Vault o SAS para el acceso al almacenamiento.
Cree una canalización de importación con el modo identidad administrada y una identidad asignada por el sistema:
az acr import-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer \
--storage-access-mode ManagedIdentity
Cree una canalización de importación con el modo identidad administrada, todas las opciones posibles, el desencadenador de origen deshabilitado y una identidad asignada por el usuario:
az acr import-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer \
--storage-access-mode ManagedIdentity \
--options DeleteSourceBlobOnSuccess OverwriteTags ContinueOnErrors \
--assign-identity /subscriptions/$MySubID/resourceGroups/$MyRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$MyIdentity \
--source-trigger-enabled False
Importante
Al usar el modo de identidad administrada, no proporcione el parámetro --secret-uri. El --secret-uri parámetro solo se usa con el modo token de SAS.
Opciones de importación
La propiedad options para las canalizaciones de importación admite valores booleanos opcionales. Se recomiendan los siguientes valores:
| Parámetro | Importancia |
|---|---|
| opciones | OverwriteTags: sobrescribe las etiquetas de destino existentes DeleteSourceBlobOnSuccess: elimina el blob de almacenamiento de origen después de la importación correcta en el registro de destino ContinueOnErrors: continúa la importación de artefactos restantes en el registro de destino si se produce un error en la importación de un artefacto. |
Provisión de acceso a la directiva de almacén de claves de identidad de ImportPipeline
Nota:
Esta sección solo se aplica cuando se usa el modo de acceso al almacenamiento de tokens de SAS . Si usa el modo de acceso de almacenamiento de identidad administrada, omita esta sección y asegúrese de que la identidad administrada de la canalización tenga el rol RBAC adecuado (por ejemplo, Storage Blob Data Contributor) en la cuenta de almacenamiento.
Si ha creado la canalización con una identidad asignada por el usuario, simplemente asígnele a esta permisos de directiva de acceso secret get.
Si creó la canalización con una identidad asignada por el sistema, primero deberá recuperar el principalId que el sistema ha asignado al recurso de canalización.
Ejecute el siguiente comando para recuperar el recurso de canalización:
az acr import-pipeline show --resource-group $MyRG --registry $MyReg --name $MyPipeline
A partir de esta salida, querrá copiar el valor en el campo principalId.
A continuación, ejecutará el siguiente comando para proporcionar a esta entidad de seguridad la directiva de acceso secret get adecuada en el almacén de claves.
az keyvault set-policy --name $MyKeyvault --secret-permissions get --object-id $MyPrincipalID
Creación de PipelineRun para la exportación con la extensión acrtransfer de la CLI de Az
Cree un recurso PipelineRun para el registro de contenedor mediante la extensión acrtransfer de la CLI de Az. Este recurso ejecuta el recurso ExportPipeline que creó anteriormente y exporta los artefactos especificados desde el registro de contenedor como un blob al contenedor de la cuenta de almacenamiento.
Cree una ejecución de canalización de exportación:
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
Si vuelve a implementar un recurso PipelineRun con propiedades idénticas, debe usar la marca --force-redeploy.
Registro de autenticación de ejecución de la canalización
Cuando se ejecuta una ejecución de canalización, la CLI muestra un mensaje de registro que indica qué método de autenticación se usa para acceder a la cuenta de almacenamiento. Esto ayuda a confirmar si la canalización usa la identidad administrada o la autenticación de token de SAS:
Authenticating to Storage Account using Entra Managed Identity.
o
Authenticating to Storage Account using Storage SAS Token.
Los artefactos pueden tardar varios minutos en exportarse. Cuando la implementación se complete correctamente, compruebe la exportación de artefactos enumerando el blob exportado en el contenedor de la cuenta de almacenamiento de origen. Por ejemplo, ejecute el comando az storage blob list:
az storage blob list --account-name $MyStorageAccount --container-name $MyContainer --output table
Transferencia de blobs entre dominios
En la mayoría de los casos de uso, ahora usará una solución entre dominios u otro método para transferir el blob desde la cuenta de almacenamiento del dominio de origen (la cuenta de almacenamiento asociada a la canalización de exportación) a la cuenta de almacenamiento del dominio de destino (la cuenta de almacenamiento asociada a la canalización de importación). En este momento, se supone que el blob ha llegado a la cuenta de almacenamiento de dominio de destino asociada a la canalización de importación.
Desencadenar recurso ImportPipeline
Si no usó el parámetro --source-trigger-enabled False al crear la canalización de importación, la canalización se activará dentro de 15 minutos después de que el blob llegue al contenedor de la cuenta de almacenamiento. Los artefactos pueden tardar varios minutos en importarse. Cuando la importación se complete correctamente, compruebe la importación de artefactos enumerando las etiquetas del repositorio que va a importar en el registro de contenedor de destino. Por ejemplo, ejecute az acr repository list:
az acr repository show-tags --name $MyRegistry --repository $MyRepository
Nota:
El desencadenador de origen solo importará blobs que tengan una hora de última modificación en los últimos 60 días. Si piensa usar Source Trigger para importar blobs anteriores a esa fecha, actualice la fecha de última modificación de los blobs añadiendo metadatos a los blobs o impórtelos con ejecuciones de pipeline creadas manualmente.
Si usó el parámetro --source-trigger-enabled False al crear ImportPipeline, deberá crear un PipelineRun manualmente, como se muestra en la siguiente sección.
Creación de PipelineRun para la importación con la extensión acrtransfer de la CLI de Az
Cree un recurso PipelineRun para el registro de contenedor mediante la extensión acrtransfer de la CLI de Az. Este recurso ejecuta el recurso ImportPipeline que creó anteriormente e importa los blobs especificados de la cuenta de almacenamiento en el registro de contenedor.
Cree una ejecución de canalización de importación:
az acr pipeline-run create \
--resource-group $MyRG \
--registry $MyReg \
--pipeline $MyPipeline \
--name $MyPipelineRun \
--pipeline-type import \
--storage-blob $MyBlob \
--force-redeploy
Si vuelve a implementar un recurso PipelineRun con propiedades idénticas, debe usar la marca --force-redeploy.
Los artefactos pueden tardar varios minutos en importarse. Cuando la importación finalice correctamente, compruebe la importación de artefactos; para ello, registre los repositorios en el registro de contenedor de destino. Por ejemplo, ejecute az acr repository list:
az acr repository show-tags --name $MyRegistry --repository $MyRepository
Eliminación de recursos de transferencia de ACR
Elimine un recurso ExportPipeline:
az acr export-pipeline delete --resource-group $MyRG --registry $MyReg --name $MyPipeline
Elimine un recurso ImportPipeline:
az acr import-pipeline delete --resource-group $MyRG --registry $MyReg --name $MyPipeline
Elimine un recurso PipelineRun. Tenga en cuenta que esto no invierte la acción realizada por PipelineRun. Es más parecido a eliminar el registro de PipelineRun.
az acr pipeline-run delete --resource-group $MyRG --registry $MyReg --name $MyPipelineRun
Solución de problemas de transferencia de ACR
Consulte Solución de problemas de transferencia de ACR para obtener instrucciones de solución de problemas.
Pasos siguientes
- Obtenga información sobre cómo bloquear la creación de canalizaciones de exportación desde un registro de contenedor restringido por red.