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

Nesta página, mostramos como resolver problemas que podem ser encontrados ao usar o Eventarc para GKE, incluindo os endpoints públicos de serviços privados e públicos em execução em um cluster do GKE.

Para outros problemas que você possa encontrar, consulte a solução de problemas para:

A criação do gatilho falha com erros de permissão de criação de recursos

Você recebe mensagens de erro semelhantes a uma das seguintes opções:

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"

Esse erro ocorre quando você não configura corretamente a conta de serviço do Eventarc exigida pelo Eventarc para gerenciar recursos no cluster do Google Kubernetes Engine (GKE).

Para resolver o problema, verifique se a conta de serviço do Eventarc foi configurada corretamente com as permissões apropriadas para criar recursos. Para mais informações, siga as instruções de um provedor, tipo de evento e destino do GKE específicos.

A criação do gatilho falha porque o cluster de destino não foi encontrado ou não tem uma Identidade da carga de trabalho ativada

Você recebe mensagens de erro semelhantes a uma das seguintes opções:

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

Esse erro ocorre quando o Eventarc não consegue encontrar o cluster de destino do GKE ou o cluster não tem a Identidade da carga de trabalho ativada.

Para resolver o problema, verifique se o cluster de destino existe e se a Identidade da carga de trabalho está ativada.

Falha na criação do gatilho devido a um estado de recurso inválido

Você receberá uma mensagem de erro semelhante a esta do 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/docs/gke/troubleshooting.

Esse erro ocorre quando:

  • Seu destino do GKE não foi ativado.
  • A conta de serviço não recebeu os papéis e as permissões necessários que permitem ao Eventarc gerenciar eventos de destinos do GKE.

Para resolver o problema:

  1. Verifique se você ativou os destinos do GKE:
    gcloud eventarc gke-destinations init
    Para mais informações, siga as instruções para um provedor e tipo de evento específicos na seção "Ativar destinos do GKE".
  2. Verifique se a conta de serviço do Eventarc foi configurada com as permissões apropriadas para criar recursos. Para mais informações sobre como conceder os papéis apropriados à conta de serviço, siga as instruções para um provedor e tipo de evento específicos na seção "Preparar para criar um gatilho".
  3. Se o erro continuar, entre em contato com a equipe de suporte.

O gatilho foi criado, mas o destino não está recebendo eventos

Verifique se já passou tempo suficiente desde a criação do gatilho. Pode levar até dois minutos para que os eventos sejam enviados.

  1. Se os eventos não estiverem sendo entregues no destino, os eventos enviados do Pub/Sub para o destino poderão ser descartados:

    Para garantir que os eventos não sejam descartados, configure uma política de novas tentativas de assinatura do Pub/Sub ou encaminhe mensagens não entregues para um tópico de mensagens inativas, também conhecido como fila de mensagens inativas.

    Antes de definir o tópico de mensagens inativas, recupere o tópico e a assinatura do gatilho:

    gcloud eventarc triggers describe TRIGGER \
      --location=LOCATION

    Substitua:

    • TRIGGER: o ID do gatilho ou um identificador totalmente qualificado.
    • LOCATION: o local do gatilho do Eventarc.
  2. Se o gatilho ainda não funcionar, verifique o status do componente encaminhador de eventos do Eventarc para ver se foi implantado corretamente:

    1. Identifique os namespaces do cluster listando todos os pods que têm event-forwarder no nome:
      kubectl get pods --all-namespaces | grep event-forwarder
      A saída será assim:
      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 caracteres dos namespaces precisam corresponder ao nome do gatilho do Eventarc que você criou, seguido por um hash para remover a ambiguidade de todos os gatilhos com os mesmos 30 caracteres iniciais.
    2. Recupere os detalhes da implantaçã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 registros do pod para investigar por que ou onde a falha ocorreu:
      kubectl logs -f -n EVENT_FORWARDER_NAMESPACE EVENT_FORWARDER_HASH
      
      Por exemplo, no registro a seguir, a conta de serviço teve o papel Pub/Sub Subscriber revogado:
      {"error":"generic::permission_denied: missing 'pubsub.subscriptions.consume' permission",
      "message":"Permissions check failed","severity":"fatal","timestamp":"2021-07-07T14:57:49.038877483Z"}