Transfer artefak ke registri lain
Artikel ini menunjukkan cara mentransfer kumpulan citra atau artefak registri lain dari satu registri kontainer Azure ke registri lain. Registri sumber dan target dapat berada dalam langganan yang sama atau berbeda, penyewa Direktori Aktif, cloud Azure, atau cloud yang terputus secara fisik.
Untuk mentransfer artefak, Anda membuat alur transfer yang mereplikasi artefak di antara dua registri dengan menggunakan penyimpanan blob:
- Artefak dari registri sumber diekspor ke blob di akun penyimpanan sumber
- Blob disalin dari akun penyimpanan sumber ke akun penyimpanan target
- Blob di akun penyimpanan target diimpor sebagai artefak di registri target. Anda dapat menyiapkan jalur impor untuk memicu setiap kali blob artefak diperbarui di penyimpanan target.
Di artikel ini, Anda membuat sumber daya prasyarat untuk membuat dan menjalankan alur transfer. Azure CLI digunakan untuk menyediakan sumber daya terkait seperti rahasia penyimpanan. Azure CLI versi 2.2.0 atau yang lebih baru direkomendasikan. Jika Anda perlu menginstal atau meningkatkan CLI, lihat Instal Azure CLI.
Fitur ini tersedia di tingkat layanan registri kontainer Premium. Untuk informasi tentang tingkat dan batas layanan registri, lihat tingkat Azure Container Registry.
Penting
Fitur ini masih dalam mode pratinjau. Pratinjau disediakan untuk Anda dengan syarat Anda menyetujui ketentuan penggunaan tambahan. Beberapa aspek dari fitur ini dapat berubah sebelum ketersediaan umum (GA).
Pertimbangkan kasus penggunaan Anda
Transfer sangat ideal untuk menyalin konten antara dua registri kontainer Azure di cloud yang terputus secara fisik, yang dimediasi oleh akun penyimpanan di setiap cloud. Jika Anda ingin menyalin citra dari registri kontainer di cloud yang terhubung termasuk Docker Hub dan vendor cloud lainnya, impor citra disarankan.
Prasyarat
Registri kontainer - Anda memerlukan registri sumber yang ada dengan artefak untuk ditransfer, dan registri target. Transfer ACR dimaksudkan untuk pergerakan melintasi cloud yang terputus secara fisik. Untuk pengujian, registri sumber dan target dapat berada di langganan Azure, penyewa Active Directory, atau cloud yang sama atau berbeda.
Jika Anda perlu membuat registri, lihat Memulai Cepat: Membuat registri kontainer pribadi menggunakan Azure CLI.
Akun penyimpanan - Buat akun penyimpanan sumber dan target di langganan dan lokasi pilihan Anda. Untuk tujuan pengujian, Anda dapat menggunakan langganan atau langganan yang sama sebagai sumber dan registri target Anda. Untuk skenario lintas cloud, biasanya Anda membuat akun penyimpanan terpisah di setiap cloud.
Jika perlu, buat akun penyimpanan dengan Azure CLI atau alat lainnya.
Buat kontainer blob untuk transfer artefak di setiap akun. Misalnya, buat kontainer bernama transfer.
Brankas kunci - Brankas kunci diperlukan untuk menyimpan rahasia token SAS yang digunakan untuk mengakses akun penyimpanan sumber dan target. Buat brankas kunci sumber dan target di langganan atau langganan Azure yang sama dengan registri sumber dan target Anda. Untuk tujuan demonstrasi, templat dan perintah yang digunakan dalam artikel ini juga mengasumsikan bahwa brankas kunci sumber dan target masing-masing terletak di grup sumber daya yang sama dengan registri sumber dan target. Penggunaan grup sumber daya umum ini tidak diwajibkan, tetapi ini menyederhanakan templat dan perintah yang digunakan dalam artikel ini.
Jika perlu, buat brankas kunci dengan Azure CLI atau alat lainnya.
Variabel lingkungan - Misalnya perintah dalam artikel ini, setel variabel lingkungan berikut untuk lingkungan sumber dan target. Semua contoh diformat untuk shell 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>"
Ringkasan skenario
Anda membuat tiga sumber daya alur berikut untuk transfer citra antar registri. Semua dibuat menggunakan pengoperasian PUT. Sumber daya ini beroperasi pada pendaftar dan akun penyimpanan sumber dan target Anda.
Autentikasi penyimpanan menggunakan token SAS, dikelola sebagai rahasia di brankas kunci. Alur menggunakan identitas terkelola untuk membaca rahasia di brankas.
- ExportPipeline - Sumber daya tahan lama yang berisi informasi tingkat tinggi tentang registri sumber dan akun penyimpanan. Informasi ini mencakup URI kontainer blob penyimpanan sumber dan brankas kunci yang mengelola token SAS sumber.
- ImportPipeline - Sumber daya tahan lama yang berisi informasi tingkat tinggi tentang registri target dan akun penyimpanan. Informasi ini mencakup URI kontainer blob penyimpanan target dan brankas kunci yang mengelola token SAS target. Pemicu impor diaktifkan secara default, sehingga alur berjalan secara otomatis saat blob artefak mendarat di kontainer penyimpanan target.
- PipelineRun - Sumber daya yang digunakan untuk memanggil sumber daya ExportPipeline atau ImportPipeline.
- Anda menjalankan ExportPipeline secara manual dengan membuat sumber daya PipelineRun dan menentukan artefak yang akan diekspor.
- Jika pemicu impor diaktifkan, ImportPipeline berjalan secara otomatis. Hal ini juga dapat dijalankan secara manual menggunakan PipelineRun.
- Saat ini, maksimum 50 artefak dapat ditransfer dengan setiap PipelineRun.
Hal yang perlu diketahui
- ExportPipeline dan ImportPipeline biasanya akan berada di penyewa Active Directory berbeda yang terkait dengan cloud sumber dan tujuan. Skenario ini memerlukan identitas terkelola dan brankas kunci yang terpisah untuk sumber daya ekspor dan impor. Untuk tujuan pengujian, sumber daya ini dapat ditempatkan di cloud yang sama, berbagi identitas.
- Secara default, templat ExportPipeline dan ImportPipeline masing-masing mengaktifkan identitas terkelola yang ditetapkan sistem untuk mengakses rahasia brankas kunci. Templat ExportPipeline dan ImportPipeline juga mendukung identitas yang ditetapkan pengguna yang Anda berikan.
Buat dan simpan kunci SAS
Transfer menggunakan token tanda tangan akses bersama (SAS) untuk mengakses akun penyimpanan di lingkungan sumber dan target. Hasilkan dan simpan token seperti yang dijelaskan di bagian berikut.
Penting
Meskipun Transfer ACR akan bekerja dengan token SAS yang dibuat secara manual yang disimpan dalam Rahasia Keyvault, untuk beban kerja produksi, kami sangat menyarankan untuk menggunakan Keyvault Managed Storage SAS Definition Secrets sebagai gantinya.
Hasilkan token SAS untuk ekspor
Jalankan perintah az storage container generate-sas untuk membuat token SAS untuk kontainer di akun penyimpanan sumber, yang digunakan untuk ekspor artefak.
Izin token yang disarankan: Baca, Tulis, Daftar, Tambah.
Dalam contoh berikut, output perintah ditetapkan ke variabel lingkungan EXPORT_SAS, diawali dengan karakter '?'. Perbarui nilai --expiry untuk lingkungan Anda:
EXPORT_SAS=?$(az storage container generate-sas \
--name transfer \
--account-name $SOURCE_SA \
--expiry 2021-01-01 \
--permissions alrw \
--https-only \
--output tsv)
Simpan token SAS untuk ekspor
Simpan token SAS di brankas kunci Azure sumber Anda menggunakan az keyvault secret set:
az keyvault secret set \
--name acrexportsas \
--value $EXPORT_SAS \
--vault-name $SOURCE_KV
Hasilkan token SAS untuk impor
Jalankan perintah az storage container generate-sas untuk menghasilkan token SAS untuk kontainer di akun penyimpanan target, yang digunakan untuk impor artefak.
Izin token yang disarankan: Baca, Hapus, Daftar
Dalam contoh berikut, keluaran perintah ditetapkan ke variabel lingkungan IMPORT_SAS, diawali dengan karakter '?'. Perbarui nilai --expiry untuk lingkungan Anda:
IMPORT_SAS=?$(az storage container generate-sas \
--name transfer \
--account-name $TARGET_SA \
--expiry 2021-01-01 \
--permissions dlr \
--https-only \
--output tsv)
Simpan token SAS untuk diimpor
Simpan token SAS di brankas kunci Azure target Anda menggunakan az keyvault secret set:
az keyvault secret set \
--name acrimportsas \
--value $IMPORT_SAS \
--vault-name $TARGET_KV
Langkah berikutnya
Ikuti salah satu tutorial di bawah ini untuk membuat sumber daya Transfer ACR Anda. Untuk sebagian besar kasus penggunaan yang tidak otomatis, sebaiknya gunakan Ekstensi Az CLI.