Verschieben einer Azure Container Registry in eine andere Region
Dieser Artikel zeigt, wie Sie Azure Container Registry-Ressourcen in eine andere Region im selben Abonnement des Active Directory-Mandanten verschieben.
Hinweis
Azure Container Registry unterstützt darüber hinaus die Georeplikation, falls Sie identische Containerimages auf mehrere Azure-Regionen verteilen müssen. Durch die Georeplikation einer Registrierung (Premium-Dienstebene erforderlich) können Sie in mehreren Regionen identische Image- und Tagnamen aus einer einzelnen Registrierung bereitstellen.
Voraussetzungen
Sie können eine Registrierung nur innerhalb desselben Active Directory-Mandanten verschieben. Diese Einschränkung gilt für Registrierungen, die mit einem kundenseitig verwalteten Schlüssel verschlüsselt und entschlüsselt werden.
Wenn die Quellregistrierung Verfügbarkeitszonen aktiviert hat, muss die Zielregion Verfügbarkeitszonen ebenfalls unterstützen. Weitere Informationen zum Verfügbarkeitszonensupport für Azure Container Registry finden Sie unter Aktivieren der Zonenredundanz in Azure Container Registry.
Überlegungen für Dienstendpunkte
Die Dienstendpunkte des virtuellen Netzwerks für Azure Container Registry beschränken den Zugriff auf ein angegebenes virtuelles Netzwerk. Die Endpunkte können auch den Zugriff auf eine Liste von IPv4-Adressbereichen (Internet Protocol, Version 4) beschränken. Allen Benutzern, die von außerhalb dieser Quellen eine Verbindung mit der Registrierung herstellen, wird der Zugriff verweigert. Wenn Dienstendpunkte in der Quellregion für die Registrierungsressource konfiguriert wurden, müsste dies auch im entsprechenden Ziel gemacht werden. Die Schritte für dieses Szenario sind unten aufgeführt:
Für eine erfolgreiche Wiederherstellung der Registrierung in die Zielregion müssen das VNet und das Subnetz vorgängig erstellt werden. Wenn die Verschiebung dieser beiden Ressourcen mit dem Azure Resource Mover-Tool durchgeführt wird, werden die Dienstendpunkte nicht automatisch konfiguriert, sodass Sie eine manuelle Konfiguration bereitstellen müssen.
Zweitens müssen Änderungen am IaC der Azure Container Registry vorgenommen werden. Fügen Sie im Abschnitt
networkAcl
untervirtualNetworkRules
die Regel für das Zielsubnetz hinzu. Stellen Sie sicher, dass das FlagignoreMissingVnetServiceEndpoint
auf FALSCH festgelegt ist, damit der IaC die Azure Container Registry nicht bereitstellen kann, wenn der Dienstendpunkt in der Zielregion nicht konfiguriert ist. Dadurch wird sichergestellt, dass die Voraussetzungen in der Zielregion erfüllt sind
Überlegungen zu privaten Endpunkten
Azure Private Link stellt eine private Verbindung zwischen einem virtuellen Netzwerk und Azure-PaaS-Diensten (Platform-as-a-Service), kundeneigenen Diensten oder Diensten von Microsoft-Partnern her. Private Link vereinfacht die Netzwerkarchitektur und schützt die Verbindung zwischen Endpunkten in Azure, indem die Offenlegung von Daten im öffentlichen Internet verhindert wird.
Für eine erfolgreiche Wiederherstellung Ihrer Ressource in die Zielregion müssen das VNet und das Subnetz vor der eigentlichen Wiederherstellung erstellt werden.
Überlegungen zur DNS-Integration für private Azure-Endpunkte
Es ist wichtig, die DNS-Einstellungen ordnungsgemäß zu konfigurieren, um die IP-Adresse des privaten Endpunkts in den vollqualifizierten Domänennamen (FQDN) der Verbindungszeichenfolge aufzulösen.
Bestehende Microsoft Azure-Dienste verfügen möglicherweise bereits über eine DNS-Konfiguration für einen öffentlichen Endpunkt. Diese Konfiguration muss außer Kraft gesetzt werden, um eine Verbindung mithilfe Ihres privaten Endpunkts herzustellen.
Die Netzwerkschnittstelle, die dem privaten Endpunkt zugeordnet ist, enthält die Informationen zum Konfigurieren des DNS. Die Informationen zur Netzwerkschnittstelle umfassen den vollqualifizierten Domänennamen und private IP-Adressen für Ihre Private Link-Ressource.
Mit den folgenden Optionen können Sie Ihre DNS-Einstellungen für private Endpunkte konfigurieren:
- Verwenden Sie die Hostdatei (wird nur für Tests empfohlen). Sie können die Hostdatei auf einem virtuellen Computer verwenden, um das DNS zu überschreiben.
- Private DNS-Zone. Sie können private DNS-Zonen verwenden, um die DNS-Auflösung für einen privaten Endpunkt außer Kraft zu setzen. Eine private DNS-Zone kann mit Ihrem virtuellen Netzwerk verknüpft werden, um bestimmte Domänen aufzulösen.
- Verwenden Sie Ihre DNS-Weiterleitung (optional). Sie können Ihre DNS-Weiterleitung verwenden, um die DNS-Auflösung für eine Private Link-Ressource außer Kraft zu setzen. Erstellen Sie eine DNS-Weiterleitungsregel, um eine private DNS-Zone auf Ihrem DNS-Server zu verwenden, der in einem virtuellen Netzwerk gehostet wird.
Azure Container Registry muss in der Zielregion mit Premium-Ebene konfiguriert sein.
Wenn der öffentliche Netzwerkzugriff auf eine Registrierung deaktiviert ist, erfordert der Zugriff auf die Registrierung durch bestimmte vertrauenswürdige Dienste – einschließlich Azure Security Center – die Aktivierung einer Netzwerkeinstellung zum Umgehen der Netzwerkregeln.
Wenn die Registrierung einen genehmigten privaten Endpunkt hat und der öffentliche Netzwerkzugriff deaktiviert ist, können Repositorys und Tags über das Azure-Portal, die Azure CLI oder andere Tools nicht außerhalb des virtuellen Netzwerks aufgelistet werden.
Falls es sich um ein neues Replikat handelt, ist es zwingend erforderlich, manuell einen neuen DNS-Eintrag für den Datenendpunkt in der Zielregion hinzufügen.
Ausfallzeit
Informationen zu den möglichen Ausfallzeiten finden Sie unter Cloud Adoption Framework für Azure: Auswählen einer Verlagerungsmethode.
Vorbereiten
Hinweis
Wenn Sie nur eine Container Registry verschieben möchten, die keine clientspezifischen Daten enthält und alleine verschoben werden soll, können Sie die Registrierung einfach mithilfe von Bicep oder JSON erneut bereitstellen.
Um weitere Konfigurationsvorlagen für die Verfügbarkeit anzuzeigen, wechseln Sie zu Definieren von Ressourcen mit Bicep, ARM-Vorlagen und dem Terraform AzAPI-Anbieter
So bereiten Sie die Verschiebung mit Datenmigration vor:
Erstellen Sie eine Abhängigkeitszuordnung mit allen Azure-Diensten, die von der Registrierung verwendet werden. Für die Dienstleistungen, die im Rahmen der Verschiebung vorliegen, müssen Sie die entsprechende Verlagerungsstrategie auswählen.
Identifizieren Sie das Quellnetzwerklayout für Azure Container Registry (ACR) wie Firewall und Netzwerkisolation.
Rufen Sie alle erforderlichen Images aus der Quellregistrierung für den Import in die Zielregistrierung ab. Führen Sie zum Abrufen der Images den folgenden Befehl aus:
Get-AzContainerRegistryRepository -RegistryName registry
Verwenden Sie ACR Tasks, um Automatisierungskonfigurationen der Quellregistrierung für den Import in die Zielregistrierung abzurufen.
Exportieren der Vorlage
Exportieren Sie zunächst eine Resource Manager-Vorlage. Diese Vorlage enthält Einstellungen, die Ihre Container Registry beschreiben. Weitere Informationen zum Verwenden von exportierten Vorlagen finden Sie unter Verwenden einer exportierten Vorlage aus dem Azure-Portal und in der Vorlagenreferenz.
Navigieren Sie im Azure-Portal zu Ihrer Quellregistrierung.
Wählen Sie im Menü unter Automatisierung die Option Vorlage exportieren>Herunterladen aus.
Suchen Sie die aus dem Portal heruntergeladene ZIP-Datei, und entpacken Sie sie in einen Ordner Ihrer Wahl.
Diese ZIP-Datei enthält die JSON-Dateien, in denen die Vorlage und Skripts zum Bereitstellen der Vorlage enthalten sind.
Ändern der Vorlage
Untersuchen Sie die Registrierungseigenschaften in der heruntergeladenen JSON-Vorlagendatei, und nehmen Sie die erforderlichen Änderungen vor. Mindestangaben:
- Ändern Sie den Registrierungsnamen
defaultValue
in den gewünschten Namen der Zielregistrierung. - Aktualisieren sie den
location
auf die gewünschte Azure-Region für die Zielregistrierung.
{
"$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",
...
}
]
}
Überprüfen Sie alle zugehörigen Ressourcendetails in der heruntergeladenen Vorlage, z. B. scopeMaps der Registrierung, Replikationskonfiguration, Diagnoseeinstellungen wie Protokollanalyse.
Wenn die Quellregistrierung verschlüsselt ist, verschlüsseln Sie die Zielregistrierung mithilfe eines kundenseitig verwalteten Schlüssels, und aktualisieren Sie die Vorlage mit Einstellungen für die erforderliche verwaltete Identität, den Schlüsseltresor und den Schlüssel. Sie können den kundenseitig verwalteten Schlüssel nur aktivieren, wenn Sie die Registrierung bereitstellen.
Ressourcengruppe erstellen
Erstellen Sie mit dem Befehl az group create eine Ressourcengruppe für die Zielregistrierung. Das folgende Beispiel erstellt eine Ressourcengruppe mit dem Namen myResourceGroup am Standort eastus.
az group create --name myResourceGroup --location eastus
Erneute Bereitstellung
Verwenden Sie den Befehl az deployment group create, um die Zielregistrierung mithilfe der Vorlage bereitzustellen:
az deployment group create --resource-group myResourceGroup \
--template-file template.json --name mydeployment
Hinweis
Wenn während der Bereitstellung Fehler auftreten, müssen Sie möglicherweise bestimmte Konfigurationen in der Vorlagendatei aktualisieren und den Befehl wiederholen.
Importieren des Registrierungsinhalts in die Zielregistrierung
Nach dem Erstellen der Registrierung in der Zielregion:
Verwenden Sie den Befehl az acr import oder den entsprechenden PowerShell-Befehl
Import-AzContainerImage
, um Images und andere Artefakte, die Sie erhalten möchten, aus der Quellregistrierung in die Zielregistrierung zu importieren. Befehlsbeispiele finden Sie unter Importieren von Containerimages in eine Containerregistrierung.Verwenden Sie die Azure CLI-Befehle az acr repository list und az acr repository show-tags oder entsprechende Azure PowerShell-Befehle, um den Inhalt Ihrer Quellregistrierung aufzählen zu können.
Führen Sie den Importbefehl für einzelne Artefakte aus, oder erstellen Sie ein Skript damit, um es über eine Liste von Artefakten auszuführen.
Das folgende Azure CLI-Beispielskript zählt die Quellrepositorys und Tags auf und importiert dann die Artefakte in eine Zielregistrierung im selben Azure-Abonnement. Ändern Sie es nach Bedarf, um bestimmte Repositorys oder Tags zu importieren. Informationen zum Importieren aus einer Registrierung in einem anderen Abonnement oder Mandanten finden Sie in den Beispielen unter Importieren von Containerimages in eine Containerregistrierung.
#!/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
Ordnen Sie die abhängigen Ressourcen der Ziel-Azure Container Registry zu, z. B. dem Log Analytics-Arbeitsbereich in den Diagnoseeinstellungen.
Konfigurieren Sie die Azure Container Registry-Integration mit beiden Arten von AKS-Clustern, bereitgestellt oder noch bereitzustellen, indem Sie den folgenden Befehl ausführen:
Set-AzAksCluster -Name myAKSCluster -ResourceGroupName myResourceGroup -AcrNameToAttach <acr-name>
Nehmen Sie die erforderlichen Änderungen an der Kubernetes-Manifestdatei vor, um das Gleiche in die verschobene Azure Container Registry (ACR) zu integrieren.
Aktualisieren Sie Entwicklungs- und Bereitstellungssysteme, damit diese die Zielregistrierung anstelle der Quellregistrierung verwenden.
Aktualisieren Sie alle Clientfirewallregeln, sodass der Zugriff auf die Zielregistrierung zugelassen wird.
Verifizieren
Bestätigen Sie die folgenden Informationen in Ihrer Zielregistrierung:
- Registrierungseinstellungen wie Registrierungsname, Dienstebene, öffentlicher Zugriff und Replikationen
- Repositorys und Tags für Inhalte, die Sie erhalten möchten.
Löschen der ursprünglichen Registrierung
Nachdem Sie die Zielregistrierung erfolgreich bereitgestellt, Inhalt migriert und Registrierungseinstellungen überprüft haben, können Sie die Quellregistrierung löschen.
Zugehöriger Inhalt
- Informationen zum Verschieben von Registrierungsressourcen in eine neue Ressourcengruppe entweder im selben Abonnement oder in ein [neues Abonnement] finden Sie unter Verschieben von Azure-Ressourcen in eine neue Ressourcengruppe oder ein neues Abonnement.
Weitere Informationen zum Importieren von Containerimages in eine Azure-Containerregistrierung aus einer öffentlichen Registrierung oder einer anderen privaten Registrierung.
Siehe die Azure Resource Manager-Vorlagenreferenz für Azure Container Registry.