Anda dapat menerima notifikasi dari Pub/Sub untuk perubahan pada repositori Docker. Notifikasi berlaku untuk setiap image container yang disimpan di repositori, termasuk diagram Helm 3 yang dikemas dalam format OCI.
Pub/Sub memublikasikan pesan tentang repositori Anda ke resource bernama yang disebut topics. Aplikasi yang berlangganan topik Pub/Sub menerima pesan ini dan menerima notifikasi saat status repositori berubah.
Artifact Registry memublikasikan pesan untuk perubahan berikut:
- Upload gambar
- Tag baru ditambahkan ke gambar
- Penghapusan gambar
Selain itu, Anda dapat mengonfigurasi peran dan izin untuk memublikasikan atau berlangganan notifikasi.
Untuk informasi cara mengonfigurasi notifikasi Analisis Artefak untuk aktivitas seperti hasil pemindaian kerentanan baru, lihat Dokumentasi Analisis Artefak.
Ringkasan
Artifact Registry memublikasikan pesan tentang perubahan pada repositori dalam sebuah topik yang bernama gcr
.
Untuk menerima notifikasi, Anda harus:
- Buat topik bernama
gcr
di project dengan Artifact Registry. - Buat langganan ke topik.
- Siapkan aplikasi pelanggan Anda untuk menerima pesan tentang perubahan repositori.
- Jika memungkinkan, konfigurasikan izin untuk mengontrol akses ke topik dan langganan Anda.
Membuat topik Artifact Registry
Saat Anda mengaktifkan Artifact Registry API di project Google Cloud, Artifact Registry secara otomatis membuat topik Pub/Sub dengan ID topik gcr
. Jika Container Registry diaktifkan di project Google Cloud yang sama, topik tersebut mungkin sudah ada karena kedua layanan registry menggunakan topik yang sama untuk memublikasikan pesan.
Jika topik gcr
tidak sengaja dihapus atau hilang, Anda dapat menambahkannya sendiri. Misalnya, topik mungkin tidak ada jika organisasi Google Cloud Anda memiliki batasan kebijakan organisasi yang memerlukan enkripsi dengan kunci enkripsi yang dikelola pelanggan (CMEK). Jika Pub/Sub API tercantum dalam daftar tolak batasan ini, layanan tidak dapat membuat topik secara otomatis dengan kunci enkripsi yang dikelola Google.
Untuk melihat daftar topik yang ada, Anda dapat memeriksa halaman topik Pub/Sub di Konsol Google Cloud atau menjalankan perintah berikut:
gcloud pubsub topics list
Untuk membuat topik gcr
dengan kunci enkripsi yang dikelola Google:
Konsol
Buka halaman topik Pub/Sub di Konsol Google Cloud.
Klik Buat Topik.
Masukkan ID topik
gcr
.Klik Buat Topik.
gcloud
Jalankan perintah berikut:
gcloud pubsub topics create gcr --project=PROJECT-ID
Ganti PROJECT-ID dengan project ID Google Cloud Anda. Jika Anda menghilangkan flag --project
, perintah tersebut
akan menggunakan project saat ini.
Untuk mempelajari perintah gcloud pubsub topics
lebih lanjut, lihat
dokumentasi topics
.
Untuk membuat topik gcr
dengan enkripsi CMEK, lihat
petunjuk untuk mengenkripsi topik Pub/Sub.
Setelah membuat topik gcr
atau memverifikasi bahwa topik tersebut ada, Anda dapat
membuat langganan ke topik tersebut.
Membuat langganan
Setelah membuat topik untuk perubahan repositori, Anda dapat mengonfigurasi langganan yang menggunakan pengiriman push atau pengiriman pull. Sebaiknya gunakan pengiriman pull karena sistem CI/CD dapat menghasilkan banyak perubahan pada artefak yang tersimpan, dan pengiriman pull lebih efektif untuk pesan dalam jumlah besar.
Untuk membuat langganan dengan pengiriman pull:
Konsol
Buka halaman topik Pub/Sub di Konsol Google Cloud.
Klik topik project Anda.
Klik Buat Langganan.
Masukkan nama langganan:
projects/PROJECT/subscriptions/[SUBSCRIPTION-NAME]
Biarkan Jenis Pengiriman ditetapkan ke Pull.
Klik Create.
gcloud
Jalankan perintah berikut:
gcloud pubsub subscriptions create SUBSCRIPTION-NAME --topic=gcr
Ganti SUBSCRIPTION-NAME dengan nama untuk langganan
Untuk mempelajari perintah gcloud pubsub subscriptions
lebih lanjut, lihat
dokumentasi subscriptions
.
Anda sekarang memiliki langganan ke topik gcr
. Langkah berikutnya adalah
mengonfigurasi izin untuk identitas yang memicu perubahan
di repositori.
Mengonfigurasi aplikasi pelanggan Anda
Setelah membuat topik dan langganan ke topik tersebut, Anda dapat menyiapkan aplikasi pelanggan, yaitu aplikasi yang menerima pesan tentang perubahan pada repositori. Aplikasi pelanggan memenuhi tugas seperti notifikasi peristiwa, logging sistem, dan komunikasi antar-aplikasi.
Saat pengguna repositori mendorong atau menghapus image, langkah-langkah berikut akan terjadi:
Akun layanan Artifact Registry memublikasikan perubahan ke topik
gcr
Anda. Akun layanannya adalah service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com, dengan PROJECT-NUMBER adalah nomor project Google Cloud Anda. Akun layanan Artifact Registry memiliki izinpubsub.topics.publish
secara default sehingga dapat memublikasikan perubahan ke topik Anda.Jika administrator telah mencabut izin
pubsub.topics.publish
untuk akun layanan Artifact Registry, Artifact Registry telah mencoba memublikasikan pesan sebagai pengguna repositori. Dalam situasi ini, akun pengguna repositori harus memiliki izinpubsub.topics.publish
agar berhasil memublikasikan pesan.Pub/Sub meneruskan pesan dari topik ke langganan Anda.
Saat aplikasi pelanggan Anda membuat permintaan pesan, aplikasi tersebut akan mengambil pesan baru dari langganan.
Identitas yang mengambil pesan atas nama pelanggan harus memiliki izin untuk mengakses langganan. Anda dapat menggunakan peran Pub/Sub Subscriber untuk memberikan izin ini.
Untuk mempelajari cara menyiapkan pelanggan untuk menerima pesan dari langganan dengan pengiriman pull, lihat Menerima pesan menggunakan Pull.
Mengonfigurasi izin
Anda dapat menggunakan izin Pub/Sub untuk mengontrol akses ke topik dan langganan.
Untuk mengetahui informasi selengkapnya tentang izin Pub/Sub dan memberikan akses ke topik dan langganan, lihat dokumentasi kontrol akses Pub/Sub.
Contoh notifikasi
Pub/Sub mengirim notifikasi sebagai string berformat JSON. Tinjau contoh berikut untuk mempelajari apa yang akan terjadi saat menerima notifikasi Artifact Registry dari Pub/Sub.
Saat image dikirim ke Artifact Registry, payload notifikasi mungkin terlihat seperti ini:
{
"action":"INSERT",
"digest":"us-east1-docker.pkg.dev/my-project/my-repo/hello-world@sha256:6ec128e26cd5..."
}
Saat tag image baru dikirim ke Artifact Registry, payload notifikasi akan terlihat seperti ini:
{
"action":"INSERT",
"digest":"us-east1-docker.pkg.dev/my-project/my-repo/hello-world@sha256:6ec128e26cd5...",
"tag":"us-east1-docker.pkg.dev/my-project/my-repo/hello-world:1.1"
}
Pesan mengidentifikasi gambar yang relevan menggunakan kunci digest
atau tag
.
Jika tag image dihapus dari Artifact Registry, payload notifikasi mungkin terlihat seperti ini:
{
"action":"DELETE",
"tag":"us-east1-docker.pkg.dev/my-project/my-repo/hello-world:1.1"
}
Pesan mungkin berisi DELETE
atau INSERT
sebagai nilai untuk kunci
action
.
Langkah selanjutnya
- Baca dokumentasi Pub/Sub.
- Untuk penjelasan mendalam tentang Pub/Sub, lihat Apa yang dimaksud dengan Pub/Sub?
- Pelajari peran kontrol akses Pub/Sub lebih lanjut.