Memecahkan masalah Eventarc untuk Google Kubernetes Engine (GKE)

Halaman ini menunjukkan cara menyelesaikan masalah yang mungkin Anda alami saat menggunakan Eventarc untuk GKE, termasuk endpoint publik layanan pribadi dan publik yang berjalan di cluster GKE.

Untuk masalah lain yang mungkin juga Anda alami, lihat pemecahan masalah untuk:

Pembuatan pemicu gagal dengan error izin pembuatan resource

Anda menerima pesan error yang mirip dengan salah satu dari berikut ini:

Error applying IAM policy for service account 'projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT':
Error setting IAM policy for service account 'projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT':
googleapi: Error 403: Permission iam.serviceAccounts.setIamPolicy is required to perform this
operation on service account SERVICE_ACCOUNT., forbidden

Error when reading or editing Container Cluster "cluster": googleapi:
Error 403: Required "container.clusters.get" permission(s) for "..."., forbidden
Error reading instance group manager returned as an instance group URL:
"googleapi: Error 403: Required 'compute.instanceGroupManagers.get' permission
for '...', forbidden"

Error ini terjadi jika Anda belum menyiapkan akun layanan Eventarc dengan benar yang diperlukan oleh Eventarc untuk mengelola resource di cluster Google Kubernetes Engine (GKE).

Untuk mengatasi masalah ini, pastikan akun layanan Eventarc telah dikonfigurasi dengan benar dengan izin yang sesuai untuk membuat resource. Untuk informasi selengkapnya, ikuti petunjuk untuk penyedia, jenis peristiwa, dan tujuan GKE tertentu.

Pembuatan pemicu gagal karena cluster target tidak dapat ditemukan atau tidak mengaktifkan Workload Identity Federation untuk GKE

Anda menerima pesan error yang mirip dengan salah satu dari berikut ini:

ERROR: (gcloud.eventarc.triggers.create) NOT_FOUND: Not found: projects/PROJECT_ID/locations/
LOCATION/clusters/CLUSTER_NAME.
...
ERROR: (gcloud.eventarc.triggers.create) INVALID_ARGUMENT: workload identity is not enabled on
cluster CLUSTER_NAME in LOCATION
...

Error ini terjadi saat Eventarc tidak dapat menemukan cluster GKE target atau cluster tidak mengaktifkan Workload Identity Federation untuk GKE.

Untuk mengatasi masalah ini, pastikan cluster target ada dan telah mengaktifkan Workload Identity.

Pembuatan pemicu gagal karena status resource tidak valid

Anda menerima pesan error yang mirip dengan berikut ini untuk project Anda:

ERROR: (gcloud.eventarc.triggers.create) Invalid resource state for projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_ID.
Ensure that you have enabled your GKE destination and assigned required permissions to the service account.
For more information, see https://cloud.google.com/eventarc/standard/docs/gke/troubleshooting.

Error ini terjadi jika:

  • Tujuan GKE Anda belum diaktifkan.
  • Akun layanan belum diberi peran dan izin yang diperlukan untuk memungkinkan Eventarc mengelola peristiwa untuk tujuan GKE.

Untuk menyelesaikan masalah ini:

  1. Pastikan Anda telah mengaktifkan tujuan GKE:
    gcloud eventarc gke-destinations init
    Untuk informasi selengkapnya, ikuti petunjuk untuk penyedia dan jenis peristiwa tertentu di bagian "Mengaktifkan tujuan GKE".
  2. Pastikan akun layanan Eventarc telah dikonfigurasi dengan izin yang sesuai untuk membuat resource. Untuk informasi selengkapnya tentang cara memberikan peran yang sesuai ke akun layanan, ikuti petunjuk untuk penyedia dan jenis peristiwa tertentu di bagian "Bersiap untuk membuat pemicu".
  3. Jika error terus berlanjut, hubungi dukungan.

Pemicu berhasil dibuat, tetapi target tidak menerima peristiwa

Pastikan sudah cukup waktu yang berlalu sejak membuat pemicu. Diperlukan waktu hingga dua menit sebelum peristiwa dikirim.

  1. Jika peristiwa tidak dikirim ke target, peristiwa yang dikirim dari Pub/Sub ke target mungkin dihapus:

    Untuk memastikan peristiwa tidak dihapus, siapkan kebijakan percobaan ulang langganan Pub/Sub atau teruskan pesan yang tidak terkirim ke topik yang dihentikan pengirimannya (juga dikenal sebagai antrean yang dihentikan pengirimannya).

    Sebelum menetapkan topik yang dihentikan pengirimannya, ambil topik dan langganan pemicu:

    gcloud eventarc triggers describe TRIGGER \
      --location=LOCATION

    Ganti kode berikut:

    • TRIGGER: ID pemicu atau ID yang memenuhi syarat sepenuhnya.
    • LOCATION: lokasi pemicu Eventarc.
  2. Jika pemicu masih tidak berfungsi, periksa status komponen forwarder peristiwa Eventarc untuk melihat apakah komponen tersebut telah di-deploy dengan benar:

    1. Identifikasi namespace cluster dengan mencantumkan semua pod yang memiliki event-forwarder dalam namanya:
      kubectl get pods --all-namespaces | grep event-forwarder
      Outputnya mirip dengan berikut ini:
      event-forwarder-namespace-hash1   event-forwarder-hash1   1/1   Running   0   5d2h
      event-forwarder-namespace-hash2   event-forwarder-hash2   1/1   Running   0   2d2h
      
      30 karakter pertama namespace harus cocok dengan nama pemicu Eventarc yang Anda buat, diikuti dengan hash untuk membedakan pemicu apa pun dengan 30 karakter awal yang sama.
    2. Ambil detail deployment:
      kubectl get deployments -n EVENT_FORWARDER_NAMESPACE event-forwarder
    3. Ambil detail pod:
      kubectl describe pod -n EVENT_FORWARDER_NAMESPACE EVENT_FORWARDER_HASH
    4. Cetak log pod untuk menyelidiki penyebab atau tempat kegagalan terjadi:
      kubectl logs -f -n EVENT_FORWARDER_NAMESPACE EVENT_FORWARDER_HASH
      Misalnya, dalam log berikut, peran Pub/Sub Subscriber akun layanan telah dicabut:
      {"error":"generic::permission_denied: missing 'pubsub.subscriptions.consume' permission",
      "message":"Permissions check failed","severity":"fatal","timestamp":"2021-07-07T14:57:49.038877483Z"}