Partager via


Transférer des artefacts vers un autre registre

Cet article décrit comment transférer des collections d’images ou d’autres artefacts de registre d’un registre de conteneurs Azure vers un autre registre. Les registres source et cible peuvent se trouver dans des abonnements, des locataires Active Directory, des clouds Azure identiques ou différents, ou des clouds physiquement déconnectés.

Pour transférer des artefacts, vous créez un pipeline de transfert qui réplique les artefacts entre deux registres en utilisant un stockage d’objets blob :

  • Les artefacts d’un registre source sont exportés vers un objet blob dans un compte de stockage source
  • L’objet blob est copié du compte de stockage source vers un compte de stockage cible
  • L’objet blob du compte de stockage cible est importé sous forme d’artefacts dans le registre cible. Vous pouvez configurer le pipeline d’importation de sorte qu’il se déclenche dès que l’objet blob d’artefact est mis à jour dans le stockage cible.

Dans cet article, vous allez créer les ressources requises pour créer et exécuter le pipeline de transfert. Azure CLI est utilisé pour approvisionner les ressources associées telles que les secrets de stockage. Azure CLI version 2.2.0 ou supérieure est recommandé. Si vous devez installer ou mettre à niveau l’interface CLI, consultez l’article Installer Azure CLI 2.0.

Cette fonctionnalité est disponible uniquement au niveau de service Premium de registre de conteneurs. Pour plus d’informations sur les niveaux de service et les limites de registre, consultez Niveaux de service Azure Container Registry.

Important

Actuellement, cette fonctionnalité est uniquement disponible en tant que version préliminaire. Les préversions sont à votre disposition, à condition que vous acceptiez les conditions d’utilisation supplémentaires. Certains aspects de cette fonctionnalité sont susceptibles d’être modifiés avant la mise à disposition générale.

Tenir compte de son cas d’usage

Le transfert est idéal pour copier du contenu entre deux registres de conteneurs Azure situés dans des clouds physiquement déconnectés, par le biais de comptes de stockage situés dans chaque cloud. Si, à la place, vous voulez copier des images à partir de registres de conteneurs situés dans des clouds connectés, notamment Docker Hub et d’autres fournisseurs de cloud, il est recommandé d’utiliser l’importation d’image.

Prérequis

  • Registres de conteneurs - Vous devez avoir un registre source existant avec des artefacts à transférer, ainsi qu’un registre cible. Le transfert ACR est destiné au déplacement entre des clouds physiquement déconnectés. Pour le test, les registres source et cible peuvent être dans des abonnements Azure, des locataires Active Directory ou des clouds identiques ou différents.

    Si vous devez créer un registre, consultez Démarrage rapide : Créer un registre de conteneurs privé avec Azure CLI.

  • Comptes de stockage - Créez des comptes de stockage source et cible dans un abonnement ou un emplacement de votre choix. À des fins de test, vous pouvez utiliser le ou les même(s) abonnement(s) comme registres source et cible. Pour les scénarios entre différents clouds, vous créez généralement un compte de stockage distinct dans chaque cloud.

    Si nécessaire, créez les comptes de stockage avec Azure CLI ou d’autres outils.

    Créez un conteneur d’objets blob pour le transfert d’artefacts dans chaque compte. Par exemple, créez un conteneur nommé transfert.

  • Coffres de clés - Des coffres de clés sont nécessaires pour stocker les secrets de jetons SAS utilisés pour accéder aux comptes de stockage source et cible. Créez les coffres de clés source et cible dans le ou les même(s) abonnement(s) Azure que vos registres source et cible. À des fins de démonstration, les modèles et les commandes utilisés dans cet article supposent également que les coffres de clés source et cible se trouvent dans les mêmes groupes de ressources que les registres source et cible, respectivement. Cette utilisation de groupes de ressources communs n’est pas obligatoire, mais elle simplifie les modèles et les commandes utilisés dans cet article.

    Si nécessaire, créez les coffres de clés avec Azure CLI ou d’autres outils.

  • Variables d’environnement - Pour les exemples de commandes dans cet article, définissez les variables d’environnement suivantes pour les environnements source et cible. Tous les exemples sont mis en forme pour l’interpréteur de commandes 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>"
    

Présentation du scénario

Vous créez les trois ressources de pipeline suivantes pour le transfert d’images entre registres. Elles sont toutes créées à l’aide d’opérations PUT. Ces ressources fonctionnent sur vos comptes de stockage et registres source et cible.

