Przenoszenie usługi Azure Container Registry do innego regionu

W tym artykule pokazano, jak przenieść zasoby usługi Azure Container Registry do innego regionu w tej samej subskrypcji dzierżawy usługi Active Directory.

Uwaga

Jeśli musisz dystrybuować identyczne obrazy kontenerów w wielu regionach świadczenia usługi Azure, usługa Azure Container Registry obsługuje również replikację geograficzną. Dzięki replikacji geograficznej rejestru (wymagana warstwa usługi Premium) można obsługiwać wiele regionów z identycznymi nazwami obrazów i tagów z jednego rejestru.

Wymagania wstępne

  • Rejestr można przenieść tylko w ramach tej samej dzierżawy usługi Active Directory. To ograniczenie dotyczy rejestrów, które są szyfrowane i niezaszyfrowane przy użyciu klucza zarządzanego przez klienta.

  • Jeśli rejestr źródłowy ma włączone strefy dostępności, region docelowy musi również obsługiwać strefy dostępności. Aby uzyskać więcej informacji na temat obsługi strefy dostępności dla usługi Azure Container Registry, zobacz Włączanie nadmiarowości stref w usłudze Azure Container Registry.

Zagadnienia dotyczące punktów końcowych usługi

Punkty końcowe usługi sieci wirtualnej dla usługi Azure Container Registry ograniczają dostęp do określonej sieci wirtualnej. Punkty końcowe mogą również ograniczyć dostęp do listy zakresów adresów IPv4 (protokół internetowy w wersji 4). Każdy użytkownik nawiązujący połączenie z rejestrem spoza tych źródeł nie ma dostępu. Jeśli punkty końcowe usługi zostały skonfigurowane w regionie źródłowym dla zasobu rejestru, należy to zrobić w tym samym miejscu docelowym. Kroki tego scenariusza zostały wymienione poniżej:

  • Aby pomyślnie odtworzyć rejestr w regionie docelowym, należy wcześniej utworzyć sieć wirtualną i podsieć. Jeśli przeniesienie tych dwóch zasobów odbywa się za pomocą narzędzia Azure Resource Mover, punkty końcowe usługi nie będą konfigurowane automatycznie i dlatego należy zapewnić ręczną konfigurację.

  • Po drugie należy wprowadzić zmiany w IaC usługi Azure Container Registry. W networkAcl sekcji w obszarze virtualNetworkRulesdodaj regułę dla podsieci docelowej. Upewnij się, że flaga ignoreMissingVnetServiceEndpoint ma wartość Fałsz, aby nie można było wdrożyć usługi Azure Container Registry w przypadku, gdy punkt końcowy usługi nie jest skonfigurowany w regionie docelowym. Zapewni to spełnienie wymagań wstępnych w regionie docelowym

Zagadnienia dotyczące prywatnego punktu końcowego

Usługa Azure Private Link zapewnia prywatną łączność z sieci wirtualnej do platformy Azure jako usługi (PaaS), należących do klienta lub usług partnerskich firmy Microsoft. Usługa Private Link upraszcza architekturę sieci i zabezpiecza połączenie między punktami końcowymi na platformie Azure, eliminując narażenie danych na publiczny Internet.

W celu pomyślnego odtworzenia zasobu w regionie docelowym należy utworzyć sieć wirtualną i podsieć przed rozpoczęciem rzeczywistej rekreacji.

Zagadnienia dotyczące integracji z usługą DNS prywatnego punktu końcowego platformy Azure

Ważne jest, aby poprawnie skonfigurować ustawienia DNS, aby rozpoznać prywatny adres IP punktu końcowego do w pełni kwalifikowanej nazwy domeny (FQDN) parametry połączenia.

Istniejące usługi platformy Microsoft Azure mogą już mieć konfigurację DNS dla publicznego punktu końcowego. Ta konfiguracja musi zostać zastąpiona, aby nawiązać połączenie przy użyciu prywatnego punktu końcowego.

Interfejs sieciowy skojarzony z prywatnym punktem końcowym zawiera informacje dotyczące konfigurowania systemu DNS. Informacje o interfejsie sieciowym obejmują nazwę FQDN i prywatne adresy IP dla zasobu łącza prywatnego.

