Transfer artefaktów do innego rejestru

W tym artykule pokazano, jak przenieść kolekcje obrazów lub innych artefaktów rejestru z jednego rejestru kontenerów platformy Azure do innego rejestru. Źródłowe i docelowe rejestry mogą znajdować się w tych samych lub różnych subskrypcjach, dzierżawach usługi Active Directory, chmurach platformy Azure lub fizycznie odłączonych chmurach.

Aby przenieść artefakty, należy utworzyć potok transferu, który replikuje artefakty między dwoma rejestrami przy użyciu magazynu obiektów blob:

  • Artefakty z rejestru źródłowego są eksportowane do obiektu blob na źródłowym koncie magazynu
  • Obiekt blob jest kopiowany ze źródłowego konta magazynu do docelowego konta magazynu
  • Obiekt blob na docelowym koncie magazynu jest importowany jako artefakty w rejestrze docelowym. Potok importu można skonfigurować tak, aby był wyzwalany za każdym razem, gdy artefakt blob zostanie zaktualizowany w magazynie docelowym.

W tym artykule utworzysz zasoby wymagań wstępnych, aby utworzyć i uruchomić potok transferu. Interfejs wiersza polecenia platformy Azure służy do aprowizowania skojarzonych zasobów, takich jak wpisy tajne magazynu. Zalecany jest interfejs wiersza polecenia platformy Azure w wersji 2.2.0 lub nowszej. Jeśli konieczna będzie instalacja interfejsu wiersza polecenia lub jego uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Ta funkcja jest dostępna w warstwie usługi rejestru kontenerów Premium . Aby uzyskać informacje na temat warstw i limitów usługi rejestru, zobacz Warstwy usługi Azure Container Registry.

Ważne

Ta funkcja jest aktualnie dostępna jako funkcja podglądu. Wersje zapoznawcze są udostępniane pod warunkiem udzielenia zgody na dodatkowe warunki użytkowania. Niektóre cechy funkcji mogą ulec zmianie, zanim stanie się ona ogólnie dostępna.

Rozważ przypadek użycia

Transfer jest idealny do kopiowania zawartości między dwoma rejestrami kontenerów platformy Azure w chmurach, które są fizycznie odłączone, za pomocą kont magazynu w każdej chmurze. Jeśli zamiast tego chcesz skopiować obrazy z rejestrów kontenerów w połączonych chmurach, w tym docker Hub i innych dostawców usług w chmurze, zaleca się importowanie obrazów.

Wymagania wstępne

  • Rejestry kontenerów — potrzebujesz istniejącego rejestru źródłowego z artefaktami do transferu i rejestru docelowego. Transfer ACR jest przeznaczony do przenoszenia w chmurach bez połączenia fizycznego. Na potrzeby testowania rejestry źródłowe i docelowe mogą znajdować się w tej samej lub innej subskrypcji platformy Azure, dzierżawie usługi Active Directory lub chmurze.

    Jeśli musisz utworzyć rejestr, zobacz Szybki start: tworzenie prywatnego rejestru kontenerów przy użyciu interfejsu wiersza polecenia platformy Azure.

  • Konta magazynu — utwórz źródłowe i docelowe konta magazynu w wybranej subskrypcji i lokalizacji. Do celów testowych można używać tej samej subskrypcji lub subskrypcji co źródłowe i docelowe rejestry. W przypadku scenariuszy obejmujących wiele chmur zazwyczaj tworzysz oddzielne konto magazynu w każdej chmurze.

    W razie potrzeby utwórz konta magazynu przy użyciu interfejsu wiersza polecenia platformy Azure lub innych narzędzi.

    Utwórz kontener obiektów blob na potrzeby transferu artefaktów na każdym koncie. Na przykład utwórz kontener o nazwie transfer.

  • Magazyny kluczy — magazyny kluczy są potrzebne do przechowywania wpisów tajnych tokenu SAS używanych do uzyskiwania dostępu do źródłowych i docelowych kont magazynu. Utwórz źródłowe i docelowe magazyny kluczy w tej samej subskrypcji lub subskrypcjach platformy Azure co źródłowe i docelowe rejestry. W celach demonstracyjnych szablony i polecenia używane w tym artykule zakładają również, że źródłowe i docelowe magazyny kluczy znajdują się w tych samych grupach zasobów, co odpowiednio źródłowe i docelowe rejestry. Użycie typowych grup zasobów nie jest wymagane, ale upraszcza szablony i polecenia używane w tym artykule.

    W razie potrzeby utwórz magazyny kluczy przy użyciu interfejsu wiersza polecenia platformy Azure lub innych narzędzi.

  • Zmienne środowiskowe — na przykład polecenia w tym artykule ustawiają następujące zmienne środowiskowe dla środowisk źródłowych i docelowych. Wszystkie przykłady są sformatowane dla powłoki Bash.

    SOURCE_RG="<source-resource-group>"
    TARGET_RG="<target-resource-group>"
    SOURCE_KV="<source-key-vault>"
    TARGET_KV="<target-key-vault>"
    SOURCE_SA="<source-storage-account>"
    TARGET_SA="<target-storage-account>"
    

Omówienie scenariusza

