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 bagi administrator repositori. Untuk mempelajari cara membangun, mengirim, menarik, dan men-deploy image yang telah berubah, lihat informasi berikut:
- Perubahan pada proses build dan deployment di Google Cloud
- Perubahan pada pengiriman dan penarikan dengan Docker
Sebelum memulai
Aktifkan Artifact Registry API dari konsolGoogle Cloud atau dengan perintah:
gcloud services enable artifactregistry.googleapis.com
Instal gcloud CLI jika belum diinstal. Untuk penginstalan yang ada, jalankan perintah berikut untuk mengupdate komponen ke versi terbaru:
gcloud components update
Pelajari harga Artifact Registry sebelum Anda 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 Google Cloud project:
-
Untuk membuat repositori Artifact Registry dan memberikan akses ke setiap repositori:
Administrator Artifact Registry (
roles/artifactregistry.admin
) -
Untuk melihat dan mengelola konfigurasi Container Registry yang ada dan 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 mencakup izin yang setara seperti Folder Admin (roles/resourcemanager.folderAdmin
), atau Admin Organisasi (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 biasa yang mendukung semua fitur.
Untuk mempermudah, petunjuk di halaman ini mengasumsikan bahwa Container Registry dan Artifact Registry berada dalam project yang sama. Google Cloud Anda dapat terus menggunakan kedua layanan saat beralih 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. Repositori ini memberikan 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 beralih ke Artifact Registry. Tinjau dokumentasi transisi untuk repositori dengan dukungan domain gcr.io untuk membantu Anda mengambil keputusan yang tepat.
Langkah transisi
Panduan ini akan menunjukkan cara menyelesaikan langkah-langkah berikut:
- Buat repositori Docker untuk container Anda. Anda harus membuat repositori sebelum dapat mengirim image ke dalamnya.
- Beri izin ke repositori.
- Konfigurasi autentikasi agar Anda dapat terhubung dengan repositori baru.
- Jika perlu, salin image dari Container Registry yang ingin Anda gunakan di repositori baru.
- Coba mengirim dan menarik container Anda.
- Coba deploy gambar Anda ke lingkungan runtime.
- Konfigurasi fitur tambahan.
- 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 Anda yang 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 Anda membuatnya. Untuk mengetahui 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 container 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 pada bucket penyimpanan dengan cepat ke saran peran Artifact Registry, gunakan alat pemetaan peran.
Atau, Anda dapat melihat daftar prinsipal dengan akses ke bucket penyimpanan menggunakan konsol Google Cloud .
- Di Google Cloud konsol, buka halaman Bucket Cloud Storage.
Klik bucket penyimpanan untuk host registri yang ingin Anda lihat. Pada nama bucket,
PROJECT-ID
adalah Google Cloud project ID 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
- gcr.io:
Klik tab Izin.
Di tab Izin, klik subtab Lihat menurut peran.
Luaskan peran untuk melihat akun utama yang memiliki peran tersebut.
Daftar ini mencakup peran IAM yang diberikan 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 akses ke repositori Artifact Registry. Untuk peran Cloud Storage yang diwarisi dari project induk, Anda harus memverifikasi bahwa pokok saat ini menggunakan Container Registry. Beberapa prinsipal 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 memberikan pemisahan izin tambahan yang tidak tersedia dalam peran Cloud Storage bawaan.
Akses yang diperlukan Peran saat ini Peran Artifact Registry Tempat pemberian peran Hanya menarik gambar (hanya baca) Storage Object Viewer
(roles/storage.objectViewer
)Pembaca Artifact Registry
(roles/artifactregistry.reader)
Repositori atau Google Cloud project Artifact Registry Mengirim dan mengambil gambar (baca dan tulis) Storage Legacy Bucket Writer
(roles/storage.legacyBucketWriter
)Penulis Artifact Registry
(roles/artifactregistry.writer)
Repositori atau Google Cloud project Artifact Registry Mengirim, mengambil, dan menghapus gambar Storage Legacy Bucket Writer
(roles/storage.legacyBucketWriter
)Administrator Repositori Artifact Registry
(roles/artifactregistry.repoAdmin)
Repositori atau Google Cloud project Artifact Registry Membuat, mengelola, dan menghapus repositori Admin Penyimpanan
(roles/storage.admin
)Administrator Artifact Registry
(roles/artifactregistry.admin)
Google Cloud project - Peran agen layanan yang diwariskan dari project
Akun layanan default untuk layanan Google Cloud memiliki peran sendiri yang diberikan di tingkat project. Misalnya, agen layanan untuk Cloud Run memiliki peran Agen Layanan Cloud Run.
Dalam sebagian besar kasus, 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 di 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 memutuskan 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 penyiapan 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 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 mencakup awalan lokasi, diikuti dengan
-docker.pkg.dev
. Contohnya meliputiaustralia-southeast1-docker.pkg.dev
,europe-north1-docker.pkg.dev
, daneurope-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
di 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 cara mengirim dan menarik image di Artifact Registry, lihat Mengirim dan menarik image.
Men-deploy gambar
Akun layanan untuk integrasi umum Google Cloud 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 yang dilakukan untuk Container Registry. Perbedaan utama di Artifact Registry adalah repositori target harus ada sebelum Anda mengirim image ke repositori tersebut, 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 mencakup kedua produk.
- Kedua produk menggunakan API Artifact Analysis yang sama. Saat Anda mengaktifkan Artifact Analysis API di Container Registry atau Artifact Registry, API akan diaktifkan untuk kedua produk.
- Kedua produk menggunakan topik Pub/Sub yang sama untuk notifikasi Analisis Artefak.
- Anda dapat terus menggunakan perintah gcloud container images
untuk mencantumkan catatan dan kejadian yang terkait dengan jalur image
gcr.io
.
Container Registry | Artifact Registry |
---|---|
Memindai kerentanan paket bahasa dan OS dengan pemindaian sesuai permintaan
dalam image dengan OS yang didukung. Pemindaian otomatis hanya menampilkan informasi kerentanan OS.
Pelajari lebih lanjut jenis pemindaian.
|
Memindai kerentanan paket bahasa dan OS dengan pemindaian on-demand dan
otomatis.
Pelajari lebih lanjut jenis pemindaian.
|
Notifikasi Pub/Sub
Artifact Registry memublikasikan perubahan ke topik gcr
yang sama dengan
Container Registry. Tidak ada konfigurasi tambahan yang diperlukan jika Anda sudah menggunakan
Pub/Sub dengan Container Registry dalam project yang sama dengan
Artifact Registry.
Jika Anda menyiapkan Artifact Registry di 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 di seluruh batas perimeter.
Lihat Mengamankan repositori di perimeter layanan untuk mengetahui petunjuknya.
Membersihkan image Container Registry
Saat 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
- Buka halaman Cloud Storage di Google Cloud konsol.
Pilih bucket penyimpanan yang akan dihapus. Dalam nama bucket,
PROJECT-ID
adalah Google Cloud project ID 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
- gcr.io:
Klik Hapus. Kotak dialog konfirmasi akan muncul.
Untuk mengonfirmasi penghapusan, masukkan nama bucket, lalu klik Hapus.
gcloud
Jika Anda ingin menghapus seratus ribu gambar atau lebih secara massal dalam bucket, hindari penggunaan gcloud CLI karena proses penghapusan memerlukan waktu yang lama untuk diselesaikan. Gunakan konsol Google Cloud untuk melakukan operasi tersebut. Untuk mengetahui 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. Pada nama bucket, PROJECT-ID
adalah
Google Cloud
project ID 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 lain berjalan di project yang sama, biarkan Container Registry API tetap diaktifkan. Google Cloud Google CloudJika 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 di project yang sama dengan dependensi yang dikonfigurasi, meskipun Anda saat ini tidak menggunakan Container Registry dengan layanan tersebut.
Langkah berikutnya
- Coba panduan memulai Docker.