Transferir artefactos a otro registro
En este artículo se muestra cómo transferir colecciones de imágenes u otros artefactos del registro de un contenedor de Azure a otro registro. Los registros de origen y destino pueden estar en la misma suscripción o en distintas suscripciones, inquilinos de Active Directory, nubes de Azure o nubes físicamente desconectadas.
Para transferir artefactos, cree una canalización de transferencia que replique artefactos entre dos registros mediante Blob Storage:
- Los artefactos de un registro de origen se exportan a un blob en una cuenta de almacenamiento de origen
- El blob se copia de la cuenta de almacenamiento de origen a una cuenta de almacenamiento de destino
- El blob de la cuenta de almacenamiento de destino se importa como artefactos en el registro de destino. Puede configurar la canalización de importación para que se desencadene siempre que el blob del artefacto se actualice en el almacenamiento de destino.
En este artículo, creará los recursos de requisitos previos para crear y ejecutar la canalización de transferencia. La CLI de Azure se usa para aprovisionar los recursos asociados, como los secretos de almacenamiento. Se recomienda la CLI de Azure versión 2.2.0 o posterior. Si necesita instalarla o actualizarla, consulte Instalación de la CLI de Azure.
Esta característica está disponible en el nivel de servicio de un registro de contenedor Premium. Para obtener información sobre los límites y niveles de servicio de registro, consulte Niveles de Azure Container Registry.
Importante
Esta funcionalidad actualmente está en su versión preliminar. Las versiones preliminares están a su disposición con la condición de que acepte los términos de uso adicionales. Es posible que algunos de los aspectos de esta característica cambien antes de ofrecer disponibilidad general.
Tenga en cuenta su caso de uso
La transferencia es ideal para copiar contenido entre dos registros de contenedor de Azure en nubes físicamente desconectadas, administrada por las cuentas de almacenamiento en cada nube. Si, en su lugar, desea copiar imágenes de los registros de contenedor en nubes conectadas, incluido Docker Hub y otros proveedores en la nube, se recomienda la importación de imágenes.
Prerrequisitos
Registros de contenedor: necesita un registro de origen existente con artefactos para transferir y un registro de destino. La transferencia de ACR está pensada para el movimiento entre nubes físicamente desconectadas. Para las pruebas, los registros de origen y de destino pueden estar en la misma o en otra suscripción de Azure, inquilino de Active Directory o nube.
Si necesita crear un registro, consulte Inicio rápido: Creación de un registro de contenedor privado con la CLI de Azure.
Cuentas de almacenamiento: cree cuentas de almacenamiento de origen y de destino en una suscripción y ubicación de su elección. Con fines de prueba, puede usar la misma suscripción o suscripciones que los registros de origen y de destino. En el caso de escenarios entre nubes, normalmente se crea una cuenta de almacenamiento independiente en cada nube.
Si es necesario, cree las cuentas de almacenamiento con la CLI de Azure u otras herramientas.
Cree un contenedor de blobs para la transferencia de artefactos en cada cuenta. Por ejemplo, cree un contenedor denominado transfer.
Almacenes de claves: los almacenes de claves son necesarios para almacenar los secretos de token de SAS que se usan para tener acceso a las cuentas de almacenamiento de origen y de destino. Cree los almacenes de claves de origen y de destino en la misma suscripción o suscripciones de Azure que los registros de origen y de destino. Para demostraciones, las plantillas y los comandos que se usan en este artículo también suponen que los almacenes de claves de origen y de destino se encuentran en los mismos grupos de recursos que los registros de origen y de destino, respectivamente. Este uso de grupos de recursos comunes no es necesario, pero simplifica las plantillas y los comandos que se usan en este artículo.
Si es necesario, cree los almacenes de claves con la CLI de Azure u otras herramientas.
Variables de entorno: por ejemplo, los comandos de este artículo establecen las siguientes variables de entorno para los entornos de origen y de destino. Todos los ejemplos tienen el formato del shell de Bash.
SOURCE_RG="<source-resource-group>" TARGET_RG="<target-resource-group>" SOURCE_KV="<source-key-vault>" TARGET_KV="<target-key-vault>" SOURCE_SA="<source-storage-account>" TARGET_SA="<target-storage-account>"
Información general de escenario
Puede crear los siguientes tres recursos de canalización para la transferencia de imágenes entre los registros. Todos se crean mediante las operaciones PUT. Estos recursos operan en los registros y cuentas de almacenamiento de origen y destino.
La autenticación de almacenamiento usa tokens de SAS, administrados como secretos en los almacenes de claves. Las canalizaciones usan identidades administradas para leer los secretos de los almacenes.
- ExportPipeline : recurso duradero que contiene información de alto nivel sobre el registro y la cuenta de almacenamiento de origen. Esta información incluye el URI del contenedor de blobs de almacenamiento de origen y el almacén de claves que administra el token de SAS de origen.
- ImportPipeline : recurso duradero que contiene información de alto nivel sobre el registro y la cuenta de almacenamiento de destino. Esta información incluye el URI del contenedor de blobs de almacenamiento de destino y el almacén de claves que administra el token de SAS de destino. Un desencadenador de importación está habilitado de forma predeterminada, por lo que la canalización se ejecuta automáticamente cuando un blob de artefacto llega al contenedor de almacenamiento de destino.
- PipelineRun : recurso que se usa para invocar un recurso ExportPipeline o ImportPipeline.
- Para ejecutar el ExportPipeline manualmente, cree un recurso PipelineRun y especifique los artefactos que se van a exportar.
- Si se habilita un desencadenador de importación, el ImportPipeline se ejecuta automáticamente. También se puede ejecutar manualmente mediante un PipelineRun.
- Actualmente, un máximo de 50 artefactos se pueden transferir con cada PipelineRun.
Cosas que debe saber
- ExportPipeline e ImportPipeline normalmente estarán en distintos inquilinos de Active Directory asociados a las nubes de origen y de destino. Este escenario requiere identidades administradas independientes y almacenes de claves para los recursos de exportación e importación. Con fines de prueba, estos recursos se pueden colocar en la misma nube, compartiendo identidades.
- De forma predeterminada, las plantillas ExportPipeline e ImportPipeline permiten a una identidad administrada asignada por el sistema acceder a los secretos del almacén de claves. Las plantillas ExportPipeline e ImportPipeline también admiten la identidad asignada por el usuario que proporcione.
Creación y almacenamiento de claves SAS
La transferencia usa tokens de firma de acceso compartido (SAS) para tener acceso a las cuentas de almacenamiento en los entornos de origen y de destino. Genere y almacene los tokens tal como se describe en las secciones siguientes.
Importante
Aunque la transferencia de ACR funcionará con un token de SAS generado manualmente almacenado en un secreto de almacén de claves, para las cargas de trabajo de producción se recomienda encarecidamente usar los secretos de la definición de SAS de almacenamiento administrado del almacén de claves en su lugar.
Generar el token de SAS para la exportación
Ejecute el comando az storage container generate-sas para generar un token de SAS para el contenedor en la cuenta de almacenamiento de origen, que se usa para la exportación de artefactos.
Permisos de token recomendados: Lectura, escritura, lista, adición.
En el ejemplo siguiente, la salida del comando se asigna a la variable de entorno EXPORT_SAS, precedida del carácter "? ". Actualice el valor --expiry
del entorno:
EXPORT_SAS=?$(az storage container generate-sas \
--name transfer \
--account-name $SOURCE_SA \
--expiry 2021-01-01 \
--permissions alrw \
--https-only \
--output tsv)
Almacenar el token de SAS para la exportación
Almacene el token de SAS en el almacén de claves de Azure de origen con az keyvault secret set:
az keyvault secret set \
--name acrexportsas \
--value $EXPORT_SAS \
--vault-name $SOURCE_KV
Generar el token de SAS para la importación
Ejecute el comando az storage container generate-sas para generar un token de SAS para el contenedor en la cuenta de almacenamiento de destino, que se usa para la importación de artefactos.
Permisos de token recomendados: Lectura, eliminación, lista
En el ejemplo siguiente, la salida del comando se asigna a la variable de entorno IMPORT_SAS, precedida del carácter "? ". Actualice el valor --expiry
del entorno:
IMPORT_SAS=?$(az storage container generate-sas \
--name transfer \
--account-name $TARGET_SA \
--expiry 2021-01-01 \
--permissions dlr \
--https-only \
--output tsv)
Almacenar el token de SAS para la importación
Almacene el token de SAS en el almacén de claves de Azure de destino con az keyvault secret set:
az keyvault secret set \
--name acrimportsas \
--value $IMPORT_SAS \
--vault-name $TARGET_KV
Pasos siguientes
Siga uno de los tutoriales siguientes para crear los recursos de transferencia de ACR. Para la mayoría de los casos de uso no automatizados, se recomienda usar la extensión de la CLI de Az.