Risolvere i problemi di Eventarc per Google Kubernetes Engine (GKE)

Questa pagina mostra come risolvere i problemi che potresti riscontrare quando utilizzi Eventarc per GKE, inclusi gli endpoint pubblici di servizi privati e pubblici in esecuzione in un cluster GKE.

Per altri problemi che potresti riscontrare, consulta la risoluzione dei problemi per:

La creazione del trigger non riesce a causa di errori di autorizzazione per la creazione delle risorse

Ricevi messaggi di errore simili a uno dei seguenti:

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"

Questo errore si verifica quando non hai configurato correttamente l'account di servizio Eventarc richiesto da Eventarc per gestire le risorse nel cluster Google Kubernetes Engine (GKE).

Per risolvere il problema, assicurati che il account di servizio Eventarc sia stato configurato correttamente con le autorizzazioni appropriate per creare risorse. Per ulteriori informazioni, segui le istruzioni per un provider, un tipo di evento e una destinazione GKE specifici.

La creazione del trigger non riesce perché non è possibile trovare il cluster di destinazione o perché non è abilitata la federazione delle identità per i carichi di lavoro per GKE

Ricevi messaggi di errore simili a uno dei seguenti:

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

Questo errore si verifica quando Eventarc non riesce a trovare il cluster GKE di destinazione o quando il cluster non ha abilitato la federazione delle identità per i carichi di lavoro per GKE.

Per risolvere il problema, assicurati che il cluster di destinazione esista e che abbia Workload Identity abilitato.

La creazione dell'attivatore non riesce a causa dello stato della risorsa non valido

Ricevi un messaggio di errore simile al seguente per il tuo progetto:

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.

Questo errore si verifica quando:

  • La destinazione GKE non è stata abilitata.
  • All'account di servizio non sono stati concessi i ruoli e le autorizzazioni richiesti che consentono a Eventarc di gestire gli eventi per le destinazioni GKE.

Per risolvere il problema:

  1. Assicurati di aver abilitato le destinazioni GKE:
    gcloud eventarc gke-destinations init
    Per ulteriori informazioni, segui le istruzioni per un provider e un tipo di evento specifici nella sezione "Abilita destinazioni GKE".
  2. Assicurati che il account di servizio Eventarc sia stato configurato con le autorizzazioni appropriate per creare risorse. Per ulteriori informazioni su come concedere i ruoli appropriati al account di servizio, segui le istruzioni per un provider e un tipo di evento specifici nella sezione "Prepararsi a creare un trigger".
  3. Se l'errore persiste, contatta l'assistenza.

Il trigger è stato creato correttamente, ma la destinazione non riceve eventi

Verifica che sia trascorso un tempo sufficiente dalla creazione del trigger. Potrebbero essere necessari fino a due minuti prima dell'invio degli eventi.

  1. Se gli eventi non vengono recapitati alla destinazione, gli eventi inviati da Pub/Sub alla destinazione potrebbero essere eliminati:

    Per assicurarti che gli eventi non vengano eliminati, configura un criterio di ripetizione della sottoscrizione Pub/Sub o inoltra i messaggi non recapitati a un argomento dead letter (noto anche come coda dead letter).

    Prima di impostare l'argomento messaggi non recapitabili, recupera l'argomento e l'abbonamento del trigger:

    gcloud eventarc triggers describe TRIGGER \
      --location=LOCATION

    Sostituisci quanto segue:

    • TRIGGER: l'ID del trigger o un identificatore completamente qualificato.
    • LOCATION: la posizione del trigger Eventarc.
  2. Se il trigger continua a non funzionare, controlla lo stato del componente di inoltro degli eventi di Eventarc per verificare che sia stato eseguito il deployment correttamente:

    1. Identifica gli spazi dei nomi del cluster elencando tutti i pod che hanno event-forwarder nel nome:
      kubectl get pods --all-namespaces | grep event-forwarder
      L'output è simile al seguente:
      event-forwarder-namespace-hash1   event-forwarder-hash1   1/1   Running   0   5d2h
      event-forwarder-namespace-hash2   event-forwarder-hash2   1/1   Running   0   2d2h
      
      I primi 30 caratteri degli spazi dei nomi devono corrispondere al nome del trigger Eventarc che hai creato, seguito da un hash per disambiguare i trigger con gli stessi 30 caratteri iniziali.
    2. Recupera i dettagli del deployment:
      kubectl get deployments -n EVENT_FORWARDER_NAMESPACE event-forwarder
    3. Recupera i dettagli del pod:
      kubectl describe pod -n EVENT_FORWARDER_NAMESPACE EVENT_FORWARDER_HASH
    4. Stampa i log del pod per esaminare la causa o la posizione dell'errore:
      kubectl logs -f -n EVENT_FORWARDER_NAMESPACE EVENT_FORWARDER_HASH
      Ad esempio, nel seguente log, il ruolo Pub/Sub Subscriber è stato revocato per il account di servizio:
      {"error":"generic::permission_denied: missing 'pubsub.subscriptions.consume' permission",
      "message":"Permissions check failed","severity":"fatal","timestamp":"2021-07-07T14:57:49.038877483Z"}