Aracılığıyla paylaş


Az CLI ile ACR Aktarımı

Bu makalede, acrtransfer Az CLI uzantısıyla ACR Aktarım özelliğinin nasıl kullanılacağı gösterilmektedir.

Önkoşulları tamamlama

Bu makaledeki eylemleri denemeden önce lütfen burada özetlenen önkoşulları tamamlayın. Bu şu anlama gelir:

  • Her iki bulutta da mevcut bir Premium SKU Kayıt Defteriniz var.
  • Her iki bulutta da mevcut bir Depolama Hesap Kapsayıcınız var.
  • Her iki bulutta da gerekli izinlere sahip geçerli bir SAS belirteci içeren gizli diziye sahip mevcut bir Keyvault'nuz var.
  • Her iki bulutta da Az CLI'nin son sürümünü yüklediniz.

Az CLI uzantısını yükleme

AzureCloud'da uzantıyı aşağıdaki komutla yükleyebilirsiniz:

az extension add --name acrtransfer

AzureCloud'da ve diğer bulutlarda blobu doğrudan bir genel depolama hesabı kapsayıcısından yükleyebilirsiniz. Blob, depolama hesabı, kapsayıcı ve dist acrtransfer-1.0.0-py2.py3-none-any.wh blob'ta acrtransferext barındırılır. Bulunduğunuz buluta bağlı olarak depolama URI'sinin sonekini değiştirmeniz gerekebilir. Aşağıdakiler AzureCloud'a yüklenir:

az extension add --source https://acrtransferext.blob.core.windows.net/dist/acrtransfer-1.0.0-py2.py3-none-any.whl

acrtransfer Az CLI uzantısıyla ExportPipeline oluşturma

acrtransfer Az CLI uzantısını kullanarak AzureCloud kapsayıcı kayıt defteriniz için bir ExportPipeline kaynağı oluşturun.

Hiçbir seçenek ve sistem tarafından atanan kimlik olmadan bir dışarı aktarma işlem hattı oluşturun:

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

Tüm olası seçenekleri ve kullanıcı tarafından atanan kimliği içeren bir dışarı aktarma işlem hattı oluşturun:

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

Dışarı aktarma seçenekleri

Dışarı options aktarma işlem hatlarının özelliği isteğe bağlı boole değerlerini destekler. Aşağıdaki değerler önerilir:

Parametre Değer
seçenekler Üzerine YazBlobs - Var olan hedef blobların üzerine yazma
ContinueOnErrors - Bir yapıt dışarı aktarma işlemi başarısız olursa kaynak kayıt defterinde kalan yapıtları dışarı aktarmaya devam edin.

ExportPipeline kimliği anahtar kasası ilkesine erişim verme

İşlem hattınızı kullanıcı tarafından atanan bir kimlikle oluşturduysanız anahtar kasası üzerinde bu kullanıcı tarafından atanan kimlik secret get erişim ilkesi izinlerini vermeniz yeterlidir.

İşlem hattınızı sistem tarafından atanan bir kimlikle oluşturduysanız, önce sistemin işlem hattı kaynağınıza atadığı principalId değerini almanız gerekir.

İşlem hattı kaynağınızı almak için aşağıdaki komutu çalıştırın:

az acr export-pipeline show --resource-group $MyRG --registry $MyReg --name $MyPipeline

Bu çıktıdan, alandaki değeri principalId kopyalamak isteyeceksiniz.

Ardından, bu sorumluya keyvault'unuzda uygun secret get erişim ilkesi izinlerini vermek için aşağıdaki komutu çalıştıracaksınız.

az keyvault set-policy --name $MyKeyvault --secret-permissions get --object-id $MyPrincipalID

acrtransfer Az CLI uzantısıyla ImportPipeline oluşturma

acrtransfer Az CLI uzantısını kullanarak hedef kapsayıcı kayıt defterinizde bir ImportPipeline kaynağı oluşturun. Varsayılan olarak, ekli depolama hesabı kapsayıcısı yeni bir yapıt blobu aldığında işlem hattı otomatik olarak bir İçeri Aktarma İşlem Hattı Çalıştırması oluşturmak için etkinleştirilir.

Hiçbir seçenek ve sistem tarafından atanan kimlik olmadan bir içeri aktarma işlem hattı oluşturun:

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

Tüm olası seçenekler, kaynak tetikleyici devre dışı bırakılmış ve kullanıcı tarafından atanan bir kimlik içeren bir içeri aktarma işlem hattı oluşturun:

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

İçe aktarma seçenekleri

İçeri options aktarma işlem hattının özelliği isteğe bağlı boole değerlerini destekler. Aşağıdaki değerler önerilir:

Parametre Değer
seçenekler OverwriteTags - Var olan hedef etiketlerin üzerine yaz
DeleteSourceBlobOnSuccess - Hedef kayıt defterine başarıyla aktarıldıktan sonra kaynak depolama blobunu silin
ContinueOnErrors - Bir yapıt içeri aktarma işlemi başarısız olursa hedef kayıt defterinde kalan yapıtları içeri aktarmaya devam edin.

ImportPipeline kimliği anahtar kasası ilkesi erişimi verme

İşlem hattınızı kullanıcı tarafından atanan bir kimlikle oluşturduysanız anahtar kasası üzerinde bu kullanıcı tarafından atanan kimlik secret get erişim ilkesi izinlerini vermeniz yeterlidir.

İşlem hattınızı sistem tarafından atanan bir kimlikle oluşturduysanız, önce sistemin işlem hattı kaynağınıza atadığı principalId değerini almanız gerekir.

İşlem hattı kaynağınızı almak için aşağıdaki komutu çalıştırın:

