Déplacer manuellement un registre de conteneurs vers une autre région

Vous devrez peut-être déplacer un registre de conteneurs Azure d’une région Azure vers une autre. Par exemple, vous pouvez exécuter un pipeline de développement ou héberger une nouvelle cible de déploiement dans une autre région et vous souhaitez fournir un registre proche.

Alors qu' Azure Resource Mover ne peut actuellement pas automatiser un déplacement pour un registre de conteneurs Azure, vous pouvez déplacer manuellement un registre de conteneurs vers une autre région :

  • Exporter les paramètres de registre dans un modèle Resource Manager
  • Utiliser le modèle pour déployer un registre dans une autre région Azure
  • Importer le contenu du registre à partir du registre source vers le registre cible

Notes

Si vous avez besoin de distribuer des images conteneur identiques dans plusieurs régions Azure, Azure Container Registry prend également en charge la géoréplication. En géoréplicant un registre (niveau de service Premium requis), vous pouvez servir plusieurs régions avec des noms d’image et d’étiquette identiques à partir d’un seul registre.

Prérequis

Azure CLI

Considérations

  • Suivez les étapes de cet article pour déplacer le registre vers une autre région dans le même abonnement. Une configuration supplémentaire peut être nécessaire pour déplacer un registre vers un autre abonnement Azure dans le même locataire Active Directory.
  • L’exportation et l’utilisation d’un modèle de Gestionnaire des ressources peuvent vous aider à recréer de nombreux paramètres du registre. Vous pouvez modifier le modèle pour configurer des paramètres supplémentaires ou mettre à jour le registre cible après sa création.
  • Actuellement, Azure Container Registry ne prend pas en charge le déplacement d’un registre vers un autre locataire Active Directory. Cette limitation s’applique à la fois aux registres chiffrés avec une clé gérée par le client et aux registres non chiffrés.
  • Si vous ne parvenez pas à déplacer un registre de la manière décrite dans cet article, créez un nouveau registre, recréez manuellement les paramètres et importez le contenu du registre dans le registre cible.
  • Vous trouverez les étapes à suivre pour déplacer des ressources de registre vers un nouveau groupe de ressources dans le même abonnement ou déplacer des ressources vers un nouvel abonnement.

Exporter le modèle à partir du registre source

utilisez le portail Azure, Azure CLI, Azure PowerShell ou d’autres outils Azure pour exporter un modèle de Gestionnaire des ressources. Pour utiliser le portail Azure :

  1. Dans le portail Azure, accédez à votre registre source.

  2. Dans le menu, sous Automatisation, sélectionnez Exporter un modèle>Télécharger.

    Exporter le modèle pour le registre de conteneurs

Redéployer le registre cible dans une nouvelle région

Modifier un modèle

Examinez les propriétés du registre dans le modèle de fichier JSON que vous avez téléchargé et apportez les modifications nécessaires. Au minimum :

  • Remplacez le nom du registre par defaultValue le nom souhaité du registre cible.
  • Mettez à jour le location vers la région Azure souhaitée pour le registre cible.
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "registries_myregistry_name": {
            "defaultValue": "myregistry",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.ContainerRegistry/registries",
            "apiVersion": "2020-11-01-preview",
            "name": "[parameters('myregistry_name')]",
            "location": "centralus",
        ...
        }
    ]
}

Pour plus d’informations, voir Utiliser un modèle exporté à partir du portail Azure et la référence de modèle.

Important

Si vous souhaitez chiffrer le registre cible à l’aide d’une clé gérée par le client, assurez-vous de mettre à jour le modèle avec les paramètres de l’identité gérée, du coffre de clés et de la clé requis. Vous ne pouvez activer la clé gérée par le client que lorsque vous déployez le registre.

Pour plus d’informations, consultez Chiffrer un registre à l’aide d’une clé gérée par le client.

Créer un groupe de ressources

Créez un groupe de ressources pour le registre cible avec la commande az group create. L’exemple suivant crée un groupe de ressources nommé myResourceGroup à l’emplacement eastus.

az group create --name myResourceGroup --location eastus

Déployer le registre cible dans une nouvelle région

Utilisez la commande az deployment group create pour déployer le registre cible à l’aide du modèle :

az deployment group create --resource-group myResourceGroup \
   --template-file template.json --name mydeployment

Notes

Si vous constatez des erreurs au cours du déploiement, vous devrez peut-être mettre à jour certaines configurations dans le fichier de modèle et relancer la commande.

Importer le contenu du registre dans le registre cible

Après avoir créé le registre dans la région cible, utilisez la commande az acr import ou la commande PowerShell équivalente Import-AzContainerImage pour importer les images et autres artefacts que vous souhaitez conserver du registre source vers le registre cible. Pour obtenir des exemples de commande, consultez Importation d’images conteneur dans un registre de conteneurs.

  • Utilisez les commandes Azure CLI az acr repository list et az acr repository show-tags ou Azure PowerShell équivalentes pour vous aider à énumérer le contenu de votre registre source.
  • Exécutez la commande d’importation pour des artefacts individuels ou scriptez-la pour qu’elle s’exécute sur une liste d’artefacts.

L’exemple suivant de script Azure CLI énumère les référentiels source et les balises, puis importe les artefacts dans un registre cible au sein du même abonnement Azure. Apportez les modifications nécessaires pour importer des référentiels ou des balises spécifiques. Pour importer à partir d’un registre dans un autre abonnement ou locataire, consultez les exemples dans Importer des images de conteneur dans un registre de conteneurs.

#!/bin/bash
# Modify registry names for your environment
SOURCE_REG=myregistry
TARGET_REG=targetregistry

# Get list of source repositories
REPO_LIST=$(az acr repository list \
    --name $SOURCE_REG --output tsv)

# Enumerate tags and import to target registry
for repo in $REPO_LIST; do
    TAGS_LIST=$(az acr repository show-tags --name $SOURCE_REG --repository $repo --output tsv);
    for tag in $TAGS_LIST; do
        echo "Importing $repo:$tag";
        az acr import --name $TARGET_REG --source $SOURCE_REG.azurecr.io/$repo":"$tag;
    done
done

Vérifier le registre cible

Vérifiez les informations suivantes dans votre registre cible :

  • Paramètres du registre tels que le nom du registre, le niveau de service, l’accès public et les réplications
  • Référentiels et balises pour le contenu que vous souhaitez conserver.

Configuration supplémentaire

  • Si nécessaire, configurez manuellement les paramètres dans le registre cible, tels que les points de terminaison privés, les règles d’accès IP et les identités gérées.

  • Mettez à jour les systèmes de développement et de déploiement pour utiliser le registre cible au lieu du registre source.

  • Mettez à jour les règles de pare-feu du client pour autoriser l’accès au registre cible.

Supprimer le registre d’origine

Une fois que vous avez déployé avec succès le registre cible, migré le contenu et vérifié les paramètres de registre, vous pouvez supprimer le registre source.

Étapes suivantes