Memigrasikan secara otomatis dari Container Registry ke Artifact Registry

Gunakan alat migrasi otomatis untuk bertransisi dari Container Registry ke repositori gcr.io yang dihosting di Artifact Registry.

Migrasi ke repositori gcr.io Artifact Registry dapat dilakukan di endpoint Container Registry yang menerima traffic tanpa memerlukan periode nonaktif atau gangguan layanan.

Alat migrasi otomatis dapat melakukan tindakan berikut:

  • Buat repositori gcr.io di Artifact Registry untuk setiap project gcr.io yang tercantum di region yang sesuai.
  • Menyarankan kebijakan IAM untuk setiap repositori dan menerapkan kebijakan atau melewati penerapan, bergantung pada preferensi pengguna.
  • Alihkan semua traffic dari endpoint gcr.io ke Artifact Registry.
  • Salin semua image container yang disimpan di Container Registry ke repositori gcr.io Artifact Registry Anda, meskipun Anda telah mengaktifkan pengalihan.

Sebelum memulai

  1. Install the Google Cloud CLI.

  2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Enable the Artifact Registry API.

    Enable the API


    Alat migrasi otomatis akan meminta Anda untuk mengaktifkan Artifact Registry API jika Anda melewati langkah ini.

Peran yang diperlukan

Peran berikut diperlukan untuk melakukan transisi ke repositori gcr.io di Artifact Registry menggunakan alat migrasi otomatis.

Peran akun layanan:

Anda dapat menggunakan akun layanan migrasi gcr.io dengan alamat email artifact-registry-same-project-copier@system.gserviceaccount.com atau akun layanan Artifact Registry untuk bertransisi ke repositori gcr.io di Artifact Registry.

Untuk memastikan bahwa akun layanan yang Anda gunakan untuk migrasi memiliki izin yang diperlukan untuk menyalin image dari Container Registry ke Artifact Registry, minta administrator untuk memberikan peran IAM Storage Object Viewer (roles/storage.objectViewer) pada project, folder, atau organisasi Container Registry kepada akun layanan yang Anda gunakan untuk migrasi.

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Administrator Anda mungkin juga dapat memberikan izin yang diperlukan kepada akun layanan yang Anda gunakan untuk migrasi melalui peran khusus atau peran bawaan lainnya.

Peran pengguna:

Untuk mendapatkan izin yang diperlukan untuk bertransisi ke repositori gcr.io yang dihosting di Artifact Registry, minta administrator untuk memberi Anda peran IAM Artifact Registry Container Registry Migration Admin (roles/artifactregistry.containerRegistryMigrationAdmin) di Google Cloud organisasi atau project yang ingin Anda migrasikan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Bermigrasi ke repositori gcr.io yang dihosting di Artifact Registry

Anda dapat memigrasikan satu Google Cloud project, atau beberapa Google Cloud project sekaligus menggunakan perintah gcloud artifacts docker upgrade migrate.

Untuk bermigrasi ke repositori gcr.io, jalankan perintah berikut.

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

Dengan PROJECTS adalah project ID dari satu project yang ingin Anda migrasikan ke repositori gcr.io yang dihosting di Artifact Registry, atau daftar project ID yang dipisahkan koma yang ingin Anda migrasikan ke repositori gcr.io yang dihosting di Artifact Registry.

Alat migrasi menyelesaikan langkah-langkah berikut:

  • Membuat repositori gcr.io di Artifact Registry untuk setiap project gcr.io yang tercantum di region terkait.
  • Menyarankan kebijakan IAM untuk setiap repositori, dan menerapkan kebijakan atau melewati penerapan, bergantung pada preferensi pengguna.
  • Mengarahkan semua traffic dari endpoint gcr.io ke Artifact Registry. Artifact Registry untuk sementara menyajikan image yang tidak ada dengan menyalinnya dari Container Registry pada waktu permintaan hingga semua image container disalin ke Artifact Registry.
  • Menyalin semua image container yang disimpan di bucket gcr.io Anda ke repositori gcr.io yang baru dibuat dan dihosting di Artifact Registry.
  • Menonaktifkan penyalinan waktu permintaan. Repositori gcr.io yang dihosting di Artifact Registry tidak lagi bergantung pada Container Registry.

