Dokumen ini menjelaskan cara menyiapkan repositori gcr.io
secara manual di Artifact Registry.
Sebaiknya gunakan alat migrasi otomatis kami untuk
transisi ke repositori gcr.io
di Artifact Registry.
Jika Anda ingin membuat repositori gcr.io
di Artifact Registry menggunakan kunci enkripsi yang dikelola pelanggan (CMEK), selesaikan langkah-langkah di bagian Sebelum memulai, lalu ikuti petunjuk dalam Pembuatan repositori manual.
Sebelum memulai
Instal Google Cloud CLI jika belum diinstal. Untuk penginstalan yang ada, jalankan perintah berikut untuk mengupdate komponen ke versi terbaru:
gcloud components update
Aktifkan Artifact Registry dan Resource Manager API. gcloud CLI menggunakan Resource Manager API untuk memeriksa salah satu izin yang diperlukan.
Jalankan perintah berikut:
gcloud services enable \ cloudresourcemanager.googleapis.com \ artifactregistry.googleapis.com
Pelajari pricing untuk Artifact Registry sebelum memulai transisi.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyiapkan repositori `gcr.io`, minta administrator Anda 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 membuat repositori
gcr.io
saat pertama kali mengirim image ke nama hostgcr.io
: Artifact Registry Create-on-push Writer (roles/artifactregistry.createOnPushWriter
) -
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.
Batasan
Batasan berikut berlaku untuk repositori dengan dukungan domain gcr.io
:
- Anda tidak dapat memetakan host Container Registry ke repositori Artifact Registry di project lain.
- Setiap nama host Container Registry hanya dipetakan ke satu repositori
gcr.io
Artifact Registry yang sesuai di multi-region yang sama. - Nama untuk repositori
gcr.io
telah ditetapkan sebelumnya dan Anda tidak dapat mengubahnya.
Jika memerlukan kontrol lebih besar atas lokasi repositori, Anda dapat
transisi ke repositori standar di domain pkg.dev
Artifact Registry. Karena repositori standar tidak memiliki dukungan untuk
domain gcr.io
, pendekatan transisi ini memerlukan lebih banyak perubahan pada otomatisasi dan alur kerja
yang ada. Lihat Memilih opsi transisi untuk mempelajari perbedaan fitur.
Membuat repositori
Buat repositori gcr.io
agar Anda dapat mengonfigurasi akses untuk pengguna dan menyalin image Container Registry yang ada ke Artifact Registry sebelum mengaktifkan pengalihan.
Pembuatan repositori yang cepat
Langkah-langkah ini akan membuat repositori gcr.io
yang dienkripsi dengan kunci enkripsi yang dikelola
Google. Jika ingin menggunakan
kunci enkripsi yang dikelola pelanggan (CMEK), Anda harus
membuat repositori secara manual.
Untuk membuat repositori gcr.io
:
Buka halaman Repositories di Konsol Google Cloud.
Di halaman, banner menampilkan pesan
You have gcr.io repositories in Container Registry
.Di banner, klik Buat repositori
gcr.io
.Panel Create
gcr.io
repository akan terbuka. Bagian Menyalin gambar mencantumkan nama yang sepenuhnya memenuhi syarat dari setiap repositori yang akan dibuat. Anda akan memerlukan nama repositori ini jika ingin menyalin image dari Container Registry sebelum mengaktifkan pengalihan.Klik Create.
Artifact Registry membuat repositori gcr.io
untuk semua nama host Container Registry:
Nama host Container Registry | Nama repositori Artifact Registry |
---|---|
gcr.io | gcr.io |
asia.gcr.io | asia.gcr.io |
eu.gcr.io | eu.gcr.io |
us.gcr.io | us.gcr.io |
Agar dapat melihat URL Artifact Registry untuk repositori, tahan kursor ke ikon peringatan () di samping nama repositori.
Sebelum mengalihkan traffic ke repositori baru, Anda harus memastikan bahwa otomatisasi yang ada dapat mengakses repositori. Langkah selanjutnya adalah mengonfigurasi izin untuk memberikan akses ke repositori.
Pembuatan repositori manual
Buat repositori gcr.io
secara manual jika Anda ingin menggunakan
kunci enkripsi yang dikelola pelanggan (CMEK) untuk mengenkripsi
konten repositori atau jika ada batasan lokasi di
organisasi Google Cloud Anda yang memblokir pembuatan resource baru di
lokasi tertentu.
Untuk membuat repositori gcr.io secara manual:
Jika Anda menggunakan CMEK, buat kunci yang akan digunakan dengan repositori ini dan berikan izin untuk menggunakan kunci tersebut. Lihat Mengaktifkan kunci enkripsi yang dikelola pelanggan.
Tambahkan repositori.
Konsol
Buka halaman Repositories di Konsol Google Cloud.
Klik Create Repository.
Tentukan nama repositori.
Nama host Container Registry Nama repositori Artifact Registry gcr.io gcr.io asia.gcr.io asia.gcr.io eu.gcr.io eu.gcr.io us.gcr.io us.gcr.io Menentukan Docker sebagai format repositori.
Di bagian Location Type, tentukan multi-region untuk repositori:
Nama host Container Registry Lokasi repositori Artifact Registry gcr.io us asia.gcr.io asia eu.gcr.io europe us.gcr.io us Tambahkan deskripsi untuk repositori. Jangan sertakan data sensitif, karena deskripsi repositori tidak dienkripsi.
Di bagian Enkripsi, pilih mekanisme enkripsi untuk repositori.
- Kunci yang dikelola Google - Enkripsi konten repositori dengan kunci enkripsi yang dikelola Google.
- Kunci yang dikelola pelanggan - Enkripsi konten repositori dengan kunci yang Anda kontrol melalui Cloud Key Management Service. Untuk mengetahui petunjuk penyiapan utama, lihat Menyiapkan CMEK untuk repositori.
Klik Create.
gcloud
Jalankan perintah berikut untuk membuat repositori baru.
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=LOCATION \ --description=DESCRIPTION \ --kms-key=KMS-KEY
Ganti nilai berikut:
REPOSITORY adalah nama repositori.
Nama host Container Registry Nama repositori Artifact Registry gcr.io gcr.io asia.gcr.io asia.gcr.io eu.gcr.io eu.gcr.io us.gcr.io us.gcr.io LOCATION adalah multi-region untuk repositori:
Nama host Container Registry Lokasi repositori Artifact Registry gcr.io us asia.gcr.io asia eu.gcr.io europe us.gcr.io us DESCRIPTION adalah deskripsi repositori. Jangan sertakan data sensitif, karena deskripsi repositori tidak dienkripsi.
KMS-KEY adalah jalur lengkap ke kunci enkripsi Cloud KMS, jika Anda menggunakan kunci enkripsi yang dikelola pelanggan untuk mengenkripsi konten repositori. Jalur tersebut dalam format:
projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY
Ganti nilai berikut:
- KMS-PROJECT adalah project tempat kunci Anda disimpan.
- KMS-LOCATION adalah lokasi kunci.
- KEY-RING adalah nama key ring.
- KEY adalah nama kunci.
Anda dapat mengonfirmasi bahwa repositori dibuat dengan mencantumkan repositori Anda menggunakan perintah berikut:
gcloud artifacts repositories list
Sebelum mengalihkan traffic ke repositori baru, Anda harus memastikan bahwa otomatisasi yang ada dapat mengakses repositori. Langkah selanjutnya adalah mengonfigurasi izin untuk memberikan akses ke repositori.
Memberikan izin ke repositori
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.
- Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.
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
- gcr.io:
Klik tab Izin.
Pada tab Izin, klik subtab Lihat menurut peran.
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.
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)
- Hapus beberapa gambar
Penulis Bucket Lama Penyimpanan
(roles/storage.legacyBucketWriter
)Administrator Repositori Artifact Registry
(roles/artifactregistry.repoAdmin)
Repositori Artifact Registry atau project Google Cloud Buat repositori gcr.io di Artifact Registry saat pertama kali mengirim image ke nama host gcr.io dalam sebuah project. Admin Penyimpanan
(roles/storage.admin
)Administrator Repositori Create-on-push Artifact Registry
(roles/artifactregistry.createOnPushRepoAdmin)
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.
Menyalin container dari Container Registry
Sebaiknya gunakan alat migrasi otomatis kami untuk menyalin image Anda dari Container Registry ke Artifact Registry.
Jika Anda ingin menggunakan alat lain untuk menyalin image, lihat Menyalin image dari Container Registry
Menyiapkan fitur lainnya
Bagian ini menjelaskan konfigurasi untuk fitur lain yang mungkin telah Anda siapkan di Container Registry.
Artifact Analysis
Artifact Analysis mendukung Container Registry dan Artifact Registry. Kedua produk tersebut menggunakan Artifact Analysis API yang sama untuk metadata gambar dan pemindaian kerentanan, serta topik Pub/Sub yang sama untuk notifikasi Analisis Artefak.
Namun, tindakan berikut hanya terjadi saat pengalihan diaktifkan:
- Pemindaian otomatis repositori
gcr.io
di Artifact Registry. - Menyertakan aktivitas repositori
gcr.io
dalam notifikasi Pub/Sub.
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.
|
Memindai kerentanan paket OS dan bahasa dengan pemindaian otomatis dan on demand.
Pelajari lebih lanjut jenis-jenis pemindaian.
|
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. Namun, Artifact Registry tidak memublikasikan pesan untuk repositori gcr.io
hingga Anda mengaktifkan pengalihan.
Jika Anda menyiapkan Artifact Registry dalam project terpisah, topik gcr
mungkin tidak ada. Untuk petunjuk penyiapan, lihat
Mengonfigurasi notifikasi Pub/Sub.
Aktifkan pengalihan traffic gcr.io
Setelah membuat repositori gcr.io
serta mengonfigurasi izin dan autentikasi untuk
klien pihak ketiga, Anda dapat mengaktifkan pengalihan traffic gcr.io
.
Jika mengalami masalah setelah mengaktifkan pengalihan, Anda dapat mengarahkan traffic kembali ke Container Registry, lalu mengaktifkan pengalihan lagi setelah masalah tersebut diatasi.
Memverifikasi izin untuk mengaktifkan pengalihan
Untuk mengaktifkan pengalihan, Anda harus memiliki izin berikut pada level project:
artifactregistry.projectsettings.update
: Izin untuk memperbarui setelan project Artifact Registry. Izin ini ada dalam peran Administrator Artifact Registry (roles/artifactregistry.admin
).storage.buckets.update
- Izin untuk memperbarui bucket penyimpanan di seluruh project. Izin ini berada dalam peran Storage Admin (roles/storage.admin
).
Jika Anda tidak memiliki izin ini, minta administrator untuk memberikannya di level project.
Perintah berikut memberikan peran Artifact Registry Administrator dan Storage Admin pada sebuah project.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:PRINCIPAL' \
--role='roles/artifactregistry.admin'
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:PRINCIPAL' \
--role='roles/storage.admin'
Ganti nilai berikut:
- PROJECT_ID adalah project ID Google Cloud.
- PRINCIPAL adalah alamat email untuk akun yang sedang Anda perbarui.
Misalnya
user:my-user@example.com
Memvalidasi penyiapan project
Untuk memvalidasi penyiapan project Anda, jalankan perintah berikut:
gcloud artifacts settings enable-upgrade-redirection \
--project=PROJECT_ID --dry-run
Ganti PROJECT_ID dengan project ID Google Cloud Anda.
Artifact Registry memeriksa repositori yang dipetakan ke nama host Container Registry.
Meskipun Artifact Registry dapat membuat repositori gcr.io yang hilang saat Anda mengaktifkan pengalihan, sebaiknya Anda membuatnya terlebih dahulu sehingga Anda dapat melakukan tindakan ini sebelum mengaktifkan pengalihan:
- Mengonfigurasi izin tingkat repositori
- Menyalin image dari Container Registry yang masih ingin Anda gunakan
- Lakukan konfigurasi tambahan.
Mengaktifkan pengalihan
Untuk mengaktifkan pengalihan untuk traffic gcr.io
:
Konsol
Buka halaman Setelan di konsol Google Cloud.
Klik Route to Artifact Registry.
gcloud
Untuk mengaktifkan pengalihan, jalankan perintah:
gcloud artifacts settings enable-upgrade-redirection \
--project=PROJECT_ID
Ganti PROJECT_ID dengan project ID Google Cloud Anda.
Artifact Registry mulai mengaktifkan pengalihan.
Untuk memeriksa status pengalihan saat ini, jalankan perintah berikut:
gcloud artifacts settings describe
Saat pengalihan diaktifkan, hasilnya adalah:
legacyRedirectionState: REDIRECTION_FROM_GCR_IO_ENABLED
Semua traffic ke gcr.io
, asia.gcr.io
, eu.gcr.io
, dan us.gcr.io
akan dialihkan, meskipun Anda tidak membuat repositori gcr.io untuk semua nama host Container Registry. Jika Anda mengirim image ke nama host yang tidak memiliki repositori Artifact Registry yang sesuai, Artifact Registry akan membuat repositori jika Anda memiliki peran dengan izin artifactregistry.repositories.createOnPush
. Peran bawaan Create-on-push Writer
(artifactregistry.createOnPushWriter
) dan Create-on-push Repository Administrator (artifactregistry.createOnPushRepoAdmin
) memiliki izin ini.
Dengan mengaktifkan pengalihan, Anda dapat menguji otomatisasi dan memverifikasi bahwa Anda dapat mengirim dan mengambil image menggunakan repositori gcr.io yang baru.
Memverifikasi pengalihan
Pastikan permintaan pull dan push ke nama host gcr.io
berfungsi.
Kirim image pengujian ke salah satu repositori gcr.io Anda menggunakan jalur
gcr.io
.Beri tag pada gambar menggunakan jalur
gcr.io
. Misalnya, perintah ini menandai gambarlocal-image
sebagaius.gcr.io/my-project/test-image
:docker tag local-image us.gcr.io/my-project/test-image
Kirim gambar yang Anda beri tag. Misalnya, perintah ini mengirim gambar
us.gcr.io/my-project/test-image
:docker push us.gcr.io/my-project/test-image
Cantumkan image di repositori untuk memverifikasi bahwa image berhasil diupload. Misalnya, untuk menampilkan gambar di
us.gcr.io/my-project
, jalankan perintah:gcloud container images list --repository=us.gcr.io/my-project
Ambil image dari repositori menggunakan jalur Container Registry-nya. Misalnya, perintah ini akan menarik image
us.gcr.io/my-project/test-image
.docker pull us.gcr.io/my-project/test-image
Setelah pengujian awal ini, pastikan bahwa otomatisasi yang ada untuk mem-build dan men-deploy image berfungsi seperti yang diharapkan, termasuk:
- Pengguna dan akun layanan yang menggunakan Container Registry masih dapat mendorong, menarik, dan men-deploy image saat pengalihan diaktifkan.
- Otomatisasi Anda hanya mengirim image ke repositori yang ada.
- Jika pemindaian kerentanan Artifact Analysis diaktifkan, pemindaian akan mengidentifikasi image yang memiliki kerentanan di repositori gcr.io.
- Jika Anda menggunakan Otorisasi Biner, kebijakan yang sudah ada akan berfungsi dengan benar untuk image yang di-deploy dari repositori gcr.io.
- Langganan Pub/Sub yang dikonfigurasi menyertakan notifikasi untuk perubahan pada repositori gcr.io Anda.
Membersihkan image Container Registry
Jika pengalihan diaktifkan, perintah untuk menghapus image di jalur gcr.io
akan menghapus image di repositori gcr.io
Artifact Registry yang sesuai.
Menghapus perintah untuk menghapus image di jalur gcr.io
tidak akan menghapus image yang disimpan di host Container Registry.
Untuk menghapus semua image Container Registry dengan aman, hapus bucket Cloud Storage untuk setiap nama host Container Registry.
Untuk menghapus setiap bucket penyimpanan Container Registry:
Konsol
- Buka halaman Cloud Storage di konsol Google Cloud.
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
- gcr.io:
Klik Delete. Kotak dialog konfirmasi akan muncul.
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
- Coba panduan memulai Docker.
- Pelajari
gcr.io
repositori.