Aby skonfigurować ustawienia DNS dla prywatnych punktów końcowych, możesz skorzystać z następujących opcji:

  • Użyj pliku hosta (zalecane tylko w przypadku testowania). Możesz użyć pliku hosta na maszynie wirtualnej, aby zastąpić serwer DNS.
  • Użyj prywatnej strefy DNS. Za pomocą prywatnych stref DNS można przesłonić rozpoznawanie nazw DNS dla prywatnego punktu końcowego. Prywatną strefę DNS można połączyć z siecią wirtualną w celu rozpoznawania konkretnych domen.
  • Użyj usługi przekazywania DNS (opcjonalnie). Możesz użyć usługi przekazywania DNS, aby zastąpić rozpoznawanie nazw DNS dla zasobu łącza prywatnego. Utwórz regułę przekazywania DNS, aby używać prywatnej strefy DNS na serwerze DNS hostowanym w sieci wirtualnej.
  • Usługa Azure Container Registry musi być skonfigurowana w regionie docelowym z warstwą Premium.

  • Gdy dostęp do sieci publicznej do rejestru jest wyłączony, dostęp do rejestru przez niektóre zaufane usługi — w tym Usługę Azure Security Center — wymaga włączenia ustawienia sieci w celu obejścia reguł sieci.

  • Jeśli rejestr ma zatwierdzony prywatny punkt końcowy, a dostęp do sieci publicznej jest wyłączony, repozytoria i tagi nie mogą być wyświetlane poza siecią wirtualną przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub innych narzędzi.

  • W przypadku nowej repliki jej imperatywne ręczne dodanie nowego rekordu DNS dla punktu końcowego danych w regionie docelowym.

Przestój

Aby zrozumieć możliwe przestoje, zobacz Cloud Adoption Framework for Azure: Select a relocation method (Przewodnik Cloud Adoption Framework dla platformy Azure: wybieranie metody relokacji).

Przygotowywanie

Uwaga

Jeśli chcesz przenieść tylko rejestr kontenerów, który nie przechowuje żadnych danych specyficznych dla klienta i ma zostać przeniesiony sam, możesz po prostu ponownie wdrożyć rejestr przy użyciu Bicep lub JSON.

Aby wyświetlić inne szablony konfiguracji dostępności, przejdź do sekcji Definiowanie zasobów przy użyciu dostawcy Bicep, szablonów usługi ARM i narzędzia Terraform AzAPI

Aby przygotować się do relokacji z migracją danych:

  1. Utwórz mapę zależności ze wszystkimi usługami platformy Azure używanymi przez rejestr. W przypadku usług, które znajdują się w zakresie relokacji, należy wybrać odpowiednią strategię relokacji.

  2. Zidentyfikuj układ sieci źródłowej dla usługi Azure Container Registry (ACR), na przykład zaporę i izolację sieci.

  3. Pobierz wszystkie wymagane obrazy z rejestru źródłowego do zaimportowania do rejestru docelowego. Aby pobrać obrazy, uruchom następujące polecenie:

    
    Get-AzContainerRegistryRepository -RegistryName registry
    
    
  4. Użyj usługi ACR Tasks , aby pobrać konfiguracje automatyzacji rejestru źródłowego na potrzeby importowania do rejestru docelowego.

Eksportowanie szablonu

Aby rozpocząć, wyeksportuj szablon usługi Resource Manager. Ten szablon zawiera ustawienia opisujące rejestr kontenerów. Aby uzyskać więcej informacji na temat używania wyeksportowanych szablonów, zobacz [Używanie wyeksportowanego szablonu z witryny Azure Portal](.). /azure-resource-manager/templates/template-tutorial-Azure portale.md) i dokumentacja szablonu.

  1. W witrynie Azure Portal przejdź do rejestru źródłowego.

  2. W menu w obszarze Automatyzacja wybierz pozycję Eksportuj szablon>Pobierz.

    Zrzut ekranu przedstawiający szablon eksportu dla rejestru kontenerów.

  3. Znajdź plik .zip pobrany z portalu i rozpakuj ten plik do wybranego folderu.

    Ten plik zip zawiera pliki .json zawierające szablon i skrypty do wdrożenia szablonu.

Modyfikowanie szablonu