Jika hanya ingin menyalin gambar yang ditarik dari Container Registry dalam 30 hingga 180 hari terakhir, Anda dapat menyertakan tanda --recent-images=DAYS. Ganti DAYS dengan jumlah hari, antara 30 dan 180, yang harus diperiksa oleh alat untuk penarikan dalam rentang waktu tersebut.

Jika ingin menyalin sejumlah versi yang baru diupload dari setiap gambar, Anda dapat menyertakan tanda --last-uploaded-versions=VERSIONS. Ganti VERSIONS dengan jumlah versi yang ingin Anda salin untuk setiap image. Jika gambar baru diupload selama penyalinan, lebih dari jumlah versi yang ditentukan mungkin disalin.

Flag --recent-images dan flag --last-uploaded-versions tidak dapat muncul bersamaan dan tidak dapat digunakan bersama.

Jika Anda mengalami error atau waktu tunggu, Anda dapat menjalankan kembali perintah dengan aman, dan langkah-langkah yang telah selesai akan dilewati.

Melakukan migrasi lebih lambat dengan operasi baca canary

Anda dapat menggunakan tanda --canary-reads untuk meluncurkan hanya persentase pembacaan, dan tidak ada penulisan, ke Artifact Registry. Image yang tidak ada yang diambil dari Artifact Registry disalin dari Container Registry pada saat permintaan.

Bermigrasi dengan pembacaan canary memiliki dua keuntungan:

  • Peluncuran ke Artifact Registry dapat diuji pada sejumlah kecil permintaan terlebih dahulu.
  • Image masih dikirim ke Container Registry selama sebagian besar proses, sehingga lebih aman untuk melakukan rollback.

Sebaiknya lakukan prosedur berikut:

  1. Untuk menetapkan persentase pembacaan canary menjadi 1 persen, jalankan perintah berikut:

    gcloud artifacts docker upgrade migrate \
        --projects=PROJECTS \
        --canary-reads=1
    
  2. Pastikan semuanya masih berfungsi dengan benar.

  3. Untuk menetapkan persentase pembacaan canary menjadi 10 persen, jalankan perintah berikut :

    gcloud artifacts docker upgrade migrate \
        --projects=PROJECTS \
        --canary-reads=10
    
  4. Pastikan semuanya masih berfungsi dengan benar.

  5. Untuk menyetel pembacaan canary ke 100 persen, jalankan perintah berikut:

    gcloud artifacts docker upgrade migrate \
        --projects=PROJECTS \
        --canary-reads=100
    

Pada tahap ini, semua operasi baca dikirim ke Artifact Registry dan semua operasi tulis masih dikirim ke Container Registry.

Untuk menyelesaikan migrasi, kirim juga penulisan ke Artifact Registry dengan menjalankan perintah artifacts docker upgrade migrate tanpa tanda --canary-reads:

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

Pembacaan canary rollback

Untuk mengembalikan pembacaan canary, jalankan perintah berikut:

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS \
    --canary-reads=0

Pembacaan canary juga dinonaktifkan saat menjalankan perintah gcloud artifacts settings disable-upgrade-redirection atau gcloud artifacts settings enable-upgrade-redirection.

Kuota AnalyzeIamPolicy

Jika Anda memigrasikan sejumlah besar project dan kehabisan kuota AnalyzeIamPolicy, Anda dapat menggunakan tanda --no-use-analyze-iam. Penggunaan flag --no-use-analyze-iam untuk migrasi lebih lambat daripada tanpa menggunakannya, tetapi menghindari pengiriman permintaan terhadap kuota AnalyzeIamPolicy.

Langkah berikutnya