Mengonfigurasi notifikasi Pub/Sub

Anda dapat menerima notifikasi dari Pub/Sub untuk perubahan pada repositori Docker. Notifikasi berlaku untuk image container apa pun yang disimpan di repositori, termasuk chart Helm 3 yang dikemas dalam format OCI.

Pub/Sub memublikasikan pesan tentang repositori Anda ke resource bernama yang disebut topik. 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 mengetahui informasi tentang cara mengonfigurasi notifikasi Artifact Analysis untuk aktivitas seperti hasil pemindaian kerentanan baru, lihat dokumentasi Artifact Analysis.

Ringkasan

Artifact Registry memublikasikan pesan tentang perubahan pada repositori dalam topik bernama gcr.

Untuk menerima notifikasi, Anda harus:

  1. Buat topik bernama gcr di project dengan Artifact Registry.
  2. Buat langganan ke topik.
  3. Siapkan aplikasi subscriber untuk menerima pesan tentang perubahan repositori.
  4. Jika sesuai, konfigurasi izin untuk mengontrol akses ke topik dan langganan Anda.

Membuat topik Artifact Registry

Untuk membuat topik gcr dengan kunci enkripsi yang didukung Google Cloud :

Konsol

  1. Buka halaman topik Pub/Sub di konsol Google Cloud .

    Buka halaman topik Pub/Sub

  2. Klik Buat Topik.

  3. Masukkan ID topik gcr.

  4. Klik Buat Topik.

gcloud

Jalankan perintah berikut:

    gcloud pubsub topics create gcr --project=PROJECT-ID

Ganti PROJECT-ID dengan Google Cloud project ID Anda. Jika Anda menghapus tanda --project, perintah 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 keberadaannya, Anda dapat membuat langganan ke topik tersebut.

Membuat langganan

Setelah membuat topik untuk perubahan repositori, Anda dapat mengonfigurasi langganan ke topik tersebut yang menggunakan pengiriman push atau pengiriman pull. Sebaiknya gunakan pengiriman pull karena sistem CI/CD dapat menghasilkan banyak perubahan pada artefak yang disimpan, dan pengiriman pull lebih efektif untuk volume pesan yang besar.

Untuk membuat langganan dengan pengiriman pull:

Konsol

  1. Buka halaman topik Pub/Sub di konsol Google Cloud .

    Buka halaman topik Pub/Sub

  2. Klik topik project Anda.

  3. Klik Buat Langganan.

  4. Masukkan nama langganan:

    projects/PROJECT/subscriptions/[SUBSCRIPTION-NAME]
    

    Biarkan Delivery Type ditetapkan ke Pull.

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

Sekarang Anda memiliki langganan untuk topik gcr. Langkah selanjutnya adalah mengonfigurasi izin untuk identitas yang memicu perubahan di repositori.

Mengonfigurasi aplikasi pelanggan

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 mengirim atau menghapus gambar, langkah-langkah berikut akan terjadi:

  1. Akun layanan Artifact Registry memublikasikan perubahan ke topik gcr Anda. Akun layanan tersebut adalah service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com, dengan PROJECT-NUMBER adalah Google Cloud nomor project Anda. Akun layanan Artifact Registry memiliki izin pubsub.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 akan mencoba memublikasikan pesan sebagai pengguna repositori. Dalam situasi ini, akun pengguna repositori harus memiliki izin pubsub.topics.publish agar berhasil memublikasikan pesan.

  2. Pub/Sub meneruskan pesan dari topik ke langganan Anda.

  3. Saat aplikasi pelanggan Anda membuat permintaan untuk pesan, aplikasi tersebut akan menarik pesan baru dari langganan.

    Identitas yang menarik pesan atas nama pelanggan harus memiliki izin untuk mengakses langganan. Anda dapat menggunakan peran Pelanggan Pub/Sub untuk memberikan izin ini.

Untuk mempelajari cara menyiapkan pelanggan agar menerima pesan dari langganan dengan pengiriman tarik, lihat Menerima pesan menggunakan Tarik.

Mengonfigurasi izin

Anda dapat menggunakan izin Pub/Sub untuk mengontrol akses ke topik dan langganan Anda.

Untuk mengetahui informasi selengkapnya tentang izin Pub/Sub dan pemberian akses ke topik dan langganan, lihat dokumentasi kontrol akses Pub/Sub.

Contoh notifikasi

Pub/Sub mengirimkan notifikasi sebagai string berformat JSON. Tinjau contoh berikut untuk mempelajari apa yang akan Anda dapatkan saat menerima notifikasi Artifact Registry dari Pub/Sub.

Saat image dikirim ke Artifact Registry, payload notifikasi mungkin terlihat seperti ini:

{
  "action":"INSERT",
  "digest":"us-west1-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-west1-docker.pkg.dev/my-project/my-repo/hello-world@sha256:6ec128e26cd5...",
  "tag":"us-west1-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-west1-docker.pkg.dev/my-project/my-repo/hello-world:1.1"
}

Pesan dapat berisi DELETE atau INSERT sebagai nilai untuk kunci action.

Langkah berikutnya