Utworzysz następujące trzy zasoby potoku na potrzeby transferu obrazów między rejestrami. Wszystkie są tworzone przy użyciu operacji PUT. Te zasoby działają na źródłowych i docelowych rejestrach i kontach magazynu.

Uwierzytelnianie magazynu używa tokenów SAS zarządzanych jako wpisy tajne w magazynach kluczy. Potoki używają tożsamości zarządzanych do odczytywania wpisów tajnych w magazynach.

  • ExportPipeline — długotrwały zasób zawierający ogólne informacje o rejestrze źródłowymi koncie magazynu. Te informacje obejmują identyfikator URI kontenera obiektów blob magazynu źródłowego oraz magazyn kluczy zarządzający źródłowym tokenem SAS.
  • ImportPipeline — długotrwały zasób zawierający ogólne informacje o docelowym rejestrze i koncie magazynu. Te informacje obejmują identyfikator URI kontenera obiektów blob magazynu docelowego oraz magazyn kluczy zarządzający docelowym tokenem SAS. Wyzwalacz importu jest domyślnie włączony, więc potok jest uruchamiany automatycznie, gdy artefaktowy obiekt blob ląduje w docelowym kontenerze magazynu.
  • PipelineRun — zasób używany do wywoływania zasobu ExportPipeline lub ImportPipeline.
    • Ręcznie uruchom polecenie ExportPipeline, tworząc zasób PipelineRun i określając artefakty do wyeksportowania.
    • Jeśli wyzwalacz importu jest włączony, funkcja ImportPipeline jest uruchamiana automatycznie. Można go również uruchomić ręcznie przy użyciu elementu PipelineRun.
    • Obecnie można przesyłać maksymalnie 50 artefaktów z każdym elementem PipelineRun.

Fakty, które trzeba znać

  • Reguły ExportPipeline i ImportPipeline są zwykle w różnych dzierżawach usługi Active Directory skojarzonych z chmurami źródłowymi i docelowymi. Ten scenariusz wymaga oddzielnych tożsamości zarządzanych i magazynów kluczy na potrzeby eksportowania i importowania zasobów. W celach testowych te zasoby można umieścić w tej samej chmurze, udostępniając tożsamości.
  • Domyślnie szablony ExportPipeline i ImportPipeline umożliwiają przypisaną przez system tożsamość zarządzaną w celu uzyskania dostępu do wpisów tajnych magazynu kluczy. Szablony ExportPipeline i ImportPipeline obsługują również tożsamość przypisaną przez użytkownika.

Tworzenie i przechowywanie kluczy sygnatury dostępu współdzielonego

Transfer używa tokenów sygnatury dostępu współdzielonego (SAS) do uzyskiwania dostępu do kont magazynu w środowiskach źródłowych i docelowych. Generowanie i przechowywanie tokenów zgodnie z opisem w poniższych sekcjach.

Ważne

Chociaż usługa ACR Transfer będzie działać z ręcznie wygenerowanym tokenem SAS przechowywanym w kluczu tajnym usługi Keyvault, w przypadku obciążeń produkcyjnych zdecydowanie zalecamy użycie wpisów tajnychdefinicji sygnatury dostępu współdzielonego magazynu zarządzanego usługi Keyvault.

Generowanie tokenu SAS na potrzeby eksportu

Uruchom polecenie az storage container generate-sas, aby wygenerować token SAS dla kontenera na źródłowym koncie magazynu używanym do eksportowania artefaktów.

Zalecane uprawnienia tokenu: Odczyt, Zapis, Lista, Dodaj.

W poniższym przykładzie dane wyjściowe polecenia są przypisywane do zmiennej środowiskowej EXPORT_SAS z prefiksem "?". --expiry Zaktualizuj wartość środowiska:

EXPORT_SAS=?$(az storage container generate-sas \
  --name transfer \
  --account-name $SOURCE_SA \
  --expiry 2021-01-01 \
  --permissions alrw \
  --https-only \
  --output tsv)

Przechowywanie tokenu SAS na potrzeby eksportu

Zapisz token SAS w źródłowym magazynie kluczy platformy Azure przy użyciu polecenia az keyvault secret set:

az keyvault secret set \
  --name acrexportsas \
  --value $EXPORT_SAS \
  --vault-name $SOURCE_KV

Generowanie tokenu SAS na potrzeby importowania

Uruchom polecenie az storage container generate-sas, aby wygenerować token SAS dla kontenera na docelowym koncie magazynu używanym do importowania artefaktów.

Zalecane uprawnienia tokenu: Odczyt, Usuwanie, Lista

W poniższym przykładzie dane wyjściowe polecenia są przypisywane do zmiennej środowiskowej IMPORT_SAS z prefiksem "?". --expiry Zaktualizuj wartość środowiska:

IMPORT_SAS=?$(az storage container generate-sas \
  --name transfer \
  --account-name $TARGET_SA \
  --expiry 2021-01-01 \
  --permissions dlr \
  --https-only \
  --output tsv)

Przechowywanie tokenu SAS do importowania

Zapisz token SAS w docelowym magazynie kluczy platformy Azure przy użyciu polecenia az keyvault secret set:

az keyvault secret set \
  --name acrimportsas \
  --value $IMPORT_SAS \
  --vault-name $TARGET_KV

Następne kroki