Transisi ke repositori standar

Jika Anda menggunakan Container Registry untuk mengelola image container, halaman ini menjelaskan cara menyiapkan repositori Artifact Registry pkg.dev dan perbedaan penggunaan repositori dengan penggunaan Container Registry.

Petunjuk ini terutama ditujukan untuk administrator repositori. Untuk mempelajari perubahan cara membuat, mengirim, mengambil, dan men-deploy image, lihat informasi berikut:

Sebelum memulai

  1. Aktifkan Artifact Registry API dari konsol Google Cloud atau dengan perintah:

    gcloud services enable artifactregistry.googleapis.com
    
  2. Instal gcloud CLI jika belum diinstal. Untuk penginstalan yang ada, jalankan perintah berikut untuk mengupdate komponen ke versi terbaru:

    gcloud components update
    
  3. Pelajari harga untuk Artifact Registry sebelum memulai transisi.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan guna menyiapkan repositori gcr.io, minta administrator untuk memberi Anda peran IAM berikut pada project Google Cloud:

  • Untuk membuat repositori Artifact Registry dan memberikan akses ke setiap repositori: Artifact Registry Administrator (roles/artifactregistry.admin)
  • Untuk melihat dan mengelola konfigurasi Container Registry yang ada yang diterapkan ke bucket penyimpanan Cloud Storage: Storage Admin (roles/storage.admin)
  • Untuk memberikan akses repositori di tingkat project: Project IAM Admin (roles/resourcemanager.projectIamAdmin) atau peran yang menyertakan izin yang setara seperti Folder Admin (roles/resourcemanager.folderAdmin), atau Organization Admin (roles/resourcemanager.organizationAdmin)

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.

Ringkasan

Repositori pkg.dev adalah repositori Artifact Registry reguler yang mendukung semua fitur.

Untuk memudahkan, petunjuk di halaman ini mengasumsikan bahwa Container Registry dan Artifact Registry berada dalam project Google Cloud yang sama. Anda dapat terus menggunakan kedua layanan saat bertransisi ke Artifact Registry sehingga Anda dapat melakukan langkah-langkah penyiapan secara bertahap dan memperbarui otomatisasi. Jika diperlukan, Anda dapat menyiapkan Artifact Registry di project terpisah dan melakukan langkah-langkah keseluruhan yang sama.

Artifact Registry juga menawarkan repositori gcr.io. Repositori ini dapat mengalihkan traffic gcr.io dari registry yang ada ke repositori Artifact Registry yang sesuai. Keduanya memberikan beberapa kompatibilitas mundur dengan Container Registry, tetapi juga memiliki beberapa batasan fitur. Namun, jika Anda memiliki banyak konfigurasi, skrip, atau kode alat dengan referensi gcr.io, pendekatan yang lebih taktis mungkin diperlukan untuk bertransisi ke Artifact Registry. Tinjau dokumentasi transisi untuk repositori dengan dukungan domain gcr.io guna membantu Anda membuat keputusan yang sesuai.

Langkah transisi

Panduan ini akan menunjukkan cara menyelesaikan langkah-langkah berikut:

  1. Buat repositori Docker untuk container Anda. Anda harus membuat repositori sebelum dapat mengirim image ke dalamnya.
  2. Berikan izin ke repositori.
  3. Konfigurasikan autentikasi agar Anda dapat terhubung dengan repositori baru.
  4. Jika diperlukan, salin image dari Container Registry yang ingin Anda gunakan di repositori baru.
  5. Coba kirim dan tarik penampung Anda.
  6. Coba deploy image Anda ke lingkungan runtime.
  7. Konfigurasi fitur tambahan.
  8. Bersihkan image di Container Registry setelah transisi selesai.

Membuat repositori

Container Registry otomatis membuat bucket penyimpanan di multi-region jika Anda belum pernah mengirimkan image ke sana.

Di Artifact Registry, Anda harus membuat repositori sebelum dapat mengupload image. Saat membuat repositori, Anda harus menentukan:

  • Format repositori. Artifact Registry menyimpan container di repositori Docker.
  • Lokasi regional atau multi-regional untuk repositori.

    Saat memilih lokasi untuk repositori Artifact Registry, pertimbangkan kedekatan repositori dengan infrastruktur dan pengguna Anda yang lain. Jika Anda ingin menyalin image dari Container Registry ke Artifact Registry, perbedaan lokasi dapat memengaruhi biaya penyalinan.

  • Kunci Cloud Key Management Service, jika Anda menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk enkripsi.

    Di Container Registry, Anda mengonfigurasi bucket penyimpanan Container Registry untuk menggunakanCMEK. Di Artifact Registry, Anda mengonfigurasi repositori untuk menggunakan CMEK saat membuatnya. Untuk informasi selengkapnya tentang cara menggunakan CMEK dengan Artifact Registry, lihat Mengaktifkan kunci enkripsi yang dikelola pelanggan.

