Transfert ACR avec l’interface CLI Az
Cet article explique comment utiliser la fonctionnalité Transfert ACR avec l’extension CLI Az acrtransfer.
Répondre aux prérequis
Veuillez remplir les conditions préalables décrites ici avant de tenter d’effectuer les actions décrites dans cet article. Cela signifie que :
- Vous avez un registre de niveau tarifaire Premium existant dans les deux clouds.
- Vous avez un conteneur de compte de stockage existant dans les deux clouds.
- Vous avez un coffre de clés existant avec un secret contenant un jeton SAP valide avec les autorisations nécessaires dans les deux clouds.
- Une version récente de l’interface CLI Az est installée dans les deux clouds.
Installer l’extension CLI Az
Dans AzureCloud, vous pouvez installer l’extension à l’aide de la commande suivante :
az extension add --name acrtransfer
Dans AzureCloud et d’autres clouds, vous pouvez installer le blob directement à partir d’un conteneur de compte de stockage public. Le blob est hébergé dans le compte de stockage acrtransferext
, conteneur dist
, blob acrtransfer-1.0.0-py2.py3-none-any.wh
. Vous devrez peut-être modifier le suffixe de l’URI de stockage en fonction du cloud dans lequel vous vous trouvez. Les éléments suivants sont installés dans AzureCloud :
az extension add --source https://acrtransferext.blob.core.windows.net/dist/acrtransfer-1.0.0-py2.py3-none-any.whl
Créer ExportPipeline avec l’extension CLI Az acrtransfer
Créez une ressource ExportPipeline pour votre registre de conteneurs AzureCloud à l’aide de l’extension CLI Az acrtransfer.
Créez un pipeline d’exportation sans options et avec une identité affectée par le système :
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
Créez un pipeline d’exportation avec toutes les options possibles et une identité affectée par l’utilisateur :
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 d'exportation
La propriété options
pour les pipelines d’exportation prend en charge les valeurs booléennes facultatives. Les valeurs suivantes sont recommandées :
Paramètre | Valeur |
---|---|
options | OverwriteBlobs - Remplacer les objets blob cibles existants ContinueOnErrors - Continuer l’exportation des artefacts restants dans le registre source en cas d’échec d’une exportation d’artefacts. |
Accorder à l’identité ExportPipeline un accès à la stratégie sur le coffre de clés
Si vous avez créé votre pipeline avec une identité affectée par l’utilisateur, accordez simplement à cette identité affectée par l’utilisateur des autorisations de stratégie d’accès secret get
sur le coffre de clés.
Si vous avez créé votre pipeline avec une identité affectée par le système, vous devez d’abord récupérer le principalId que le système a attribué à votre ressource de pipeline.
Exécutez la commande suivante pour récupérer votre ressource de pipeline :
az acr export-pipeline show --resource-group $MyRG --registry $MyReg --name $MyPipeline
À partir de cette sortie, vous pouvez copier la valeur dans le champ principalId
.
Ensuite, vous exécuterez la commande suivante pour accorder à ce principal les autorisations de stratégie d’accès secret get
appropriées sur votre coffre de clés.
az keyvault set-policy --name $MyKeyvault --secret-permissions get --object-id $MyPrincipalID
Créer ImportPipeline avec l’extension CLI Az acrtransfer
Créez une ressource ImportPipeline dans le registre de conteneurs cible à l’aide de l’extension CLI Az acrtransfer. Par défaut, le pipeline est activé pour créer une ressource Import PipelineRun automatiquement lorsque le conteneur de compte de stockage attaché reçoit un nouveau blob d’artefact.
Créez un pipeline d’importation sans options et avec une identité affectée par le système :
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
Créez un pipeline d’importation avec toutes les options possibles, le déclencheur source désactivé et une identité affectée par l’utilisateur :
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 d’importation
La propriété options
pour le pipeline d’importation prend en charge les valeurs booléennes facultatives. Les valeurs suivantes sont recommandées :
Paramètre | Valeur |
---|---|
options | OverwriteBlobs - Remplacer les balises cibles existantes DeleteSourceBlobOnSuccess - Supprimer l’objet blob de stockage source après une importation réussie dans le registre cible ContinueOnErrors - Continuer l’importation des artefacts restants dans le registre cible en cas d’échec d’une importation d’artefacts. |
Accorder à l’identité ImportPipeline un accès à la stratégie sur le coffre de clés
Si vous avez créé votre pipeline avec une identité affectée par l’utilisateur, accordez simplement à cette identité affectée par l’utilisateur des autorisations de stratégie d’accès secret get
sur le coffre de clés.
Si vous avez créé votre pipeline avec une identité affectée par le système, vous devez d’abord récupérer le principalId que le système a attribué à votre ressource de pipeline.
Exécutez la commande suivante pour récupérer votre ressource de pipeline :
az acr import-pipeline show --resource-group $MyRG --registry $MyReg --name $MyPipeline
À partir de cette sortie, vous pouvez copier la valeur dans le champ principalId
.
Ensuite, vous exécuterez la commande suivante pour accorder à ce principal la stratégie d’accès secret get
appropriée sur votre coffre de clés.
az keyvault set-policy --name $MyKeyvault --secret-permissions get --object-id $MyPrincipalID
Créer un PipelineRun pour l’exportation avec l’extension CLI Az acrtransfer
Créez une ressource PipelineRun pour votre registre de conteneurs à l’aide de l’extension CLI Az acrtransfer. Cette ressource exécute la ressource ExportPipeline que vous avez créée précédemment et exporte les artefacts spécifiés de votre registre de conteneurs en tant que blob vers votre conteneur de compte de stockage.
Créez un pipeline-run d’exportation :
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 vous redéployez une ressource PipelineRun avec des propriétés identiques, vous devez utiliser l’indicateur --force-redeploy.
L’exportation des artefacts peut prendre plusieurs minutes. Une fois le déploiement terminé, vérifiez l’exportation des artefacts en répertoriant le blob exporté dans le conteneur du compte de stockage source. Par exemple, exécutez la commande az storage blob list :
az storage blob list --account-name $MyStorageAccount --container $MyContainer --output table
Transfert de blob entre domaines
Dans la plupart des cas d’usage, vous allez maintenant utiliser une solution interdomaine ou une autre méthode pour transférer votre blob du compte de stockage de votre domaine source (le compte de stockage associé à votre pipeline d’exportation) au compte de stockage de votre domaine cible (le compte de stockage associé à votre pipeline d’importation). À ce stade, nous supposons que le blob est arrivé dans le compte de stockage du domaine cible associé à votre pipeline d’importation.
Déclencher la ressource ImportPipeline
Si vous n’avez pas utilisé le paramètre --source-trigger-enabled False
lors de la création de votre pipeline d’importation, ce dernier sera déclenché dans les 15 minutes suivant l’arrivée du blob dans le conteneur du compte de stockage. L’importation des artefacts peut prendre plusieurs minutes. Une fois l’importation terminée, vérifiez l’importation des artefacts en listant les balises du référentiel que vous importez dans le registre du conteneur cible. Par exemple, exécutez az acr repository show-tags :
az acr repository show-tags --name $MyRegistry --repository $MyRepository
Notes
Le déclencheur source importe uniquement les blobs dont la date de dernière modification est inférieure à 60 jours. Si vous envisagez d’utiliser un déclencheur source pour importer des blobs, actualisez la date de dernière modification des blobs en y ajoutant des métadonnées de blob ou importez-les avec des exécutions de pipeline créées manuellement.
Si vous avez utilisé le paramètre --source-trigger-enabled False
lors de la création de votre ImportPipeline, vous allez devoir créer un PipelineRun manuellement, comme indiqué dans la section suivante.
Créer un PipelineRun pour l’importation avec l’extension CLI Az acrtransfer
Créez une ressource PipelineRun pour votre registre de conteneurs à l’aide de l’extension CLI Az acrtransfer. Cette ressource exécute la ressource ImportPipeline que vous avez créée précédemment et importe les blobs spécifiés de votre compte de stockage dans votre registre de conteneurs.
Créez un pipeline-run d’importation :
az acr pipeline-run create \
--resource-group $MyRG \
--registry $MyReg \
--pipeline $MyPipeline \
--name $MyPipelineRun \
--pipeline-type import \
--storage-blob $MyBlob \
--force-redeploy
Si vous redéployez une ressource PipelineRun avec des propriétés identiques, vous devez utiliser l’indicateur --force-redeploy.
L’importation des artefacts peut prendre plusieurs minutes. Une fois l’importation terminée, vérifiez l’importation des artefacts en dressant la liste des dépôts dans le registre de conteneurs cible. Par exemple, exécutez az acr repository show-tags :
az acr repository show-tags --name $MyRegistry --repository $MyRepository
Supprimer les ressources Transfert ACR
Supprimez un ExportPipeline :
az acr export-pipeline delete --resource-group $MyRG --registry $MyReg --name $MyPipeline
Supprimez un ImportPipeline :
az acr import-pipeline delete --resource-group $MyRG --registry $MyReg --name $MyPipeline
Supprimez une ressource PipelineRun. Notez que cela n’inverse pas l’action effectuée par PipelineRun. Cela ressemble davantage à la suppression du journal du PipelineRun.
az acr pipeline-run delete --resource-group $MyRG --registry $MyReg --name $MyPipelineRun
Résolution des problèmes liés à Transfert ACR
Consultez Résolution des problèmes liés à Transfert ACR pour obtenir une aide relative au dépannage.
Étapes suivantes
- Découvrez comment bloquer la création de pipelines d’exportation à partir d’un registre de conteneurs avec accès réseau restreint.