Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak używać funkcji ACR Transfer z rozszerzeniem interfejsu wiersza polecenia acrtransfer Az.
Pełne wymagania wstępne
Przed podjęciem próby wykonania akcji w tym artykule należy spełnić wymagania wstępne opisane tutaj . To oznacza, że:
- Masz istniejący rejestr jednostek SKU Premium w obu chmurach.
- Masz istniejący kontener konta magazynu w obu chmurach.
- Masz istniejącą usługę Keyvault z wpisem tajnym zawierającym prawidłowy token SAS z niezbędnymi uprawnieniami w obu chmurach.
- Masz najnowszą wersję interfejsu wiersza polecenia Az zainstalowaną w obu chmurach.
Instalowanie rozszerzenia interfejsu wiersza polecenia Az
W usłudze AzureCloud można zainstalować rozszerzenie za pomocą następującego polecenia:
az extension add --name acrtransfer
Tworzenie polecenia ExportPipeline za pomocą rozszerzenia interfejsu wiersza polecenia acrtransfer Az
Utwórz zasób ExportPipeline dla rejestru kontenerów usługi AzureCloud przy użyciu rozszerzenia interfejsu wiersza polecenia acrtransfer Az.
Utwórz potok eksportu bez opcji i tożsamości przypisanej przez system:
az acr export-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--secret-uri https://$MyKV.vault.azure.net/secrets/$MySecret \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer
Utwórz potok eksportu z wszystkimi możliwymi opcjami i tożsamością przypisaną przez użytkownika:
az acr export-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--secret-uri https://$MyKV.vault.azure.net/secrets/$MySecret \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer \
--options OverwriteBlobs ContinueOnErrors \
--assign-identity /subscriptions/$MySubID/resourceGroups/$MyRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$MyIdentity
Opcje eksportu
Właściwość options potoków eksportu obsługuje opcjonalne wartości logiczne. Zalecane są następujące wartości:
| Parametr | Wartość |
|---|---|
| Opcje | Zastępowanie obiektów Blob — zastępowanie istniejących obiektów blob docelowych ContinueOnErrors — kontynuuj eksportowanie pozostałych artefaktów w rejestrze źródłowym, jeśli jeden eksport artefaktu zakończy się niepowodzeniem. |
Przyznawanie dostępu zasad keyvault tożsamości ExportPipeline
Jeśli potok został utworzony przy użyciu tożsamości przypisanej przez użytkownika, po prostu nadaj temu użytkownikowi uprawnienia zasad dostępu tożsamości w secret get usłudze Keyvault.
Jeśli utworzyłeś potok danych przy użyciu tożsamości przypisanej przez system, najpierw musisz pobrać principalId przypisany do zasobu potoku danych.
Uruchom następujące polecenie, aby pobrać zasób potoku:
az acr export-pipeline show --resource-group $MyRG --registry $MyReg --name $MyPipeline
Z tych danych wyjściowych chcesz skopiować wartość w principalId polu.
Następnie uruchomisz następujące polecenie, aby przyznać temu podmiotowi zabezpieczeń odpowiednie secret get uprawnienia zasad dostępu w usłudze Keyvault.
az keyvault set-policy --name $MyKeyvault --secret-permissions get --object-id $MyPrincipalID
Tworzenie polecenia ImportPipeline za pomocą rozszerzenia interfejsu wiersza polecenia acrtransfer Az
Utwórz zasób ImportPipeline w docelowym rejestrze kontenerów przy użyciu rozszerzenia interfejsu wiersza polecenia acrtransfer Az. Domyślnie potok jest włączony, aby automatycznie utworzyć potok importuUruchom, gdy dołączony kontener konta magazynu otrzyma nowy obiekt blob artefaktu.
Utwórz potok importu bez opcji i tożsamości przypisanej przez system:
az acr import-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--secret-uri https://$MyKV.vault.azure.net/secrets/$MySecret \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer
Utwórz potok importu z wszystkimi możliwymi opcjami, wyłączonym wyzwalaczem źródłowym i tożsamością przypisaną przez użytkownika:
az acr import-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--secret-uri https://$MyKV.vault.azure.net/secrets/$MySecret \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer \
--options DeleteSourceBlobOnSuccess OverwriteTags ContinueOnErrors \
--assign-identity /subscriptions/$MySubID/resourceGroups/$MyRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$MyIdentity \
--source-trigger-enabled False
Opcje importu
Właściwość options potoku importu obsługuje opcjonalne wartości logiczne. Zalecane są następujące wartości:
| Parametr | Wartość |
|---|---|
| Opcje | OverwriteTags — zastępowanie istniejących tagów docelowych DeleteSourceBlobOnSuccess — usuwanie źródłowego obiektu blob magazynu po pomyślnym zaimportowaniu do rejestru docelowego ContinueOnErrors — kontynuuj importowanie pozostałych artefaktów w rejestrze docelowym, jeśli importowanie jednego artefaktu zakończy się niepowodzeniem. |
Przyznawanie dostępu zasad keyvault tożsamości ImportPipeline
Jeśli potok został utworzony przy użyciu tożsamości przypisanej przez użytkownika, po prostu nadaj temu użytkownikowi uprawnienia zasad dostępu tożsamości w secret get usłudze Keyvault.
Jeśli utworzyłeś potok danych przy użyciu tożsamości przypisanej przez system, najpierw musisz pobrać principalId przypisany do zasobu potoku danych.
Uruchom następujące polecenie, aby pobrać zasób potoku:
az acr import-pipeline show --resource-group $MyRG --registry $MyReg --name $MyPipeline
Z tych danych wyjściowych chcesz skopiować wartość w principalId polu.
Następnie uruchomisz następujące polecenie, aby nadać temu podmiotowi odpowiednie secret get zasady dostępu w magazynie kluczy.
az keyvault set-policy --name $MyKeyvault --secret-permissions get --object-id $MyPrincipalID
Tworzenie elementu PipelineRun do eksportowania za pomocą rozszerzenia interfejsu wiersza polecenia acrtransfer Az
Utwórz zasób PipelineRun dla rejestru kontenerów przy użyciu rozszerzenia interfejsu wiersza polecenia acrtransfer Az. Ten zasób uruchamia utworzony wcześniej zasób ExportPipeline i eksportuje określone artefakty z rejestru kontenerów jako obiekt blob do kontenera konta magazynu.
Utwórz uruchomienie potoku eksportu:
az acr pipeline-run create \
--resource-group $MyRG \
--registry $MyReg \
--pipeline $MyPipeline \
--name $MyPipelineRun \
--pipeline-type export \
--storage-blob $MyBlob \
--artifacts hello-world:latest hello-world@sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042 \
--force-redeploy
Jeśli ponownie wdrożysz zasób PipelineRun z identycznymi właściwościami, musisz użyć flagi --force-redeploy.
Eksportowanie artefaktów może potrwać kilka minut. Po pomyślnym zakończeniu wdrażania zweryfikuj eksport artefaktu, wyświetlając wyeksportowany obiekt blob w kontenerze źródłowego konta magazynu. Na przykład uruchom polecenie az storage blob list :
az storage blob list --account-name $MyStorageAccount --container $MyContainer --output table
Przenoszenie obiektu blob między domenami
W większości przypadków użycia będziesz teraz używać rozwiązania typu Cross Domain lub innej metody, aby przenieść blob z konta przechowywania w źródłowej domenie (konto przechowywania skojarzone z potokiem eksportu) do konta przechowywania w docelowej domenie (konto przechowywania skojarzone z potokiem importu). W tym momencie założymy, że obiekt blob dotarł do docelowego konta magazynowego domeny powiązanego z potokiem importu.
Wyzwalanie zasobu ImportPipeline
Jeśli nie użyto parametru --source-trigger-enabled False podczas tworzenia potoku importu, potok zostanie wyzwolony w ciągu 15 minut po nadejściu bloba do kontenera w koncie magazynowym. Importowanie artefaktów może potrwać kilka minut. Po pomyślnym zakończeniu importowania zweryfikuj importowanie artefaktów, wyświetlając listę tagów w repozytorium importowanych w docelowym rejestrze kontenerów. Na przykład uruchom polecenie az acr repository show-tags:
az acr repository show-tags --name $MyRegistry --repository $MyRepository
Uwaga
Wyzwalacz źródłowy importuje tylko obiekty blob, które mają czas ostatniej modyfikacji w ciągu ostatnich 60 dni. Jeśli zamierzasz użyć wyzwalacza źródłowego do importowania obiektów blob starszych, odśwież czas ostatniej modyfikacji obiektów blob, dodając do nich metadane obiektów blob lub importując je ręcznie utworzonymi przebiegami potoku.
Jeśli podczas tworzenia elementu ImportPipeline użyto parametru --source-trigger-enabled False , musisz ręcznie utworzyć element PipelineRun, jak pokazano w poniższej sekcji.
Tworzenie elementu PipelineRun do importowania za pomocą rozszerzenia interfejsu wiersza polecenia acrtransfer Az
Utwórz zasób PipelineRun dla rejestru kontenerów przy użyciu rozszerzenia interfejsu wiersza polecenia acrtransfer Az. Ten zasób uruchamia utworzony wcześniej zasób ImportPipeline i importuje określone obiekty blob z konta magazynu do rejestru kontenerów.
Utwórz uruchomienie potoku importu:
az acr pipeline-run create \
--resource-group $MyRG \
--registry $MyReg \
--pipeline $MyPipeline \
--name $MyPipelineRun \
--pipeline-type import \
--storage-blob $MyBlob \
--force-redeploy
Jeśli ponownie wdrożysz zasób PipelineRun z identycznymi właściwościami, musisz użyć flagi --force-redeploy.
Importowanie artefaktów może potrwać kilka minut. Po pomyślnym zakończeniu importowania zweryfikuj importowanie artefaktów, wyświetlając listę repozytoriów w docelowym rejestrze kontenerów. Na przykład uruchom polecenie az acr repository show-tags:
az acr repository show-tags --name $MyRegistry --repository $MyRepository
Usuwanie zasobów usługi ACR Transfer
Usuń element ExportPipeline:
az acr export-pipeline delete --resource-group $MyRG --registry $MyReg --name $MyPipeline
Usuń element ImportPipeline:
az acr import-pipeline delete --resource-group $MyRG --registry $MyReg --name $MyPipeline
Usuń zasób PipelineRun. Zwróć uwagę, że nie powoduje to cofnięcia działania podjętego przez PipelineRun. Jest to bardziej podobne do usuwania dziennika potokuUruchom.
az acr pipeline-run delete --resource-group $MyRG --registry $MyReg --name $MyPipelineRun
Rozwiązywanie problemów z transferem usługi ACR
Zobacz Rozwiązywanie problemów z transferem usługi ACR, aby uzyskać wskazówki dotyczące rozwiązywania problemów.
Następne kroki
- Dowiedz się, jak zablokować tworzenie potoków eksportu z rejestru kontenerów z ograniczeniami sieci.