Container Registry menghosting container di domain gcr.io. Artifact Registry menghosting penampung di domain pkg.dev.

Untuk informasi tentang cara membuat repositori, termasuk repositori yang menggunakan CMEK untuk enkripsi, lihat Membuat repositori.

Memberikan izin

Container Registry menggunakan peran Cloud Storage untuk mengontrol akses. Artifact Registry memiliki peran IAM-nya sendiri dan peran ini memisahkan peran baca, tulis, dan administrasi repositori dengan lebih jelas daripada Container Registry.

Untuk memetakan izin yang ada yang diberikan di bucket penyimpanan ke peran Artifact Registry yang disarankan dengan cepat, gunakan alat pemetaan peran.

Atau, Anda dapat melihat daftar akun utama dengan akses ke bucket penyimpanan menggunakan konsol Google Cloud.

  1. Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.

    Buka Bucket

  2. Klik bucket penyimpanan untuk host registry yang ingin Anda lihat. Dalam nama bucket, PROJECT-ID adalah project ID Google Cloud Anda.

    • gcr.io: artifacts.PROJECT-ID.appspot.com
    • asia.gcr.io: asia.artifacts.PROJECT-ID.appspot.com
    • eu.gcr.io: eu.artifacts.PROJECT-ID.appspot.com
    • us.gcr.io: us.artifacts.PROJECT-ID.appspot.com
  3. Klik tab Izin.

  4. Di tab Izin, klik subtab Lihat menurut peran.

  5. Luaskan peran untuk melihat akun utama yang memiliki peran tersebut.

Daftar ini mencakup peran IAM yang diberikan langsung di bucket dan peran yang diwarisi dari project induk. Berdasarkan peran, Anda dapat memilih peran Artifact Registry yang paling sesuai untuk diberikan.

Cloud Storage dan peran dasar

Berikan akses ke repositori Artifact Registry kepada pengguna dan akun layanan yang saat ini mengakses Container Registry. Untuk peran Cloud Storage yang diwarisi dari project induk, Anda harus memverifikasi bahwa akun utama saat ini menggunakan Container Registry. Beberapa akun utama mungkin hanya mengakses bucket Cloud Storage lain yang tidak terkait dengan Container Registry.

Peran dasar Pemilik, Editor, dan Viewer yang ada sebelum IAM memiliki akses terbatas ke bucket penyimpanan. Peran ini tidak secara intrinsik memberikan semua akses ke resource Cloud Storage yang disiratkan oleh namanya dan memberikan izin tambahan untuk layanan Google Cloud lainnya. Verifikasi pengguna dan akun layanan mana yang memerlukan akses ke Artifact Registry dan gunakan tabel pemetaan peran untuk membantu Anda memberikan peran yang tepat jika akses Artifact Registry sesuai.

Tabel berikut memetakan peran Artifact Registry berdasarkan izin yang diberikan oleh peran Cloud Storage bawaan untuk akses Container Registry. Peran Artifact Registry menyediakan beberapa pemisahan izin tambahan yang tidak tersedia dalam peran Cloud Storage yang telah ditetapkan.

Akses yang diperlukan Peran saat ini Peran Artifact Registry Tempat untuk memberikan peran
Hanya gambar pull (hanya baca) Storage Object Viewer
(roles/storage.objectViewer)
Pembaca Artifact Registry
(roles/artifactregistry.reader)
Repositori Artifact Registry atau project Google Cloud
Mengirim dan mengambil image (baca dan tulis) Storage Legacy Bucket Writer
(roles/storage.legacyBucketWriter)
Penulis Artifact Registry
(roles/artifactregistry.writer)
Repositori Artifact Registry atau project Google Cloud
Mengirim, mengambil, dan menghapus gambar Storage Legacy Bucket Writer
(roles/storage.legacyBucketWriter)
Administrator Repositori Artifact Registry
(roles/artifactregistry.repoAdmin)
Repositori Artifact Registry atau project Google Cloud
Membuat, mengelola, dan menghapus repositori Storage Admin
(roles/storage.admin)
Administrator Artifact Registry
(roles/artifactregistry.Admin)
Project Google Cloud
Peran agen layanan yang diwariskan dari project

Akun layanan default untuk layanan Google Cloud memiliki perannya sendiri yang diberikan di tingkat project. Misalnya, agen layanan untuk Cloud Run memiliki peran Agen Layanan Cloud Run.

Pada umumnya, peran agen layanan ini berisi izin default yang setara untuk Container Registry dan Artifact Registry, dan Anda tidak perlu melakukan perubahan tambahan jika menjalankan Artifact Registry dalam project yang sama dengan layanan Container Registry yang ada.

Lihat referensi peran agen layanan untuk mengetahui detail tentang izin dalam peran agen layanan.

Peran khusus

Gunakan tabel pemetaan peran untuk membantu Anda menentukan peran yang akan diberikan kepada pengguna atau akun layanan berdasarkan tingkat akses yang mereka perlukan.

Untuk mengetahui petunjuk tentang cara memberikan peran Artifact Registry, lihat Mengonfigurasi peran dan izin.

Melakukan autentikasi ke repositori

Artifact Registry mendukung metode autentikasi yang sama dengan Container Registry.

Jika Anda menggunakan helper kredensial Docker:

  • Anda harus menggunakan versi 2.0 atau yang lebih baru untuk berinteraksi dengan repositori Artifact Registry. Versi mandiri tersedia di GitHub.
  • Anda harus mengonfigurasi helper kredensial dengan lokasi Artifact Registry yang ingin Anda gunakan. Secara default, helper kredensial hanya mengonfigurasi akses ke host Container Registry.

Untuk mengetahui detail tentang cara menyiapkan autentikasi, lihat Menyiapkan autentikasi untuk Docker.

Menyalin container dari Container Registry

Jika ada penampung di Container Registry yang ingin Anda terus gunakan di Artifact Registry, ada beberapa opsi untuk menyalinnya. Untuk mengetahui petunjuk mendetail, lihat Menyalin image dari Container Registry

Mendorong dan menarik gambar

Perintah Docker yang Anda gunakan untuk memberi tag, mengirim, dan menarik image di Artifact Registry mirip dengan yang Anda gunakan di Container Registry. Ada dua perbedaan utama:

  • Nama host untuk repositori Docker Artifact Registry menyertakan awalan lokasi, diikuti dengan -docker.pkg.dev. Contohnya meliputi australia-southeast1-docker.pkg.dev, europe-north1-docker.pkg.dev, dan europe-docker.pkg.dev.
  • Karena Artifact Registry mendukung beberapa repositori Docker dalam satu project, Anda harus menentukan nama repositori dalam perintah.

Misalnya, di Container Registry, perintah ini akan mengirim image my-image ke registry eu.gcr.io di project my-project.

docker push eu.gcr.io/my-project/my-image

Di Artifact Registry, perintah ini akan mendorong image my-image ke repositori regional europe-north1-docker.pkg.dev di repositori my-repo dan project my-project.

docker push europe-north1-docker.pkg.dev/my-project/my-repo/my-image

Untuk mengetahui detail tentang cara mengirim dan mengambil image di Artifact Registry, lihat Mengirim dan mengambil image.

Men-deploy image

Akun layanan untuk integrasi Google Cloud umum dikonfigurasi dengan izin default untuk repositori dalam project yang sama.

Membangun image dan mengirimkannya ke repositori dengan Cloud Build umumnya berfungsi dengan cara yang sama seperti untuk Container Registry. Perbedaan utamanya di Artifact Registry adalah repositori target harus ada sebelum Anda mendorong image ke dalamnya, termasuk image pertama yang Anda dorong.

Pastikan Anda membuat repositori yang diperlukan sebelum menjalankan perintah yang mengirim image, termasuk perintah Docker docker push dan perintah Cloud Build gcloud builds submit.

Builder Cloud Build masih dihosting di gcr.io. Untuk informasi selengkapnya, lihat Mengintegrasikan dengan Cloud Build.

Fitur lainnya

Bagian ini menjelaskan konfigurasi fitur lain yang mungkin telah Anda siapkan di Container Registry.

Artifact Analysis

Analisis Artefak mendukung Container Registry dan Artifact Registry. Dokumentasi Artifact Analysis menyertakan kedua produk tersebut.

  • Kedua produk tersebut menggunakan Artifact Analysis API yang sama. Saat Anda mengaktifkan Artifact Analysis API di Container Registry atau Artifact Registry, API akan diaktifkan untuk kedua produk.
  • Kedua produk tersebut menggunakan topik Pub/Sub yang sama untuk notifikasi Analisis Artefak.
  • Anda dapat terus menggunakan perintah gcloud container images untuk mencantumkan catatan dan kemunculan yang terkait dengan jalur image gcr.io.
Container Registry Artifact Registry
Memindai kerentanan OS dan paket bahasa dengan pemindaian on demand dalam image dengan OS yang didukung. Pemindaian otomatis hanya menampilkan informasi kerentanan OS. Pelajari lebih lanjut jenis pemindaian.
Pemindaian on-demand
Pemindaian otomatis
  • Perintah Google Cloud CLI gcloud container images menyertakan flag untuk melihat hasil pemindaian, termasuk kerentanan dan metadata lainnya.
  • Pemindaian hanya menampilkan informasi kerentanan OS untuk image di Container Registry dengan sistem operasi yang didukung.
Memindai kerentanan paket bahasa dan OS dengan pemindaian on-demand dan otomatis. Pelajari lebih lanjut jenis pemindaian.
Pemindaian on-demand
Pemindaian otomatis
  • Perintah Google Cloud CLI gcloud artifacts docker images menyertakan flag untuk melihat hasil pemindaian, termasuk kerentanan dan metadata lainnya.
  • Pemindaian menampilkan informasi kerentanan OS untuk image di Artifact Registry dengan sistem operasi yang didukung dan informasi kerentanan paket bahasa untuk sistem operasi yang didukung dan tidak didukung.

Notifikasi Pub/Sub

Artifact Registry memublikasikan perubahan ke topik gcr yang sama dengan Container Registry. Tidak diperlukan konfigurasi tambahan jika Anda sudah menggunakan Pub/Sub dengan Container Registry dalam project yang sama dengan Artifact Registry.

Jika Anda menyiapkan Artifact Registry dalam project terpisah, topik gcr mungkin tidak ada. Untuk petunjuk penyiapan, lihat Mengonfigurasi notifikasi Pub/Sub.

Perimeter layanan

Dengan Kontrol Layanan VPC, Anda dapat mengonfigurasi perimeter keamanan di sekitar resource layanan yang dikelola Google dan mengontrol pergerakan data melintasi batas perimeter.

Lihat Mengamankan repositori di perimeter layanan untuk mengetahui petunjuknya.

Membersihkan image Container Registry

Jika Anda siap berhenti menggunakan Container Registry, hapus image yang tersisa dengan menghapus bucket penyimpanan untuk Container Registry.

Untuk menghapus setiap bucket penyimpanan Container Registry:

Konsol

  1. Buka halaman Cloud Storage di konsol Google Cloud.
  2. Pilih bucket penyimpanan yang akan dihapus. Dalam nama bucket, PROJECT-ID adalah project ID Google Cloud Anda.

    • gcr.io: artifacts.PROJECT-ID.appspot.com
    • asia.gcr.io: asia.artifacts.PROJECT-ID.appspot.com
    • eu.gcr.io: eu.artifacts.PROJECT-ID.appspot.com
    • us.gcr.io: us.artifacts.PROJECT-ID.appspot.com
  3. Klik Hapus. Kotak dialog konfirmasi akan muncul.

  4. Untuk mengonfirmasi penghapusan, masukkan nama bucket, lalu klik Hapus.

gcloud

Jika Anda ingin menghapus seratus ribu gambar atau lebih secara massal di bucket, hindari penggunaan gcloud CLI karena proses penghapusan memerlukan waktu lama untuk diselesaikan. Sebagai gantinya, gunakan Konsol Google Cloud untuk melakukan operasi tersebut. Untuk informasi selengkapnya, lihat menghapus objek Cloud Storage secara massal.

Untuk menghapus bucket, gunakan perintah gcloud storage rm dengan flag --recursive.

gcloud storage rm gs://BUCKET-NAME --recursive

Ganti BUCKET-NAME dengan nama bucket penyimpanan Container Registry. Dalam nama bucket, PROJECT-ID adalah project ID Google Cloud Anda.

  • gcr.io: artifacts.PROJECT-ID.appspot.com
  • asia.gcr.io: asia.artifacts.PROJECT-ID.appspot.com
  • eu.gcr.io: eu.artifacts.PROJECT-ID.appspot.com
  • us.gcr.io: us.artifacts.PROJECT-ID.appspot.com

Responsnya akan terlihat seperti contoh berikut:

Removing gs://artifacts.my-project.appspot.com/...

Jika layanan Google Cloud lainnya berjalan di project Google Cloud yang sama, biarkan Container Registry API diaktifkan. Jika Anda mencoba menonaktifkan Container Registry API. Container Registry menampilkan peringatan jika layanan lain dengan dependensi yang dikonfigurasi diaktifkan dalam project. Menonaktifkan Container Registry API akan otomatis menonaktifkan layanan apa pun dalam project yang sama dengan dependensi yang dikonfigurasi, meskipun saat ini Anda tidak menggunakan Container Registry dengan layanan tersebut.

Langkah selanjutnya