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 karena error izin pembuatan resource

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

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 saat 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 mengetahui 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 pesan berikut:

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 saat:

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

Untuk menyelesaikan masalah ini:

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

Pemicu berhasil dibuat, tetapi target tidak menerima peristiwa

Pastikan waktu yang cukup telah berlalu sejak pemicu dibuat. Mungkin perlu waktu hingga dua menit sebelum peristiwa dikirim.

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

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

    Sebelum menyetel 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 penerusan 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 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 alasan atau tempat terjadinya kegagalan:
      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"}