L’authentification du stockage utilise des jetons SAS, gérés en tant que secrets dans les coffres de clés. Les pipelines utilisent des identités gérées pour lire les secrets dans les coffres.

  • ExportPipeline - Ressource durable contenant des informations de niveau supérieur sur le compte de stockage et le registre sources. Ces informations incluent l’URI du conteneur d’objets blob du stockage source et le coffre de clés qui gère le jeton SAS source.
  • ImportPipeline - Ressource durable contenant des informations de niveau supérieur sur le compte de stockage et le registre cibles. Ces informations incluent l’URI du conteneur d’objets blob du stockage cible et le coffre de clés qui gère le jeton SAS cible. Un déclencheur d’importation étant activé par défaut, le pipeline s’exécute automatiquement lorsqu’un objet blob d’artefact arrive dans le conteneur de stockage cible.
  • PipelineRun - Ressource utilisée pour appeler une ressource ExportPipeline ou ImportPipeline.
    • Vous exécutez ExportPipeline manuellement en créant une ressource PipelineRun et spécifiez les artefacts à exporter.
    • Si un déclencheur d’importation est activé, ImportPipeline s’exécute automatiquement. Il peut également être exécuté manuellement en utilisant un PipelineRun.
    • Actuellement, un maximum de 50 artefacts peuvent être transférés avec chaque PipelineRun.

À savoir

  • Les ressources ExportPipeline et ImportPipeline se trouvent généralement dans des locataires Active Directory différents associés aux clouds source et de destination. Ce scénario nécessite des identités gérées et des coffres de clés distincts pour les ressources d’exportation et d’importation. À des fins de test, ces ressources peuvent être placées dans le même cloud et partager les identités.
  • Par défaut, les modèles ExportPipeline et ImportPipeline permettent chacun à une identité managée attribuée par le système d’accéder aux secrets du coffre de clés. Les modèles ExportPipeline et ImportPipeline prennent également en charge une identité attribuée par l’utilisateur que vous fournissez.

Créer et stocker des clés SAS

Le transfert utilise des jetons de signature d’accès partagé (SAS) pour accéder aux comptes de stockage dans les environnements source et cible. Générez et stockez les jetons selon les indications fournies dans les sections suivantes.

Important

Bien que le transfert ACR fonctionne avec un jeton SAP généré manuellement et stocké dans un secret Key Vault, pour les charges de travail de production, nous recommandons fortement d’utiliser plutôt des secrets de définition SAP de stockage gérés par Key Vault.

Générer un jeton SAS pour l’exportation

Exécutez la commande az storage container generate-sas pour générer un jeton SAS pour le conteneur du compte de stockage source, utilisé pour l’exportation d’artefacts.

Autorisations de jeton recommandées : Lire, Écrire, Répertorier, Ajouter.

Dans l’exemple suivant, la sortie de la commande est attribuée à la variable d’environnement EXPORT_SAS, précédée du caractère « ? ». Mettez à jour la valeur --expiry de votre environnement :

EXPORT_SAS=?$(az storage container generate-sas \
  --name transfer \
  --account-name $SOURCE_SA \
  --expiry 2021-01-01 \
  --permissions alrw \
  --https-only \
  --output tsv)

Stocker un jeton SAS pour l’exportation

Stockez le jeton SAS dans votre coffre de clés Azure source à l’aide de la commande az keyvault secret set :

az keyvault secret set \
  --name acrexportsas \
  --value $EXPORT_SAS \
  --vault-name $SOURCE_KV

Générer un jeton SAS pour l’importation

Exécutez la commande az storage container generate-sas pour générer un jeton SAS pour le conteneur du compte de stockage cible, utilisé pour l’importation d’artefacts.

Autorisations de jeton recommandées : Lire, Supprimer, Répertorier

Dans l’exemple suivant, la sortie de la commande est attribuée à la variable d’environnement IMPORT_SAS, précédée du caractère « ? ». Mettez à jour la valeur --expiry de votre environnement :

IMPORT_SAS=?$(az storage container generate-sas \
  --name transfer \
  --account-name $TARGET_SA \
  --expiry 2021-01-01 \
  --permissions dlr \
  --https-only \
  --output tsv)

Stocker un jeton SAS pour l’importation

Stockez le jeton SAS dans votre coffre de clés Azure cible à l’aide de la commande az keyvault secret set :

az keyvault secret set \
  --name acrimportsas \
  --value $IMPORT_SAS \
  --vault-name $TARGET_KV

Étapes suivantes