Resolva problemas do Eventarc para o Google Kubernetes Engine (GKE)

Esta página mostra-lhe como resolver problemas que pode encontrar quando usa o Eventarc para GKE, incluindo os pontos finais públicos de serviços privados e públicos executados num cluster do GKE.

Para outros problemas que também possa encontrar, consulte a resolução de problemas para:

A criação do acionador falha com erros de autorização de criação de recursos

Recebe mensagens de erro semelhantes a uma das seguintes:

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"

Este erro ocorre quando não configurou corretamente a conta de serviço do Eventarc necessária para gerir recursos no cluster do Google Kubernetes Engine (GKE).

Para resolver o problema, certifique-se de que a conta de serviço do Eventarc foi configurada corretamente com as autorizações adequadas para criar recursos. Para mais informações, siga as instruções para um fornecedor, um tipo de evento e um destino do GKE específicos.

A criação do acionador falha porque não é possível encontrar o cluster de destino ou este não tem a Workload Identity Federation para o GKE ativada

Recebe mensagens de erro semelhantes a uma das seguintes:

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

Este erro ocorre quando o Eventarc não consegue encontrar o cluster do GKE de destino ou o cluster não tem a Workload Identity Federation para o GKE ativada.

Para resolver o problema, certifique-se de que o cluster de destino existe e tem a identidade de carga de trabalho ativada.

A criação do acionador falha devido ao estado do recurso inválido

Recebe uma mensagem de erro semelhante à seguinte para o seu projeto:

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.

Este erro ocorre quando:

  • O destino do GKE não foi ativado.
  • Não foram concedidas à conta de serviço as funções e as autorizações necessárias que permitem ao Eventarc gerir eventos para destinos do GKE.

Para resolver este problema:

  1. Certifique-se de que ativou os destinos do GKE:
    gcloud eventarc gke-destinations init
    Para mais informações, siga as instruções para um fornecedor e um tipo de evento específicos na secção "Ative os destinos do GKE".
  2. Certifique-se de que a conta de serviço do Eventarc foi configurada com as autorizações adequadas para criar recursos. Para mais informações sobre como conceder as funções adequadas à conta de serviço, siga as instruções para um fornecedor e um tipo de evento específicos na secção "Prepare-se para criar um acionador".
  3. Se o erro persistir, contacte o apoio técnico.

O acionador é criado com êxito, mas o destino não está a receber eventos

Verifique se já passou tempo suficiente desde a criação do acionador. Pode demorar até dois minutos até os eventos serem enviados.

  1. Se os eventos não estiverem a ser entregues no destino, os eventos enviados do Pub/Sub para o destino podem estar a ser ignorados:

    Para garantir que os eventos não são ignorados, configure uma política de repetição de subscrição do Pub/Sub ou encaminhe mensagens não entregues para um tópico de mensagens não entregues (também conhecido como uma fila de mensagens não entregues).

    Antes de definir o tópico de mensagens não entregues, obtenha o tópico e a subscrição do acionador:

    gcloud eventarc triggers describe TRIGGER \
      --location=LOCATION

    Substitua o seguinte:

    • TRIGGER: o ID do acionador ou um identificador totalmente qualificado.
    • LOCATION: a localização do acionador do Eventarc.
  2. Se o acionador ainda não funcionar, verifique o estado do componente de encaminhamento de eventos do Eventarc para ver se foi implementado corretamente:

    1. Identifique os espaços de nomes do cluster listando todos os pods que têm event-forwarder no nome:
      kubectl get pods --all-namespaces | grep event-forwarder
      O resultado é semelhante ao seguinte:
      event-forwarder-namespace-hash1   event-forwarder-hash1   1/1   Running   0   5d2h
      event-forwarder-namespace-hash2   event-forwarder-hash2   1/1   Running   0   2d2h
      
      Os primeiros 30 carateres dos espaços de nomes devem corresponder ao nome do acionador do Eventarc que criou, seguidos de um símbolo de cardinal para desambiguar quaisquer acionadores com os mesmos 30 carateres iniciais.
    2. Recupere os detalhes da implementação:
      kubectl get deployments -n EVENT_FORWARDER_NAMESPACE event-forwarder
    3. Recupere os detalhes do pod:
      kubectl describe pod -n EVENT_FORWARDER_NAMESPACE EVENT_FORWARDER_HASH
    4. Imprima os registos do pod para investigar o motivo ou o local da falha:
      kubectl logs -f -n EVENT_FORWARDER_NAMESPACE EVENT_FORWARDER_HASH
      Por exemplo, no seguinte registo, a função Pub/Sub Subscriber foi revogada para a conta de serviço:
      {"error":"generic::permission_denied: missing 'pubsub.subscriptions.consume' permission",
      "message":"Permissions check failed","severity":"fatal","timestamp":"2021-07-07T14:57:49.038877483Z"}