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
- Ağ ile kısıtlanmış bir kapsayıcı kayıt defterinden dışarı aktarma işlem hatlarının oluşturulmasını engellemeyi öğrenin.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin