Transisi ke repositori standar

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

Petunjuk ini ditujukan terutama untuk administrator repositori. Untuk mempelajari perubahan pada mem-build, mendorong, menarik, dan men-deploy image, lihat informasi berikut:

Sebelum memulai

  1. Aktifkan Artifact Registry API dari Google Cloud Console 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 pricing untuk Artifact Registry sebelum memulai transisi.

Peran yang diperlukan

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

  • Untuk membuat repositori Artifact Registry dan memberikan akses ke repositori individual: Administrator Artifact Registry (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 pada level project: Project IAM Admin (roles/resourcemanager.projectIamAdmin) atau peran yang mencakup izin yang setara, seperti Folder Admin (roles/resourcemanager.folderAdmin), atau Organization Admin (roles/resourcemanager.organizationAdmin)

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.

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

Ringkasan

Repositori standar adalah repositori Artifact Registry reguler yang mendukung semua fitur.

Untuk mempermudah, petunjuk di halaman ini mengasumsikan bahwa Container Registry dan Artifact Registry berada dalam project Google Cloud yang sama. Anda dapat terus menggunakan kedua layanan tersebut saat bertransisi ke Artifact Registry sehingga Anda dapat secara bertahap melakukan langkah penyiapan dan memperbarui otomatisasi. Jika diperlukan, Anda dapat menyiapkan Artifact Registry dalam 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. Container Registry menyediakan beberapa kompatibilitas mundur dengan Container Registry, tetapi juga memiliki beberapa batasan fitur. Namun, jika Anda memiliki banyak konfigurasi alat, skrip, atau kode 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 untuk membantu Anda membuat keputusan yang tepat.

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. Konfigurasi autentikasi agar Anda dapat terhubung dengan repositori baru.
  4. Jika perlu, salin image dari Container Registry yang ingin Anda gunakan di repositori baru.
  5. Coba dorong dan tarik container Anda.
  6. Coba deploy image Anda ke lingkungan runtime.
  7. Mengonfigurasi fitur tambahan.
  8. Bersihkan image di Container Registry saat transisi selesai.

Membuat repositori

Container Registry secara otomatis membuat bucket penyimpanan di multi-region jika Anda belum mengirim image ke sana sebelumnya.

Di Artifact Registry, Anda harus membuat repositori sebelum dapat mengupload gambar. 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 jarak repositori dengan infrastruktur lain dan pengguna Anda. 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 menggunakan CMEK. Di Artifact Registry, Anda mengonfigurasi repositori untuk menggunakan CMEK saat membuatnya. Untuk mengetahui informasi selengkapnya tentang penggunaan CMEK dengan Artifact Registry, lihat Mengaktifkan kunci enkripsi yang dikelola pelanggan.

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

Untuk mengetahui 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 sendiri dan peran ini memisahkan peran administrasi baca, tulis, dan repositori dengan lebih jelas daripada Container Registry.

Untuk memetakan dengan cepat izin yang sudah ada yang diberikan di bucket penyimpanan ke peran Artifact Registry yang disarankan, 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 Buckets

  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. Pada 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 secara langsung pada 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

Memberi pengguna dan akun layanan yang saat ini mengakses Container Registry dengan akses ke repositori Artifact 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. Mereka tidak secara intrinsik memberikan semua akses ke resource Cloud Storage seperti yang tersirat dalam namanya, dan memberikan izin tambahan untuk layanan Google Cloud lainnya. Pastikan 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 standar untuk akses Container Registry. Peran Artifact Registry memberikan beberapa pemisahan izin tambahan yang tidak tersedia dalam peran Cloud Storage yang telah ditetapkan.

Akses yang diperlukan Peran saat ini Peran Artifact Registry Tempat memberikan peran
Tarik gambar saja (hanya baca) Storage Object Viewer
(roles/storage.objectViewer)
Pembaca Artifact Registry
(roles/artifactregistry.reader)
Repositori Artifact Registry atau project Google Cloud
Mendorong dan menarik gambar (baca dan tulis) Penulis Bucket Lama Penyimpanan
(roles/storage.legacyBucketWriter)
Penulis Artifact Registry
(roles/artifactregistry.writer)
Repositori Artifact Registry atau project Google Cloud
Mendorong, menarik, dan menghapus gambar Penulis Bucket Lama Penyimpanan
(roles/storage.legacyBucketWriter)
Administrator Repositori Artifact Registry
(roles/artifactregistry.repoAdmin)
Repositori Artifact Registry atau project Google Cloud
Membuat, mengelola, dan menghapus repositori Admin Penyimpanan
(roles/storage.admin)
Administrator Artifact Registry
(roles/artifactregistry.Admin)
Project Google Cloud
Peran agen layanan yang diwarisi dari project

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

Umumnya, peran agen layanan ini berisi izin default yang setara untuk Container Registry dan Artifact Registry, dan Anda tidak perlu membuat 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 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 container di Container Registry yang ingin Anda terus gunakan di Artifact Registry, ada beberapa opsi untuk menyalinnya. Untuk mendapatkan petunjuk terperinci, lihat Menyalin gambar dari Container Registry

Mendorong dan menarik gambar

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

  • Nama host untuk repositori Docker Artifact Registry menyertakan awalan lokasi, yang diikuti dengan -docker.pkg.dev. Contohnya mencakup 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 mengirim image my-image ke registry eu.gcr.io dalam project my-project.

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

Di Artifact Registry, perintah ini mengirim 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 pengiriman dan pengambilan 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.

Membuat image dan mengirimkannya ke repositori dengan Cloud Build umumnya berfungsi dengan cara yang sama seperti untuk Container Registry. Perbedaan utama pada Artifact Registry adalah repositori target harus ada sebelum Anda mengirim image ke sana, termasuk image pertama yang Anda kirim.

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 mengetahui 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

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

  • Kedua produk menggunakan Artifact Analysis API yang sama. Saat Anda mengaktifkan Artifact Analysis API di Container Registry atau Artifact Registry, API akan diaktifkan untuk kedua produk tersebut.
  • Kedua produk 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 gambar dengan OS yang didukung. Pemindaian otomatis hanya menampilkan informasi kerentanan OS. Pelajari lebih lanjut jenis-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 OS dan bahasa dengan pemindaian otomatis dan on demand. Pelajari lebih lanjut jenis-jenis pemindaian.
Pemindaian on-demand
Pemindaian otomatis
  • Perintah Google Cloud CLI gcloud artefak image docker mencakup 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 yang tidak didukung.

Notifikasi Pub/Sub

Artifact Registry memublikasikan perubahan ke topik gcr yang sama dengan Container Registry. Konfigurasi tambahan tidak diperlukan 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 dalam layanan yang dikelola Google Anda dan mengontrol pergerakan data di seluruh batas perimeter.

Lihat Mengamankan repositori di perimeter layanan untuk mengetahui petunjuknya.

Membersihkan image Container Registry

Jika Anda sudah siap untuk 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 Delete. Kotak dialog konfirmasi akan muncul.

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

gsutil

Jika Anda ingin menghapus seratus ribu gambar atau lebih dalam bucket secara massal, hindari menggunakan gsutil karena proses penghapusan memerlukan waktu yang lama. Sebagai gantinya, gunakan konsol Google Cloud untuk menjalankan operasi.

Untuk menghapus bucket, gunakan perintah gsutil rm dengan tanda -r.

gsutil rm -r gs://BUCKET-NAME

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 ini:

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

Jika layanan Google Cloud lainnya berjalan di project Google Cloud yang sama, biarkan Container Registry API tetap aktif. Jika Anda mencoba menonaktifkan Container Registry API. Container Registry menampilkan peringatan jika layanan lain dengan dependensi yang dikonfigurasi diaktifkan dalam project tersebut. 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