Sprawdź właściwości rejestru w pobranym pliku JSON szablonu i wprowadź niezbędne zmiany. Co najmniej:

  • Zmień nazwę defaultValue rejestru na żądaną nazwę rejestru docelowego
  • Zaktualizuj element location do żądanego regionu platformy Azure dla rejestru docelowego
{
    "$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",
        ...
        }
    ]
}
  • Zweryfikuj wszystkie skojarzone zasoby szczegółowe w pobranym szablonie, takie jak zakres rejestruMapy, konfiguracja replikacji, ustawienia diagnostyczne, takie jak analiza dzienników.

  • Jeśli rejestr źródłowy jest zaszyfrowany, zaszyfruj rejestr docelowy przy użyciu klucza zarządzanego przez klienta i zaktualizuj szablon przy użyciu ustawień wymaganej tożsamości zarządzanej, magazynu kluczy i klucza. Klucz zarządzany przez klienta można włączyć tylko podczas wdrażania rejestru.

Utwórz grupę zasobów

Utwórz grupę zasobów dla rejestru docelowego przy użyciu polecenia az group create. W poniższym przykładzie tworzona jest grupa zasobów o nazwie myResourceGroup w lokalizacji eastus.

az group create --name myResourceGroup --location eastus

Wdróż ponownie

Użyj polecenia az deployment group create, aby wdrożyć rejestr docelowy przy użyciu szablonu:

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

Uwaga

Jeśli podczas wdrażania wystąpią błędy, może być konieczne zaktualizowanie niektórych konfiguracji w pliku szablonu i ponowienie próby wykonania polecenia.

Importowanie zawartości rejestru w rejestrze docelowym

Po utworzeniu rejestru w regionie docelowym:

  1. Użyj polecenia az acr import lub równoważnego polecenia Import-AzContainerImageprogramu PowerShell, aby zaimportować obrazy i inne artefakty, które mają zostać zachowane z rejestru źródłowego do rejestru docelowego. Przykłady poleceń można znaleźć w temacie Importowanie obrazów kontenerów do rejestru kontenerów.

  2. Użyj poleceń interfejsu wiersza polecenia platformy Azure az acr repository list i az acr repository show-tags lub odpowiedników programu Azure PowerShell, aby ułatwić wyliczanie zawartości rejestru źródłowego.

  3. Uruchom polecenie importu dla poszczególnych artefaktów lub utwórz skrypt, aby uruchomić listę artefaktów.

Poniższy przykładowy skrypt interfejsu wiersza polecenia platformy Azure wylicza repozytoria źródłowe i tagi, a następnie importuje artefakty do rejestru docelowego w tej samej subskrypcji platformy Azure. Zmodyfikuj zgodnie z potrzebami, aby zaimportować określone repozytoria lub tagi. Aby zaimportować z rejestru w innej subskrypcji lub dzierżawie, zobacz przykłady w temacie Importowanie obrazów kontenerów do rejestru kontenerów.

#!/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. Skojarz zasoby zależne z docelową usługą Azure Container Registry, taką jak obszar roboczy usługi Log Analytics w ustawieniach diagnostycznych.

  2. Skonfiguruj integrację usługi Azure Container Registry z obydwoma typami klastrów usługi AKS, aprowizowaną lub jeszcze aprowizowaną, uruchamiając następujące polecenie:


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

  1. Wprowadź niezbędne zmiany w pliku manifestu kubernetes, aby zintegrować je z przeniesioną usługą Azure Container Registry (ACR).

  2. Aktualizowanie systemów programowania i wdrażania w celu używania rejestru docelowego zamiast rejestru źródłowego.

  3. Zaktualizuj wszystkie reguły zapory klienta, aby zezwolić na dostęp do rejestru docelowego.

Weryfikacja

Potwierdź następujące informacje w rejestrze docelowym:

  • Ustawienia rejestru, takie jak nazwa rejestru, warstwa usługi, dostęp publiczny i replikacje
  • Repozytoria i tagi zawartości, którą chcesz zachować.

Usuwanie oryginalnego rejestru

Po pomyślnym wdrożeniu rejestru docelowego zmigrowana zawartość i zweryfikowane ustawienia rejestru można usunąć rejestr źródłowy.