Partager via


Déplacer un Azure Container Registry vers une autre région

Cet article vous montre comment déplacer des ressources Azure Container Registry vers une autre région dans le même abonnement du locataire Active Directory.

Remarque

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

Considérations sur les points de terminaison de service

Les points de terminaison de service de réseau virtuel pour Azure Container Registry limitent l’accès à un réseau virtuel spécifié. Les points de terminaison limitent également l’accès à une liste de plages d’adresses IPv4 (Internet Protocol version 4). L’accès est refusé à tout utilisateur se connectant au registre en dehors de ces sources. Si les points de terminaison de service ont été configurés dans la région source de la ressource de registre, la même chose doit être effectuée dans la région cible. Les étapes de ce scénario sont décrites ci-dessous :

  • Pour recréer le registre dans la région cible, le VNet et le sous-réseau doivent être créés au préalable. Si le déplacement de ces deux ressources est effectué avec l’outil Azure Resource Mover, les points de terminaison de service ne sont pas configurés automatiquement, vous devrez donc fournir une configuration manuelle.

  • Deuxièmement, les modifications doivent être apportées dans l’IaC d’Azure Container Registry. Dans la section networkAcl, sous virtualNetworkRules, ajoutez la règle pour le sous-réseau cible. Vérifiez que l’indicateur ignoreMissingVnetServiceEndpoint a la valeur False, afin que l’IaC ne parvient pas à déployer Azure Container Registry si le point de terminaison de service n’est pas configuré dans la région cible. Cela garantit que les conditions préalables dans la région cible sont remplies

Considérations sur les points de terminaison privés

Azure Private Link fournit une connectivité privée entre un réseau virtuel et la plateforme Azure en tant que service (PaaS), appartenant à un client ou à des services partenaires Microsoft. Private Link simplifie l’architecture réseau et sécurise la connexion entre les points de terminaison dans Azure en éliminant l’exposition des données sur l’Internet public.

Pour recréer votre ressource dans la région cible, le VNet et le sous-réseau doivent être créés avant la recréation effective.

Considérations sur l’intégration DNS des points de terminaison privés Azure

Il est important de configurer correctement vos paramètres DNS pour résoudre l’adresse IP du point de terminaison privé en nom de domaine complet (FQDN) de la chaîne de connexion.

Les services Microsoft Azure existants sont susceptibles de disposer d’une configuration DNS pour un point de terminaison public. Cette configuration doit être remplacée pour la connexion à l’aide de votre point de terminaison privé.

L’interface réseau associée au point de terminaison privé contient les informations permettant de configurer votre DNS. Les informations de l’interface réseau incluent le nom de domaine complet et les adresses IP privées de votre ressource de liaison privée.

Vous pouvez utiliser les options suivantes pour configurer vos paramètres DNS pour Private Endpoint :

  • Utilisez le fichier d’hôte (recommandé uniquement pour les tests). Vous pouvez utiliser le fichier d’hôte sur une machine virtuelle pour remplacer le DNS.
  • Utilisez une zone DNS privée. Vous pouvez utiliser des zones DNS privées pour remplacer la résolution DNS pour un point de terminaison privé. Une zone DNS privée peut être liée à votre réseau virtuel pour résoudre des domaines spécifiques.
  • Utilisez votre redirecteur DNS (facultatif). Vous pouvez utiliser votre redirecteur DNS pour remplacer la résolution DNS par une ressource de liaison privée. Créez une règle de transfert DNS pour utiliser une zone DNS privée sur votre serveur DNS hébergé dans un réseau virtuel.
  • Azure Container Registry doit être configuré dans la région cible avec le niveau Premium.

  • Lorsque l’accès réseau public à un registre est désactivé, l’accès au registre par certains services approuvés, y compris Azure Security Center nécessite l’activation d’un paramètre réseau pour contourner les règles de réseau.

  • Si le registre dispose d’un point de terminaison privé approuvé et que l’accès au réseau public est désactivé, les référentiels et les étiquettes ne peuvent pas être listés en dehors du réseau virtuel à l’aide du Portail Azure, d’Azure CLI ou d’autres outils.

  • Dans le cas d’une nouvelle réplique, il est impératif d’ajouter manuellement un nouvel enregistrement DNS pour le point de terminaison de données dans la région cible.

Temps d’arrêt

Pour comprendre les temps d’arrêt possibles impliqués, consultez Cloud Adoption Framework pour Azure : sélectionnez une méthode de relocalisation.

Préparer

Remarque

Si vous souhaitez uniquement déplacer un registre de conteneurs qui ne contient pas de données spécifiques au client et qui doit être déplacé seul, vous pouvez simplement redéployer le Registre à l’aide de Bicep ou JSON.

Pour afficher d’autres modèles de configuration de disponibilité, accédez à Définir des ressources avec des modèles Bicep, des modèles ARM et un fournisseur Terraform AzAPI

Pour vous préparer à la relocalisation avec une migration de données :

  1. Créez une carte de dépendances avec tous les services Azure utilisés par le registre. Pour les services qui sont dans l’étendue de la relocalisation, vous devez choisir la stratégie de relocalisation appropriée.

  2. Identifiez la disposition réseau source pour Azure Container Registry (ACR) comme le pare-feu et l’isolation réseau.

  3. Récupérez toutes les images requises du registre source pour l’importation dans le registre cible. Exécutez la commande suivante pour récupérer les images :

    
    Get-AzContainerRegistryRepository -RegistryName registry
    
    
  4. Utilisez ACR Tasks pour récupérer les configurations d’automatisation du registre source à importer dans le registre cible.

Exportation du modèle

Pour commencer, exportez un modèle Resource Manager. Ce modèle contient des paramètres qui décrivent votre Container Registry. Pour plus d’informations sur comment utiliser les modèles exportés, voir Utiliser un modèle exporté à partir du portail Azure et la référence de modèle.

  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.

    Capture d’écran de l’exportation du modèle pour le registre de conteneurs.

  3. Localisez le fichier .zip que vous avez téléchargé à partir du portail, puis décompressez-le dans le dossier de votre choix.

    Ce fichier zip contient les fichiers .json qui incluent le modèle et des scripts pour le déployer.

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",
        ...
        }
    ]
}
  • Validez tous les détails des ressources associées dans le modèle téléchargé, tels que les scopeMaps du Registre, la configuration des réplications, les paramètres de diagnostic tels que les analytiques de journal.

  • Si le registre source est chiffré, alors chiffrez le registre cible à l’aide d’une clé gérée par le client et 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.

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

Redeploy

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 :

  1. 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.

  2. 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.

  3. 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
  1. Associez les ressources dépendantes au Azure Container Registry cible, telles que l’espace de travail d’analytiques de journal dans les paramètres de diagnostic.

  2. Configurez l’intégration d’Azure Container Registry avec les deux types de clusters AKS, provisionnés ou pas encore approvisionnés, en exécutant la commande suivante :


Set-AzAksCluster -Name myAKSCluster -ResourceGroupName myResourceGroup -AcrNameToAttach <acr-name>

  1. Apportez les modifications nécessaires au fichier de manifeste Kubernetes pour l’intégrer au Azure Container Registry (ACR) déplacé.

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

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

Vérifier

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.

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.