az acr import-pipeline show --resource-group $MyRG --registry $MyReg --name $MyPipeline

Bu çıktıdan, alandaki değeri principalId kopyalamak isteyeceksiniz.

Ardından, bu sorumluya keyvault'unuzda uygun secret get erişim ilkesini vermek için aşağıdaki komutu çalıştıracaksınız.

az keyvault set-policy --name $MyKeyvault --secret-permissions get --object-id $MyPrincipalID

acrtransfer Az CLI uzantısıyla dışarı aktarmak için PipelineRun oluşturma

acrtransfer Az CLI uzantısını kullanarak kapsayıcı kayıt defteriniz için bir PipelineRun kaynağı oluşturun. Bu kaynak, daha önce oluşturduğunuz ExportPipeline kaynağını çalıştırır ve belirtilen yapıtları kapsayıcı kayıt defterinizden blob olarak depolama hesabı kapsayıcınıza aktarır.

Dışarı aktarma işlem hattı çalıştırması oluşturma:

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

Aynı özelliklere sahip bir PipelineRun kaynağını yeniden dağıtıyorsanız -- force-redeploy bayrağını kullanmanız gerekir.

Yapıtların dışarı aktarması birkaç dakika sürebilir. Dağıtım başarıyla tamamlandığında, dışarı aktarılan blobu kaynak depolama hesabının kapsayıcısında listeleyerek yapıt dışarı aktarmayı doğrulayın. Örneğin az storage blob list komutunu çalıştırın:

az storage blob list --account-name $MyStorageAccount --container $MyContainer --output table

Blobu etki alanı arasında aktarma

Çoğu kullanım örneğinde, blobunuzu kaynak etki alanınızdaki depolama hesabından (dışarı aktarma işlem hattınızla ilişkili depolama hesabı) hedef etki alanınızdaki depolama hesabına (içeri aktarma işlem hattınızla ilişkili depolama hesabı) aktarmak için bir Etki Alanları Arası Çözüm veya başka bir yöntem kullanacaksınız. Bu noktada, blob'un içeri aktarma işlem hattınızla ilişkili hedef etki alanı depolama hesabına ulaştığını varsayacağız.

ImportPipeline kaynağını tetikleme

İçeri aktarma işlem hattınızı oluştururken parametresini --source-trigger-enabled False kullanmadıysanız, blob depolama hesabı kapsayıcısında geldikten sonra işlem hattı 15 dakika içinde tetiklenir. Yapıtların içeri aktarılması birkaç dakika sürebilir. İçeri aktarma işlemi başarıyla tamamlandığında, hedef kapsayıcı kayıt defterinde içeri aktardığınız depodaki etiketleri listeleyerek yapıt içeri aktarmayı doğrulayın. Örneğin az acr repository show-tags komutunu çalıştırın:

az acr repository show-tags --name $MyRegistry --repository $MyRepository

Dekont

Kaynak Tetikleyicisi yalnızca son 60 gün içinde Son Değiştirme zamanı olan blobları içeri aktarır. Bundan eski blobları içeri aktarmak için Kaynak Tetikleyicisi'ni kullanmayı planlıyorsanız, bloblara blob meta verileri ekleyerek blobların Son Değiştirme zamanını yenileyin veya el ile oluşturulan işlem hattı çalıştırmalarıyla içeri aktarın.

ImportPipeline'inizi oluştururken parametresini --source-trigger-enabled False kullandıysanız, aşağıdaki bölümde gösterildiği gibi el ile pipelinerun oluşturmanız gerekir.

acrtransfer Az CLI uzantısıyla içeri aktarma için PipelineRun oluşturma

acrtransfer Az CLI uzantısını kullanarak kapsayıcı kayıt defteriniz için bir PipelineRun kaynağı oluşturun. Bu kaynak, daha önce oluşturduğunuz ImportPipeline kaynağını çalıştırır ve belirtilen blobları depolama hesabınızdan kapsayıcı kayıt defterinize aktarır.

İçeri aktarma işlem hattı çalıştırması oluşturma:

az acr pipeline-run create \
--resource-group $MyRG \
--registry $MyReg \
--pipeline $MyPipeline \
--name $MyPipelineRun \
--pipeline-type import \
--storage-blob $MyBlob \
--force-redeploy

Aynı özelliklere sahip bir PipelineRun kaynağını yeniden dağıtıyorsanız -- force-redeploy bayrağını kullanmanız gerekir.

Yapıtların içeri aktarılması birkaç dakika sürebilir. İçeri aktarma işlemi başarıyla tamamlandığında, hedef kapsayıcı kayıt defterindeki depoları listeleyerek yapıt içeri aktarmayı doğrulayın. Örneğin az acr repository show-tags komutunu çalıştırın:

az acr repository show-tags --name $MyRegistry --repository $MyRepository

ACR Aktarım kaynaklarını silme

ExportPipeline'i silme:

az acr export-pipeline delete --resource-group $MyRG --registry $MyReg --name $MyPipeline

ImportPipeline'i silme:

az acr import-pipeline delete --resource-group $MyRG --registry $MyReg --name $MyPipeline

PipelineRun kaynağını silme. Bunun PipelineRun tarafından gerçekleştirilen eylemi tersine çevirmediğini unutmayın. Bu daha çok PipelineRun günlüğünü silmeye benzer.

az acr pipeline-run delete --resource-group $MyRG --registry $MyReg --name $MyPipelineRun

ACR Aktarımı sorunlarını giderme

Sorun giderme yönergeleri için ACR Aktarım Sorunlarını Giderme'yi görüntüleyin.

Sonraki adımlar