Pemicu Eventarc mendeklarasikan minat Anda pada peristiwa atau kumpulan peristiwa tertentu. Anda dapat mengonfigurasi perutean peristiwa dengan menentukan filter untuk pemicu, termasuk sumber peristiwa, dan layanan Google Kubernetes Engine (GKE) target yang berjalan di cluster GKE. Perlu diperhatikan 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 perutean peristiwa ke layanan GKE yang dipicu oleh peristiwaFirebase Alerts langsung. Untuk detail selengkapnya, lihat daftar peristiwa langsung yang didukung.
Sebelum memulai
Anda harus mengaktifkan Workload Identity Federation for GKE di cluster GKE tempat layanan tujuan dijalankan. Workload Identity Federation untuk GKE diperlukan untuk menyiapkan forwarder peristiwa dengan benar dan merupakan cara yang direkomendasikan untuk mengakses Google Cloud layanan 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 ke Google Cloud API. Dengan Workload Identity Federation for GKE, akun layanan Kubernetes di cluster GKE Anda dapat 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 dan terperinci untuk setiap aplikasi di cluster Anda. Perhatikan bahwa izin khusus harus diberikan ke akun layanan pemicu Eventarc. Dalam dokumen ini, lihat langkah-langkah untuk Membuat akun layanan.
Untuk mengetahui informasi lebih lanjut tentang cara mengaktifkan dan mengonfigurasi Workload Identity Federation untuk GKE pada cluster GKE Anda, lihat Menggunakan Workload Identity Federation untuk GKE.
Penerusan peristiwa
Forwarder peristiwa Eventarc mengambil 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 sudah ada dan juga mendukung layanan pemberian sinyal (termasuk layanan yang tidak diekspos di luar cluster yang terkelola sepenuhnya) sekaligus menyederhanakan penyiapan dan pemeliharaan. Di tingkat jaringan, untuk menerima peristiwa di layanan GKE, Anda tidak perlu membuka layanan ke traffic eksternal karena semua peristiwa dikirim dari origin yang berada dalam cluster GKE yang sama.
Perhatikan bahwa siklus proses penerus peristiwa dikelola oleh Eventarc, dan jika Anda tidak sengaja menghapus penerus peristiwa, Eventarc akan memulihkan komponen ini.
Untuk setiap pemicu yang mengarah ke tujuan GKE, penerusan peristiwa (pod gke-forwarder
yang dikonfigurasi secara khusus) akan melakukan hal berikut:
Library ini menggunakan Pub/Sub API untuk membuka koneksi
StreamingPull
ke pengangkut pemicu (topik dan langganan Pub/Sub) dan menerima peristiwa saat tersedia.Layanan ini mengubah peristiwa ke dalam format CloudEvents yang benar, mengenkode, dan mengirimkannya sebagai permintaan
HTTP POST
ke layanan GKE target.
Agen layanan Eventarc memerlukan izin untuk berjalan dan memperbarui instance gke-forwarder
secara rutin. 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 membuat komponen penerus peristiwa. Eventarc memerlukan izin untuk menginstal komponen dan mengelola resource di cluster GKE. Sebelum membuat pemicu Eventarc untuk tujuan GKE, pastikan Anda menyelesaikan tugas-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 memungkinkan, aktifkan API yang terkait dengan peristiwa langsung. Misalnya, untuk Firebase Alerts peristiwa, aktifkan Firebase Alerts API.
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, pada daftar Select a role, pilih peran Identity and Access Management (IAM) yang diperlukan untuk diberikan ke akun layanan Anda. Untuk 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 memungkinkan, aktifkan API yang terkait dengan peristiwa langsung. Misalnya, untuk Firebase Alerts peristiwa, aktifkan
firestore.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 hingga 30 karakter, serta dapat berisi karakter alfanumerik huruf kecil dan tanda hubung. Setelah membuat akun layanan, Anda tidak dapat mengubah namanya.Memberikan peran atau izin Identity and Access Management (IAM) yang diperlukan. Untuk 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
Saat diminta 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 Triggers Eventarc.
- Klik Create trigger.
- Ketik Nama pemicu.
Ini adalah ID pemicu dan harus diawali dengan huruf. Kolom ini dapat berisi hingga 63 huruf kecil, angka, atau tanda hubung.
- Untuk Jenis pemicu, pilih Sumber Google.
- Dalam daftar Event provider, pilih
Firebase Alerts.
Perhatikan bahwa nama penyedia peristiwa yang digunakan dalam Google Cloud dokumentasi terkait mungkin tidak memiliki awalan Cloud atau Google Cloud. Misalnya, di konsol, Memorystore for Redis disebut sebagai Google Cloud Memorystore for Redis.
- Dalam daftar Event type, dari peristiwa Direct, pilih jenis peristiwa.
- Untuk menentukan encoding payload peristiwa, dalam daftar Jenis konten data peristiwa, pilih application/json atau application/protobuf.
Perhatikan bahwa payload peristiwa yang diformat dalam JSON lebih besar dari yang diformat dalam Protobuf. Hal ini dapat memengaruhi keandalan, bergantung pada tujuan peristiwa Anda dan batasnya pada ukuran peristiwa. Untuk mengetahui informasi selengkapnya, lihat Masalah umum.
- Dalam daftar Region, pilih global (Global).
Untuk mengetahui informasi selengkapnya, lihat Lokasi Eventarc.
- Di kolom Atribut 1, ID resource alerttype berfungsi sebagai filter peristiwa. Pilih operator untuk filter ini:
- Sama
- Pola jalur
Untuk mengetahui informasi selengkapnya, lihat Memahami pola jalur.
- Di kolom Nilai atribut 1, masukkan salah satu opsi berikut:
appDistribution.inAppFeedback
: peristiwa dikirim saat penguji mengirimkan masukan dalam aplikasi untuk aplikasi tertentuappDistribution.newTesterIosDevice
: peristiwa dikirim saat perangkat penguji iOS baru didaftarkan untuk aplikasi tertentubilling.planAutomatedUpdate
: peristiwa dikirim saat paket penagihan untuk project Firebase diperbarui secara otomatis; misalnya, saat paket didowngrade karena masalah pembayaranbilling.planUpdate
: peristiwa dikirim saat paket penagihan untuk project Firebase diubah oleh pengguna; misalnya, saat akun penagihan dikaitkan ke atau dilepaskan dari projectcrashlytics.missingSymbolFile
: peristiwa dikirim saat Firebase Crashlytics menyimpulkan bahwa peristiwa tersebut tidak memiliki simbol debug yang sesuai untuk menyimbolkan laporan error yang masukcrashlytics.newAnrIssue
: peristiwa dikirim saat aplikasi mengalami error aplikasi baru tidak merespons (ANR) (bukan untuk peristiwa identik berikutnya)crashlytics.newFatalIssue
: peristiwa dikirim saat aplikasi mengalami error fatal baru (bukan untuk peristiwa identik berikutnya)crashlytics.newNonfatalIssue
: peristiwa dikirim saat aplikasi mengalami error non-fatal baru (bukan untuk peristiwa identik berikutnya)crashlytics.regression
: peristiwa dikirim saat aplikasi mengalami error untuk masalah yang ditandai sebagai ditutup untuk versi aplikasi sebelumnyacrashlytics.stabilityDigest
: peristiwa dikirim saat ada notifikasi tentang masalah trending teratas di Crashlyticscrashlytics.velocity
: peristiwa dikirim saat satu masalah menyebabkan sejumlah besar sesi aplikasi mengalami errorperformance.threshold
: peristiwa dikirim saat performa metrik melewati nilai minimum yang ditetapkan
- Secara opsional, Anda dapat memfilter peristiwa untuk ID Aplikasi Firebase tertentu. Klik add Tambahkan filter, lalu tentukan appid.
- Pilih Service account yang akan memanggil layanan
atau alur kerja Anda.
Atau, Anda dapat membuat akun layanan baru.
Tindakan ini menentukan email akun layanan Identity and Access Management (IAM) yang terkait dengan pemicu dan tempat Anda sebelumnya memberikan peran tertentu yang diperlukan oleh Eventarc.
- Dalam daftar Event destination, 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. - Anda juga dapat menentukan Jalur URL layanan sebagai tujuan pengiriman
permintaan masuk.
Ini adalah jalur relatif pada layanan tujuan tempat peristiwa untuk pemicu harus dikirim. Contoh:
/
,/route
,route
,route/subroute
. - Jika ingin, untuk menambahkan label, Anda dapat mengklik Apa yang dimaksud dengan label? Tambahkan label. Label adalah key-value pair yang membantu Anda mengatur Google Cloud resource. Untuk mengetahui informasi selengkapnya, lihat
- Klik Buat.
Setelah pemicu dibuat, filter sumber peristiwa tidak dapat diubah. Sebagai gantinya, buat pemicu baru dan hapus yang lama. Untuk mengetahui informasi selengkapnya, lihat Mengelola pemicu.
gcloud
Anda dapat membuat pemicu dengan menjalankan perintah gcloud eventarc triggers create
beserta flag wajib dan opsional.
gcloud eventarc triggers create TRIGGER \ --location=global \ --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.firebase.firebasealerts.alerts.v1.published" \ --event-filters="alerttype=ALERT_TYPE" \ --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"
Ganti kode berikut:
TRIGGER
: ID pemicu atau ID yang sepenuhnya memenuhi syaratDESTINATION_GKE_CLUSTER
: nama cluster GKE tempat layanan GKE target yang menerima peristiwa dijalankan.DESTINATION_GKE_LOCATION
: (opsional) region Compute Engine cluster GKE tempat layanan GKE tujuan dijalankan. Jika tidak ditentukan, akan diasumsikan bahwa cluster adalah 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 salah satu lokasi 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 pada layanan GKE tujuan di mana peristiwa untuk pemicu akan dikirim. Contoh:/
,/route
,route
,route/subroute
.
ALERT_TYPE
: jenis pemberitahuan Firebase dan dapat berupa salah satu nilai berikut:appDistribution.inAppFeedback
: peristiwa dikirim saat penguji mengirimkan masukan dalam aplikasi untuk aplikasi tertentuappDistribution.newTesterIosDevice
: peristiwa dikirim saat perangkat penguji iOS baru didaftarkan untuk aplikasi tertentubilling.planAutomatedUpdate
: peristiwa dikirim saat paket penagihan untuk project Firebase diperbarui secara otomatis; misalnya, saat paket didowngrade karena masalah pembayaranbilling.planUpdate
: peristiwa dikirim saat paket penagihan untuk project Firebase diubah oleh pengguna; misalnya, saat akun penagihan dikaitkan ke atau dilepaskan dari projectcrashlytics.missingSymbolFile
: peristiwa dikirim saat Firebase Crashlytics menyimpulkan bahwa peristiwa tersebut tidak memiliki simbol debug yang sesuai untuk menyimbolkan laporan error yang masukcrashlytics.newAnrIssue
: peristiwa dikirim saat aplikasi mengalami error aplikasi baru tidak merespons (ANR) (bukan untuk peristiwa identik berikutnya)crashlytics.newFatalIssue
: peristiwa dikirim saat aplikasi mengalami error fatal baru (bukan untuk peristiwa identik berikutnya)crashlytics.newNonfatalIssue
: peristiwa dikirim saat aplikasi mengalami error non-fatal baru (bukan untuk peristiwa identik berikutnya)crashlytics.regression
: peristiwa dikirim saat aplikasi mengalami error untuk masalah yang ditandai sebagai ditutup untuk versi aplikasi sebelumnyacrashlytics.stabilityDigest
: peristiwa dikirim saat ada notifikasi tentang masalah trending teratas di Crashlyticscrashlytics.velocity
: peristiwa dikirim saat satu masalah menyebabkan sejumlah besar sesi aplikasi mengalami errorperformance.threshold
: peristiwa dikirim saat performa metrik melewati nilai minimum yang ditetapkan
ALERT_TYPE
harus berupa salah satu dari yang berikut:- Sama; misalnya,
--event-filters="alerttype=appDistribution.inAppFeedback"
- Pola jalur; misalnya,
--event-filters-path-pattern="alerttype=appDistribution.*"
atau--event-filters-path-pattern="alerttype=crashlytics.new*"
.Untuk mengetahui informasi selengkapnya, lihat Memahami pola jalur.
-
EVENT_DATA_CONTENT_TYPE
: (opsional) encoding payload peristiwa. ID ini dapat berupaapplication/json
atauapplication/protobuf
. Encoding default-nya adalahapplication/json
.Perhatikan bahwa payload peristiwa yang diformat dalam JSON lebih besar dari yang diformat dalam Protobuf. Hal ini dapat memengaruhi keandalan, bergantung pada tujuan peristiwa Anda dan batas ukuran peristiwa. Untuk mengetahui informasi selengkapnya, lihat Masalah umum.
SERVICE_ACCOUNT_NAME
: nama akun layanan yang dikelola pengguna.PROJECT_ID
: Google Cloud Project ID Anda.
Catatan:
- Flag
--location
harusglobal
. Untuk mengetahui informasi selengkapnya, lihat Lokasi Eventarc.
- Tanda berikut diperlukan:
--event-filters="type=google.firebase.firebasealerts.alerts.v1.published"
--event-filters="alerttype=ALERT_TYPE"
atau--event-filters-path-pattern="alerttype=ALERT_TYPE"
- Secara opsional, Anda dapat memfilter peristiwa untuk ID Aplikasi Firebase tertentu menggunakan tanda
--event-filters="appid=APP_ID"
dan dengan menentukan pencocokan persis. - Setelah pemicu dibuat, jenis filter peristiwa tidak dapat diubah. Untuk jenis peristiwa yang berbeda, Anda harus membuat pemicu baru dan menghapus pemicu yang lama.
- Tanda
--service-account
digunakan untuk menentukan email akun layanan Identity and Access Management (IAM) yang terkait dengan pemicu tersebut.
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-events \ --destination-gke-path=/ \ --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \ --event-filters="alerttype=crashlytics.velocity" \ --service-account="${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"
Perintah ini akan membuat pemicu yang disebut helloworld-trigger
untuk peristiwa yang diidentifikasi sebagai google.firebase.firebasealerts.alerts.v1.published
, dan untuk jenis pemberitahuan crashlytics.velocity
.
Terraform
Anda dapat membuat pemicu untuk tujuan GKE menggunakan Terraform. Untuk mengetahui detailnya, baca Membuat pemicu menggunakan Terraform.
Membuat daftar 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 Triggers 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 Pemicu filter.
- Di daftar Properti, pilih opsi untuk memfilter pemicu.
Anda dapat memilih satu properti atau menggunakan operator logika
OR
untuk menambahkan lebih banyak properti.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.