gcr.io yang dihosting di Artifact Registry secara default

Pelajari cara menyiapkan repositori gcr.io di Artifact Registry, dan pelajari perbedaan antara izin Artifact Registry dan Container Registry serta konfigurasi bucket penyimpanan.

Langkah-langkah manual yang dijelaskan dalam dokumen ini dapat diselesaikan menggunakan alat migrasi otomatis. Jika Anda ingin menggunakan alat migrasi otomatis untuk mentransisikan project dengan penggunaan Container Registry yang aktif ke repositori standar Artifact Registry atau repositori gcr.io, lihat Mengotomatiskan migrasi ke Artifact Registry.

Penghentian penggunaan Container Registry

Project Google Cloud yang belum menggunakan Container Registry sebelum 15 Mei 2024 hanya akan mendukung hosting dan pengelolaan image di Artifact Registry. Perubahan ini memengaruhi:

  • Project yang baru dibuat.
  • Project yang sudah ada tempat Anda belum mengirim image ke Container Registry.

Organisasi yang belum pernah menggunakan Container Registry sebelum 8 Januari 2024 akan memiliki repositori gcr.io baru yang dihosting di Artifact Registry secara default.

Saat Anda mengaktifkan Artifact Registry API dalam project ini, Artifact Registry akan otomatis menangani pembuatan repositori gcr.io di Artifact Registry dan mengalihkan permintaan ke domain gcr.io ke repositori Artifact Registry yang sesuai. Tidak seperti dukungan domain gcr.io yang ada dalam project dengan penggunaan Container Registry yang aktif, pengalihan ke Artifact Registry akan otomatis.

Container Registry akan tetap tersedia di project yang salah satu tindakan berikut terjadi sebelum 15 Mei 2024:

  • Anda telah mengaktifkan Container Registry API di project.
  • Anda mengirimkan image ke host registry dalam project.

Untuk bersiap menghadapi perubahan mendatang, sebaiknya Anda:

  • Ikuti petunjuk dalam dokumen ini untuk mengonfigurasi project yang tidak Anda gunakan untuk Container Registry agar siap untuk penanganan otomatis permintaan gcr.io saat perubahan diterapkan.
  • Uji dukungan domain gcr.io untuk memverifikasi bahwa otomatisasi yang ada akan terus berfungsi.

Repositori gcr.io yang dihosting di Artifact Registry dibuat di multi-region yang sama dengan yang didukung Container Registry. Jika ingin menyimpan image di region lain, Anda harus transisi ke repositori standar di domain pkg.dev.

Peran yang diperlukan

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

  • Untuk membuat repositori Artifact Registry dan memberikan akses ke repositori individual: Artifact Registry Administrator (roles/artifactregistry.admin) pada project
  • Untuk melihat dan mengelola konfigurasi Container Registry yang ada yang diterapkan ke bucket penyimpanan Cloud Storage: Storage Admin (roles/storage.admin) pada project
  • 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) pada project, folder, atau organisasi
  • Untuk menampilkan daftar layanan yang diaktifkan dalam organisasi: Cloud Asset Viewer (roles/cloudasset.viewer) di organisasi

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.

Sebelum memulai

Anda dapat menampilkan daftar project yang menyimpan minimal satu image di Container Registry. Anda kemudian dapat berfokus pada penyiapan project lain untuk menghosting permintaan gcr.io di Artifact Registry menggunakan petunjuk dalam dokumen ini.

Jalankan perintah berikut untuk menemukan penggunaan Container Registry di organisasi Google Cloud Anda.

  gcloud container images list-gcr-usage \
      --organization=ORGANIZATION

Ganti ORGANIZATION dengan ID organisasi Google Cloud Anda.

Anda juga dapat mencantumkan penggunaan Container Registry untuk project atau folder Anda. Untuk mengetahui informasi lebih lanjut tentang cara menemukan penggunaan Container Registry, lihat Memeriksa penggunaan Container Registry.

Mengaktifkan API

Aktifkan Artifact Registry API sehingga permintaan ke domain gcr.io akan otomatis ditangani oleh Artifact Registry saat hosting gcr.io otomatis diterapkan.

  1. Jalankan perintah berikut:

    gcloud services enable \
        artifactregistry.googleapis.com
    
  2. Jika Anda biasanya menempatkan Container Registry API di perimeter layanan Kontrol Layanan VPC, pastikan Anda juga menempatkan Artifact Registry API di perimeter tersebut. Lihat Mengamankan repositori di perimeter layanan untuk mengetahui petunjuknya.

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.

  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.

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.

Konfigurasi bucket penyimpanan

Saat Anda membuat repositori di Artifact Registry, Artifact Registry tidak akan membuat bucket Cloud Storage yang sesuai di project Anda. Jika memiliki otomatisasi untuk Container Registry yang berinteraksi langsung dengan bucket penyimpanan, Anda harus memperbaruinya untuk membuat perubahan yang sesuai pada repositori Artifact Registry.

Misalnya, jika Anda secara terprogram memberikan izin Cloud Storage pada bucket penyimpanan untuk Container Registry, Anda harus memperbarui otomatisasi tersebut untuk memberikan izin Artifact Registry pada repositori Artifact Registry yang menghosting image untuk domain gcr.io.

Di Artifact Registry, Anda menetapkan metode enkripsi untuk data yang disimpan di repositori, bukan bucket penyimpanan. Hosting gcr.io otomatis di Artifact Registry 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 gcr.io sendiri dan menentukan CMEK sebagai metode enkripsi saat membuatnya.

Untuk membuat repositori gcr.io secara manual:

  1. 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.

  2. Tambahkan repositori.

    Konsol

    1. Buka halaman Repositories di Konsol Google Cloud.

      Buka halaman Repositori

    2. Klik Create Repository.

    3. 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
    4. Menentukan Docker sebagai format repositori.

    5. 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
    6. Tambahkan deskripsi untuk repositori. Jangan sertakan data sensitif, karena deskripsi repositori tidak dienkripsi.

    7. 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.
    8. 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
    

Langkah selanjutnya

Siapkan dukungan domain gcr.io dalam project pengujian untuk memverifikasi bahwa otomatisasi dan integrasi yang ada dengan layanan seperti Cloud Build, Google Kubernetes Engine, atau Cloud Functions berfungsi seperti yang diharapkan.