Pemicu Eventarc mendeklarasikan minat Anda pada peristiwa atau rangkaian peristiwa tertentu. Anda dapat mengonfigurasi pemilihan rute peristiwa dengan menentukan filter untuk pemicu, termasuk sumber peristiwa, dan layanan Google Kubernetes Engine (GKE) target yang berjalan di cluster GKE. Perhatikan bahwa target hanya dapat menyertakan layanan yang berjalan di cluster GKE (publik atau pribadi) dengan endpoint publik. Untuk menargetkan layanan di cluster GKE dengan endpoint pribadi, rutekan peristiwa ke endpoint HTTP internal.
Eventarc mengirimkan peristiwa ke penerima peristiwa dalam format CloudEvents melalui permintaan HTTP.
Petunjuk ini menunjukkan cara mengonfigurasi pemilihan rute peristiwa ke layanan GKE yang dipicu oleh peristiwaCloud Pub/Sub langsung; dalam hal ini, pesan yang dipublikasikan ke topik Pub/Sub. Untuk mengetahui detail selengkapnya, lihat daftar peristiwa langsung yang didukung.
Sebelum memulai
Anda harus mengaktifkan Workload Identity Federation untuk GKE di cluster GKE tempat layanan tujuan berjalan. Workload Identity Federation untuk GKE diperlukan untuk menyiapkan pengirim peristiwa dengan benar dan merupakan cara yang direkomendasikan untuk mengakses layananGoogle Cloud dari aplikasi yang berjalan dalam GKE karena properti keamanan dan pengelolaannya yang lebih baik.
Workload Identity Federation for GKE
Aplikasi yang berjalan di GKE mungkin memerlukan akses keGoogle Cloud API. Workload Identity Federation untuk GKE memungkinkan akun layanan Kubernetes di cluster GKE Anda berfungsi sebagai akun layanan IAM. Pod yang menggunakan akun layanan Kubernetes yang dikonfigurasi akan otomatis melakukan autentikasi sebagai akun layanan IAM saat mengakses Google Cloud API. Dengan menggunakan Workload Identity Federation untuk GKE, Anda dapat menetapkan identitas dan otorisasi yang berbeda secara terperinci untuk setiap aplikasi di cluster. Perhatikan bahwa izin tertentu harus diberikan ke akun layanan pemicu Eventarc. Dalam dokumen ini, lihat langkah-langkah untuk Membuat akun layanan.
Untuk informasi selengkapnya tentang cara mengaktifkan dan mengonfigurasi Workload Identity Federation for GKE di cluster GKE, lihat Menggunakan Workload Identity Federation for GKE.
Pengirim peristiwa
Pengirim peristiwa Eventarc menarik peristiwa baru dari Eventarc dan meneruskannya ke tujuan GKE. Komponen ini bertindak sebagai mediator antara lapisan transpor Pub/Sub dan layanan GKE. Fitur ini berfungsi pada layanan yang ada dan juga mendukung layanan sinyal (termasuk yang tidak ditampilkan di luar cluster yang dikelola sepenuhnya) sekaligus menyederhanakan penyiapan dan pemeliharaan. Pada tingkat jaringan, untuk menerima peristiwa di layanan GKE, Anda tidak perlu membuka layanan untuk traffic eksternal karena semua peristiwa dikirimkan dari origin yang berada dalam cluster GKE yang sama.
Perhatikan bahwa siklus proses penerusan peristiwa dikelola oleh Eventarc, dan jika Anda tidak sengaja menghapus penerusan peristiwa, Eventarc akan memulihkan komponen ini.
Untuk setiap pemicu yang mengarah ke tujuan GKE, penerusan peristiwa (pod gke-forwarder
yang dikonfigurasi secara khusus) melakukan hal berikut:
Fungsi ini menggunakan Pub/Sub API untuk membuka koneksi
StreamingPull
ke transporter pemicu (topik dan langganan Pub/Sub) dan menerima peristiwa saat tersedia.Fungsi ini mengubah peristiwa ke format CloudEvents yang benar, serta mengenkode dan mengirimkannya sebagai permintaan
HTTP POST
ke layanan GKE target.
Agen layanan Eventarc memerlukan izin untuk menjalankan dan
memperbarui instance gke-forwarder
secara berkala. Izin ini harus diberikan
sekali per project. Untuk mengetahui detailnya, dalam dokumen ini, lihat
Mengaktifkan tujuan GKE.
Bersiap untuk membuat pemicu
Untuk setiap pemicu yang menargetkan layanan GKE, Eventarc akan membuat komponen penerusan peristiwa. Eventarc memerlukan izin untuk menginstal komponen dan mengelola resource di cluster GKE. Sebelum membuat pemicu Eventarc untuk tujuan GKE, pastikan Anda menyelesaikan tugas berikut.
Konsol
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat Google Cloud project.
Aktifkan Eventarc, Eventarc Publishing, Google Kubernetes Engine, dan Resource Manager API.
Jika berlaku, aktifkan API yang terkait dengan peristiwa langsung. Misalnya, untuk peristiwa Cloud Pub/Sub , aktifkan APICloud Pub/Sub .
Jika Anda belum memilikinya, buat akun layanan yang dikelola pengguna, lalu berikan peran dan izin yang diperlukan agar Eventarc dapat mengelola peristiwa untuk layanan target Anda.
Di konsol Google Cloud, buka halaman Create service account.
Pilih project Anda.
Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.
Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Contoh,
Service account for event trigger
.Klik Buat dan lanjutkan.
Untuk memberikan akses yang sesuai, di daftar Select a role, pilih peran Identity and Access Management (IAM) yang diperlukan untuk diberikan ke akun layanan Anda. Untuk mengetahui informasi selengkapnya, lihat Peran dan izin untuk target GKE.
Untuk peran tambahan, klik
Tambahkan peran lain, lalu tambahkan setiap peran tambahan.Klik Lanjutkan.
Untuk menyelesaikan pembuatan akun, klik Selesai.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Aktifkan Eventarc, Eventarc Publishing, Google Kubernetes Engine, dan Resource Manager API.
gcloud services enable eventarc.googleapis.com \ eventarcpublishing.googleapis.com \ container.googleapis.com \ cloudresourcemanager.googleapis.com
Jika berlaku, aktifkan API yang terkait dengan peristiwa langsung. Misalnya, untuk peristiwa Cloud Pub/Sub , aktifkan
pubsub.googleapis.com
.Jika Anda belum memilikinya, buat akun layanan yang dikelola pengguna, lalu berikan peran dan izin yang diperlukan agar Eventarc dapat mengelola peristiwa untuk tujuan GKE target Anda.
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAME
dengan nama akun layanan. Panjangnya harus antara 6 dan 30 karakter, serta dapat berisi karakter alfanumerik huruf kecil dan tanda pisah. Setelah membuat akun layanan, Anda tidak dapat mengubah namanya.Berikan peran atau izin Identity and Access Management (IAM) yang diperlukan. Untuk mengetahui informasi selengkapnya, lihat Peran dan izin untuk target GKE.
Mengaktifkan tujuan GKE
Untuk mengizinkan Eventarc mengelola resource di cluster GKE, aktifkan tujuan GKE, dan ikat agen layanan Eventarc dengan peran yang diperlukan.
Aktifkan tujuan GKE untuk Eventarc:
gcloud eventarc gke-destinations init
Pada perintah untuk mengikat peran yang diperlukan, masukkan
y
.Peran berikut terikat:
roles/compute.viewer
roles/container.developer
roles/iam.serviceAccountAdmin
Buat pemicu
Anda dapat membuat pemicu Eventarc menggunakan Google Cloud CLI atau melalui konsol Google Cloud.
Konsol
- Di konsol Google Cloud, buka halaman Pemicu Eventarc.
- Klik Create trigger.
- Ketik Nama pemicu.
Ini adalah ID pemicu dan harus diawali dengan huruf. Nama dapat berisi maksimal 63 huruf kecil, angka, atau tanda hubung.
- Untuk Jenis pemicu, pilih Sumber Google.
- Dalam daftar Penyedia peristiwa, pilih
Cloud Pub/Sub.
Perhatikan bahwa nama penyedia peristiwa yang digunakan dalam dokumentasiGoogle Cloud terkait mungkin tidak memiliki awalan Cloud atau Google Cloud. Misalnya, di konsol, Memorystore for Redis disebut sebagai Google Cloud Memorystore for Redis.
- Dalam daftar Jenis peristiwa, dari peristiwa Langsung, pilih google.cloud.pubsub.topic.v1.messagePublished.
- Di daftar Select a Cloud Pub/Sub topic, pilih topik atau terima setelan default None sehingga topik baru dibuat untuk Anda.
- Dalam daftar Region, pilih region yang sama dengan
layananGoogle Cloud yang menghasilkan peristiwa.
Untuk informasi selengkapnya, lihat Lokasi Eventarc.
- Pilih Service account yang akan memanggil layanan atau alur kerja Anda.
Atau, Anda dapat membuat akun layanan baru.
Ini menentukan email akun layanan Identity and Access Management (IAM) yang terkait dengan pemicu dan yang sebelumnya Anda berikan peran tertentu yang diperlukan oleh Eventarc.
- Dalam daftar Tujuan peristiwa, pilih Kubernetes Engine.
- Pilih layanan.
Ini adalah nama layanan yang menerima peristiwa untuk pemicu. Layanan harus berada dalam project yang sama dengan pemicu dan akan menerima peristiwa sebagai permintaan POST HTTP yang dikirim ke jalur URL root-nya (
/
), setiap kali peristiwa dibuat. - Secara opsional, Anda dapat menentukan Jalur URL Layanan untuk mengirim
permintaan masuk.
Ini adalah jalur relatif di layanan tujuan tempat peristiwa untuk pemicu harus dikirim. Misalnya:
/
,/route
,route
,route/subroute
. - Secara opsional, untuk menambahkan label, Anda dapat mengklik Apa yang dimaksud dengan label? Tambahkan label. Label adalah pasangan nilai kunci yang membantu Anda mengatur resourceGoogle Cloud . Untuk informasi selengkapnya, lihat
- Klik Buat.
Setelah pemicu dibuat, filter sumber peristiwa tidak dapat diubah. Sebagai gantinya, buat pemicu baru dan hapus pemicu lama. Untuk informasi selengkapnya, lihat Mengelola pemicu.
gcloud
Anda dapat membuat pemicu dengan menjalankan perintah gcloud eventarc triggers create
bersama dengan flag wajib dan opsional.
Pesan Pub/Sub (topik yang ada)
gcloud eventarc triggers create TRIGGER \ --location=LOCATION \ --destination-gke-cluster=DESTINATION_GKE_CLUSTER \ --destination-gke-location=DESTINATION_GKE_LOCATION \ --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \ --destination-gke-service=DESTINATION_GKE_SERVICE \ --destination-gke-path=DESTINATION_GKE_PATH \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ganti kode berikut:
TRIGGER
: ID pemicu atau ID yang memenuhi syarat sepenuhnyaLOCATION
: lokasi pemicu Eventarc. Atau, Anda dapat menetapkan propertieventarc/location
; misalnya,gcloud config set eventarc/location us-central1
.Pemicu Pub/Sub untuk Eventarc hanya tersedia di lokasi region tunggal, dan Anda tidak dapat membuat pemicu Eventarc global. Untuk informasi selengkapnya, lihat Lokasi Eventarc.
DESTINATION_GKE_CLUSTER
: nama cluster GKE tempat layanan GKE target yang menerima peristiwa berjalan.DESTINATION_GKE_LOCATION
: (opsional) Region Compute Engine cluster GKE tempat layanan GKE tujuan berjalan. Jika tidak ditentukan, cluster akan dianggap sebagai cluster regional dan berada di region yang sama dengan pemicu.DESTINATION_GKE_NAMESPACE
: (opsional) namespace tempat layanan GKE tujuan berjalan. Jika tidak ditentukan, namespacedefault
akan digunakan.DESTINATION_GKE_SERVICE
: nama layanan GKE yang menerima peristiwa untuk pemicu. Layanan dapat berada di lokasi mana pun yang didukung GKE dan tidak perlu berada di lokasi yang sama dengan pemicu. Namun, layanan harus berada dalam project yang sama dengan pemicu dan akan menerima peristiwa sebagai permintaan POST HTTP yang dikirim ke jalur URL root-nya (/
), setiap kali peristiwa dibuat.DESTINATION_GKE_PATH
: (opsional) jalur relatif yang Anda tentukan di layanan GKE tujuan tempat peristiwa untuk pemicu harus dikirim. Misalnya:/
,/route
,route
,route/subroute
.PROJECT_ID
: Google Cloud Project ID Anda.
TOPIC_ID
: ID topik Pub/Sub yang ada. Topik harus berada dalam project yang sama dengan pemicu.SERVICE_ACCOUNT_NAME
: nama akun layanan yang dikelola pengguna.
Catatan:
- Flag
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
diperlukan dan tidak dapat diubah. Untuk jenis peristiwa yang berbeda, Anda harus membuat pemicu baru. - Setiap pemicu dapat memiliki beberapa filter peristiwa, yang dipisahkan koma dalam satu
flag
--event-filters
=[ATTRIBUTE
=VALUE
,...], atau Anda dapat mengulangi flag untuk menambahkan lebih banyak filter. Hanya peristiwa yang cocok dengan semua filter yang dikirim ke tujuan. Karakter pengganti dan ekspresi reguler tidak didukung. - Flag
--transport-topic
digunakan untuk menentukan ID topik Pub/Sub yang ada atau ID yang sepenuhnya memenuhi syarat. - Secara default, langganan Pub/Sub yang dibuat untuk Eventarc akan tetap ada terlepas dari aktivitasnya dan tidak akan habis masa berlakunya. Untuk mengubah durasi ketidakaktifan, lihat Mengelola langganan.
Contoh:
gcloud eventarc triggers create helloworld-trigger \
--destination-gke-cluster=gke-events-cluster \
--destination-gke-location=us-central1-a \
--destination-gke-namespace=default \
--destination-gke-service=helloworld \
--destination-gke-path=/ \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
--transport-topic=projects/${PROJECT_ID}/topics/${TOPIC_ID} \
--service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
Perintah ini akan membuat pemicu yang disebut helloworld-trigger
untuk topik Pub/Sub yang diidentifikasi oleh projects/${PROJECT_ID}/topics/${TOPIC_ID}
.
Pesan Pub/Sub (topik baru)
gcloud eventarc triggers create TRIGGER \ --location=LOCATION \ --destination-gke-cluster=DESTINATION_GKE_CLUSTER \ --destination-gke-location=DESTINATION_GKE_LOCATION \ --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \ --destination-gke-service=DESTINATION_GKE_SERVICE \ --destination-gke-path=DESTINATION_GKE_PATH \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ganti kode berikut:
TRIGGER
: ID pemicu atau ID yang memenuhi syarat sepenuhnyaLOCATION
: lokasi pemicu Eventarc. Atau, Anda dapat menetapkan propertieventarc/location
; misalnya,gcloud config set eventarc/location us-central1
.Pemicu Pub/Sub untuk Eventarc hanya tersedia di lokasi satu region, dan Anda tidak dapat membuat pemicu Eventarc global. Untuk mengetahui informasi selengkapnya, lihat Lokasi Eventarc.
DESTINATION_GKE_CLUSTER
: nama cluster GKE tempat layanan GKE target yang menerima peristiwa berjalan.DESTINATION_GKE_LOCATION
: (opsional) Region Compute Engine cluster GKE tempat layanan GKE tujuan berjalan. Jika tidak ditentukan, cluster akan dianggap sebagai cluster regional dan berada di region yang sama dengan pemicu.DESTINATION_GKE_NAMESPACE
: (opsional) namespace tempat layanan GKE tujuan berjalan. Jika tidak ditentukan, namespacedefault
akan digunakan.DESTINATION_GKE_SERVICE
: nama layanan GKE yang menerima peristiwa untuk pemicu. Layanan dapat berada di lokasi mana pun yang didukung GKE dan tidak perlu berada di lokasi yang sama dengan pemicu. Namun, layanan harus berada dalam project yang sama dengan pemicu dan akan menerima peristiwa sebagai permintaan POST HTTP yang dikirim ke jalur URL root-nya (/
), setiap kali peristiwa dibuat.DESTINATION_GKE_PATH
: (opsional) jalur relatif yang Anda tentukan di layanan GKE tujuan tempat peristiwa untuk pemicu harus dikirim. Misalnya:/
,/route
,route
,route/subroute
.SERVICE_ACCOUNT_NAME
: nama akun layanan yang dikelola pengguna.PROJECT_ID
: Google Cloud Project ID Anda.
Catatan:
- Flag
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
diperlukan dan tidak dapat diubah. Untuk jenis peristiwa yang berbeda, Anda harus membuat pemicu baru. - Setiap pemicu dapat memiliki beberapa filter peristiwa, yang dipisahkan koma dalam satu
flag
--event-filters
=[ATTRIBUTE
=VALUE
,...], atau Anda dapat mengulangi flag untuk menambahkan lebih banyak filter. Hanya peristiwa yang cocok dengan semua filter yang dikirim ke tujuan. Karakter pengganti dan ekspresi reguler tidak didukung. - Secara default, langganan Pub/Sub yang dibuat untuk Eventarc akan tetap ada terlepas dari aktivitasnya dan tidak akan habis masa berlakunya. Untuk mengubah durasi ketidakaktifan, lihat Mengelola langganan.
Contoh:
gcloud eventarc triggers create helloworld-trigger \
--location=us-central1 \
--destination-gke-cluster=gke-events-cluster \
--destination-gke-location=us-central1-a \
--destination-gke-namespace=default \
--destination-gke-service=helloworld \
--destination-gke-path=/ \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
--service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
Tindakan ini akan membuat topik Pub/Sub baru dan pemicu untuk topik tersebut
yang disebut helloworld-trigger
.
Terraform
Anda dapat membuat pemicu untuk tujuan GKE menggunakan Terraform. Untuk mengetahui detailnya, lihat Membuat pemicu menggunakan Terraform.
Mencantumkan pemicu
Anda dapat mengonfirmasi pembuatan pemicu dengan mencantumkan pemicu Eventarc menggunakan Google Cloud CLI atau melalui konsol Google Cloud.
Konsol
Di konsol Google Cloud, buka halaman Pemicu Eventarc.
Halaman ini mencantumkan pemicu Anda di semua lokasi, dan menyertakan detail seperti nama, wilayah, penyedia peristiwa, tujuan, dan lainnya.
Untuk memfilter pemicu:
- Klik Filter atau kolom Filter triggers.
- Di daftar Properti, pilih opsi untuk memfilter pemicu.
Anda dapat memilih satu properti atau menggunakan operator logika
OR
untuk menambahkan properti lainnya.Untuk mengurutkan pemicu, di samping judul kolom yang didukung, klik
Urutkan.
gcloud
Jalankan perintah berikut untuk membuat daftar pemicu:
gcloud eventarc triggers list --location=-
Perintah ini mencantumkan pemicu Anda di semua lokasi, dan menyertakan detail seperti nama, jenis, tujuan, dan status.