Criar um gatilho para o Google Kubernetes Engine (GKE)

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Um gatilho do Eventarc declara seu interesse em um determinado evento ou conjunto de eventos. Para configurar o roteamento de eventos, especifique filtros para o gatilho, incluindo a origem do evento e o serviço de destino do GKE.

As solicitações para seu serviço são acionadas pelos seguintes tipos de eventos:

Antes de começar

A Identidade da carga de trabalho é a maneira recomendada para acessar os serviços do Google Cloud em aplicativos executados no Google Kubernetes Engine (GKE) devido às sólidas capacidades de segurança e gerenciamento. Também é necessária para encaminhar eventos do Cloud Run for Anthos usando o Eventarc. Verifique se a Identidade da carga de trabalho está ativada no cluster do GKE.

Saiba mais em Como usar a Identidade da carga de trabalho.

Preparar para criar um gatilho

Para cada gatilho que segmenta um serviço do GKE, o Eventarc cria um componente de encaminhamento de eventos. O Eventarc exige permissões para instalar o componente e gerenciar recursos no cluster do GKE. Antes de criar um gatilho do Eventarc para destinos do GKE, conclua as seguintes tarefas.

Ativar a API Eventarc

Para visualizar e atribuir papéis do Identity and Access Management (IAM), ative a API Eventarc no projeto. Você não conseguirá ver os papéis do Eventarc no console até ativar a API.

gcloud services enable eventarc.googleapis.com

Conceder o papel de usuário necessário

Conceda o papel de Administrador do Eventarc (roles/eventarc.admin) ao usuário:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=PRINCIPAL \
    --role="roles/eventarc.admin"

Substitua os seguintes valores:

  • PROJECT_ID: o ID do projeto do Google Cloud.
  • PRINCIPAL: o membro para quem a vinculação deve ser adicionada. Ele precisa estar no formato user|group|serviceAccount:email ou domain:domain.

    Exemplos: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com e domain:example.domain.com

Crie uma conta de serviço

Crie uma conta de serviço gerenciada pelo usuário, caso ainda não tenha uma, conceda a ela os papéis e as permissões necessárias para que o Eventarc possa gerenciar eventos dos destinos do GKE.

  1. Crie uma conta de serviço usada para criar gatilhos:

    TRIGGER_SA=SA_NAME
    gcloud iam service-accounts create ${TRIGGER_SA}

    Substitua SA_NAME pelo nome da conta de serviço. Ele precisa ter entre 6 e 30 caracteres e pode conter letras minúsculas, caracteres alfanuméricos e traços. Depois da criação, não é possível alterar o nome da conta de serviço.

  2. Conceda os papéis apropriados à conta de serviço:

    Eventos de registros de auditoria do Cloud

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/pubsub.subscriber"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/eventarc.eventReceiver"
    

    Eventos diretos

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/pubsub.subscriber"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/eventarc.eventReceiver"
    

    Mensagens de Pub/Sub

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/pubsub.subscriber"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    
    

    Substitua o PROJECT_ID pelo ID do projeto do Google Cloud. Encontre o ID do projeto na página Painel do Console do Google Cloud.

  3. Se estiver criando um gatilho para um evento direto do Cloud Storage, conceda o papel pubsub.publisher à conta de serviço do Cloud Storage:

    SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role="roles/pubsub.publisher"
    

Ativar destinos do GKE

Para permitir que o Eventarc gerencie recursos no cluster do GKE, ative os destinos do GKE e vincule a conta de serviço do Eventarc aos papéis necessários.

  1. Ative os destinos do GKE para o Eventarc:

    gcloud eventarc gke-destinations init
    
  2. No prompt para vincular os papéis necessários, digite y.

    Os papéis a seguir estão vinculados:

    • roles/compute.viewer
    • roles/container.developer
    • roles/iam.serviceAccountAdmin

Criar um gatilho usando a Google Cloud CLI

Para criar um gatilho, execute um comando gcloud eventarc triggers create com as sinalizações obrigatórias e opcionais.

Eventos de registros de auditoria do Cloud

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=google.cloud.audit.log.v1.written" \
    --event-filters="serviceName=SERVICE_NAME" \
    --event-filters="methodName=METHOD_NAME" \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

Substitua:

  • TRIGGER: o ID do gatilho ou um identificador totalmente qualificado.
  • LOCATION: o local do gatilho do Eventarc. Para evitar problemas de desempenho e residência de dados causados por um gatilho global, ele deve corresponder à localização do serviço do Google Cloud que está gerando eventos. Outra opção é definir a propriedade eventarc/location. Por exemplo: gcloud config set eventarc/location us-central1. Saiba mais em Locais do Eventarc.
  • DESTINATION_GKE_CLUSTER: o nome do cluster do GKE em que o serviço do GKE de destino que recebe eventos está em execução.
  • DESTINATION_GKE_LOCATION: o local em que o serviço do GKE de destino pode ser encontrado. Se não especificado, presume-se que o serviço está na mesma região que o gatilho Saiba mais em Locais do Cloud Run for Anthos no Google Cloud.
  • DESTINATION_GKE_NAMESPACE: o namespace em que o serviço do GKE de destino está em execução. Se não for especificado, é usado o namespace default.
  • DESTINATION_GKE_SERVICE: o nome do serviço do GKE que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o GKE e não precisa estar no mesmo local que o gatilho. No entanto, o serviço precisa estar no mesmo projeto que o gatilho e receberá eventos como solicitações POST HTTP enviadas para o caminho de URL raiz (/) sempre que o evento for gerado.
  • (Opcional) DESTINATION_GKE_PATH: o caminho relativo especificado no serviço de destino do GKE para o qual os eventos do gatilho precisam ser enviados. Por exemplo: /, /route, route, route/subroute.
  • SERVICE_NAME: o identificador do serviço do Google Cloud
  • METHOD_NAME: o identificador da operação
  • TRIGGER_SERVICE_ACCOUNT: o e-mail da conta de serviço do IAM associada ao gatilho e ao qual você atribuiu papéis específicos exigidos pelo Eventarc. Por exemplo, $TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com
  • PROJECT_ID: é o ID do projeto do Google Cloud.

Observações:

  • Essas sinalizações são necessárias:
    • --event-filters="type=google.cloud.audit.log.v1.written"
    • --event-filters="serviceName=VALUE"
    • --event-filters="methodName=VALUE"
  • Para ver uma lista dos eventos de registros de auditoria aceitos pelo Eventarc, incluindo valores serviceName e methodName, consulte Eventos compatíveis com o Eventarc.
  • Cada gatilho pode ter vários filtros de eventos separados por vírgula em uma sinalização --event-filters=[ATTRIBUTE=VALUE,...] ou repita a sinalização para adicionar mais filtros. Somente eventos que correspondam a todos os filtros são enviados para o destino. Caracteres curinga e expressões regulares não são aceitos. Consulte Como determinar filtros de evento para registros de auditoria do Cloud.
  • Opcionalmente, é possível filtrar eventos para um recurso específico usando a sinalização --event-filters="resourceName=VALUE" e especificando o caminho completo para o recurso. Omita a sinalização para recursos criados dinamicamente com identificadores gerados no momento da criação. Também é possível filtrar eventos para um conjunto de recursos usando a sinalização --event-filters-path-pattern="resourceName=VALUE" e especificando o padrão de caminho do recurso.

Exemplo:

  gcloud eventarc triggers create cal-gke-trigger \
      --location=us-central1 \
      --destination-gke-cluster=gke-events-cluster \
      --destination-gke-location=us-central1-a \
      --destination-gke-namespace=default \
      --destination-gke-service=helloworld-events \
      --destination-gke-path=/ \
      --event-filters="type=google.cloud.audit.log.v1.written" \
      --event-filters="serviceName=storage.googleapis.com" \
      --event-filters="methodName=storage.buckets.update" \
      --event-filters="resourceName=projects/_/buckets/eventarc-bucket/objects/random.txt" \
      --service-account=${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com

Isso cria um gatilho chamado cal-gke-trigger para registros de auditoria que são gravados por storage.googleapis.com e para a operação identificada como storage.buckets.update.

Eventos diretos

Cloud Storage

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="bucket=BUCKET" \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

Substitua:

  • TRIGGER: o ID do gatilho ou um identificador totalmente qualificado.
  • LOCATION: o local do gatilho do Eventarc. O bucket do Cloud Storage precisa residir no mesmo projeto do Google Cloud e na mesma região ou multirregião que o gatilho do Eventarc. Outra opção é definir a propriedade eventarc/location. Por exemplo: gcloud config set eventarc/location us-central1. Saiba mais em Locais do Eventarc.
  • DESTINATION_GKE_CLUSTER: o nome do cluster do GKE em que o serviço do GKE de destino que recebe eventos está em execução.
  • DESTINATION_GKE_LOCATION: o local em que o serviço do GKE de destino pode ser encontrado. Se não especificado, presume-se que o serviço está na mesma região que o gatilho Saiba mais em Locais do Cloud Run for Anthos no Google Cloud.
  • DESTINATION_GKE_NAMESPACE: o namespace em que o serviço do GKE de destino está em execução. Se não for especificado, é usado o namespace default.
  • DESTINATION_GKE_SERVICE: o nome do serviço do GKE que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o GKE e não precisa estar no mesmo local que o gatilho. No entanto, o serviço precisa estar no mesmo projeto que o gatilho e receberá eventos como solicitações POST HTTP enviadas para o caminho de URL raiz (/) sempre que o evento for gerado.
  • (Opcional) DESTINATION_GKE_PATH: o caminho relativo especificado no serviço de destino do GKE para o qual os eventos do gatilho precisam ser enviados. Por exemplo: /, /route, route, route/subroute.
  • EVENT_FILTER_TYPE: o identificador do evento do Cloud Storage e pode ser um dos seguintes:
    • google.cloud.storage.object.v1.finalized: o evento é enviado quando um novo objeto é criado (ou um objeto é substituído e uma nova geração desse objeto é criada) no bucket.
    • google.cloud.storage.object.v1.archived: o evento é enviado quando uma versão ativa de um objeto é arquivada ou excluída. Este evento só é enviado para buckets com controle de versão.
    • google.cloud.storage.object.v1.deleted: o evento é enviado quando um objeto é excluído permanentemente. Dependendo da configuração do controle de versão do objeto de um bucket isso significa:
      • Para buckets do controle de versões, ele só é enviado quando uma versão é excluída permanentemente (mas não quando um objeto é arquivado).
      • Para buckets sem controle de versões, ele é enviado quando um objeto é excluído ou substituído.
    • google.cloud.storage.object.v1.metadataUpdated: o evento é enviado quando os metadados de um objeto existente mudam.
  • BUCKET é o identificador exclusivo global do bucket do Cloud Storage.
  • TRIGGER_SERVICE_ACCOUNT: o e-mail da conta de serviço do IAM associada ao gatilho e ao qual você atribuiu papéis específicos exigidos pelo Eventarc. Por exemplo, $TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com
  • PROJECT_ID: é o ID do projeto do Google Cloud.

Observações:

  • Essas sinalizações são necessárias:
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="bucket=BUCKET"
  • Depois que um gatilho é criado, EVENT_FILTER_TYPE não pode ser modificado. Crie um novo gatilho e exclua o antigo.
  • Os eventos são entregues usando notificações do Pub/Sub do Cloud Storage. A configuração de muitas notificações registradas no mesmo bucket pode esgotar o limite de notificações do bucket, conforme indicado pelo erro Cloud Storage bucket ...: Pub/Sub notification limit reached. É possível ter até 10 configurações de notificação definidas no bucket para acionar um determinado evento. Veja mais cotas e limitações na página Cotas e limites do Cloud Storage.
  • Cada gatilho pode ter vários filtros de eventos separados por vírgula em uma sinalização --event-filters=[ATTRIBUTE=VALUE,...] ou repita a sinalização para adicionar mais filtros. Somente eventos que correspondam a todos os filtros são enviados para o destino. Caracteres curinga e expressões regulares não são aceitos.
  • A sinalização --service-account é usada para especificar o e-mail da conta de serviço do Identity and Access Management (IAM) associado ao gatilho.
  • (Opcional) DESTINATION_GKE_PATH: o caminho relativo especificado no serviço de destino do GKE para o qual os eventos do gatilho precisam ser enviados. Por exemplo: /, /route, route, route/subroute.

Exemplo:

gcloud eventarc triggers create storage-gke-trigger \
    --location=us-central1 \
    --destination-gke-cluster=gke-events-cluster \
    --destination-gke-location=us-central1-a \
    --destination-gke-namespace=default \
    --destination-gke-service=helloworld-events \
    --destination-gke-path=/ \
    --event-filters="type=google.cloud.storage.object.v1.finalized" \
    --event-filters="bucket=my-project-bucket" \
    --service-account=${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com

Esse comando cria um gatilho chamado storage-gke-trigger para o bucket do Cloud Storage my-project-bucket e o evento identificado como google.cloud.storage.object.v1.finalized.

Alertas do Firebase

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=ALERT_TYPE" \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

Substitua:

  • TRIGGER: o ID do gatilho ou um identificador totalmente qualificado.
  • DESTINATION_GKE_CLUSTER: o nome do cluster do GKE em que o serviço do GKE de destino que recebe eventos está em execução.
  • DESTINATION_GKE_LOCATION: o local em que o serviço do GKE de destino pode ser encontrado. Se não especificado, presume-se que o serviço está na mesma região que o gatilho Saiba mais em Locais do Cloud Run for Anthos no Google Cloud.
  • DESTINATION_GKE_NAMESPACE: o namespace em que o serviço do GKE de destino está em execução. Se não for especificado, é usado o namespace default.
  • DESTINATION_GKE_SERVICE: o nome do serviço do GKE que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o GKE e não precisa estar no mesmo local que o gatilho. No entanto, o serviço precisa estar no mesmo projeto que o gatilho e receberá eventos como solicitações POST HTTP enviadas para o caminho de URL raiz (/) sempre que o evento for gerado.
  • (Opcional) DESTINATION_GKE_PATH: o caminho relativo especificado no serviço de destino do GKE para o qual os eventos do gatilho precisam ser enviados. Por exemplo: /, /route, route, route/subroute.
  • ALERT_TYPE é o tipo de alerta do Firebase e pode ser um dos seguintes:
    • appDistribution.inAppFeedback: o evento é enviado quando um testador envia feedback no app para um determinado app.
    • appDistribution.newTesterIosDevice: o evento é enviado quando um novo dispositivo testador do iOS está registrado para um determinado app.
    • billing.planAutomatedUpdate: o evento é enviado quando o plano de faturamento de um projeto do Firebase é atualizado automaticamente. Por exemplo, quando é feito o downgrade de um plano devido a problemas de pagamento
    • billing.planUpdate: o evento é enviado quando o plano de faturamento de um projeto do Firebase é modificado por um usuário. por exemplo, quando uma conta de faturamento é anexada ou desanexada de um projeto
    • crashlytics.newAnrIssue: o evento é enviado quando um app tem um novo erro de "O app não está respondendo" (ANR, na sigla em inglês), e não a nenhum evento subsequente e idêntico.
    • crashlytics.newFatalIssue: o evento é enviado quando um app tem uma nova falha fatal (não para qualquer evento subsequente e idêntico).
    • crashlytics.newNonfatalIssue: o evento é enviado quando um app tem um novo erro não fatal (não para eventos idênticos e subsequentes).
    • crashlytics.regression: o evento é enviado quando ocorre uma falha no app devido a um problema marcado como fechado em uma versão anterior do app
    • crashlytics.stabilityDigest: o evento é enviado quando há uma notificação dos principais problemas em alta no Crashlytics.
    • crashlytics.velocity: o evento é enviado quando um único problema é responsável por causar uma falha em um número significativo de sessões do app.
  • TRIGGER_SERVICE_ACCOUNT: o e-mail da conta de serviço do IAM associada ao gatilho e ao qual você atribuiu papéis específicos exigidos pelo Eventarc. Por exemplo, $TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com
  • PROJECT_ID: o ID do projeto do Google Cloud

Observações:

  • A sinalização --location precisa ser global. Saiba mais em Locais do Eventarc.
  • As sinalizações --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" e --event-filters="alerttype=ALERT_TYPE" são obrigatórias.
  • Opcionalmente, é possível filtrar eventos de um ID de app específico do Firebase usando a sinalização --event-filters="appid=APP_ID" e especificando uma correspondência exata.
  • Depois que um gatilho é criado, não é possível modificar o tipo de filtro do evento. Crie um novo gatilho e exclua o antigo.
  • A sinalização --service-account é usada para especificar o e-mail da conta de serviço do Identity and Access Management (IAM) associado ao gatilho.

Exemplo:

gcloud eventarc triggers create firealert-gke-trigger \
    --location=us-central1 \
    --destination-gke-cluster=gke-events-cluster \
    --destination-gke-location=us-central1-a \
    --destination-gke-namespace=default \
    --destination-gke-service=helloworld-events \
    --destination-gke-path=/ \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=crashlytics.velocity" \
    --service-account="${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com"

Esse comando cria um gatilho chamado firealert-gke-trigger para o evento identificado como google.firebase.firebasealerts.alerts.v1.published e para um tipo de alerta crashlytics.velocity.

Firebase Realtime Database

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="instance=INSTANCE" \
    --event-filters-path-pattern="ref=REF" \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

Substitua:

  • TRIGGER: o ID do gatilho ou um identificador totalmente qualificado.
  • LOCATION: o local do gatilho do Eventarc. Se preferir, defina a propriedade eventarc/location. Por exemplo, gcloud config set eventarc/location us-central1. Os gatilhos do Firebase Realtime Database para Eventarc estão disponíveis apenas nos seguintes locais:

    • us-central1
    • europe-west1
    • asia-southeast1

    O gatilho precisa estar no mesmo local da instância do Firebase Realtime Database. Para mais informações, consulte Locais do Realtime Database.

  • DESTINATION_GKE_CLUSTER: o nome do cluster do GKE em que o serviço do GKE de destino que recebe eventos está em execução.
  • DESTINATION_GKE_LOCATION: o local em que o serviço do GKE de destino pode ser encontrado. Se não especificado, presume-se que o serviço está na mesma região que o gatilho Saiba mais em Locais do Cloud Run for Anthos no Google Cloud.
  • DESTINATION_GKE_NAMESPACE: o namespace em que o serviço do GKE de destino está em execução. Se não for especificado, é usado o namespace default.
  • DESTINATION_GKE_SERVICE: o nome do serviço do GKE que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o GKE e não precisa estar no mesmo local que o gatilho. No entanto, o serviço precisa estar no mesmo projeto que o gatilho e receberá eventos como solicitações POST HTTP enviadas para o caminho de URL raiz (/) sempre que o evento for gerado.
  • (Opcional) DESTINATION_GKE_PATH: o caminho relativo especificado no serviço de destino do GKE para o qual os eventos do gatilho precisam ser enviados. Por exemplo: /, /route, route, route/subroute.
  • EVENT_FILTER_TYPE: o identificador do evento do Firebase Realtime Database que pode ser um dos seguintes:

    • google.firebase.database.ref.v1.created: o evento é enviado quando os dados são criados no banco de dados
    • google.firebase.database.ref.v1.updated: o evento é enviado quando os dados são atualizados no banco de dados
    • google.firebase.database.ref.v1.deleted: o evento é enviado quando os dados são excluídos do banco de dados
    • google.firebase.database.ref.v1.written: o evento é enviado quando os dados são criados, atualizados ou excluídos no banco de dados
  • INSTANCE: uma única instância de banco de dados e o operador podem ser um dos seguintes:

    • Igual por exemplo, --event-filters="instance=INSTANCE"
    • Padrão do caminho por exemplo, --event-filters-path-pattern="instance=INSTANCE". Para mais informações, consulte Entender os padrões de caminho.
  • REF: o caminho dentro da instância do banco de dados de que você quer receber eventos quando os dados são criados, atualizados ou excluídos nesse caminho ou em qualquer um dos filhos.

  • TRIGGER_SERVICE_ACCOUNT: o e-mail da conta de serviço do IAM associada ao gatilho e ao qual você atribuiu papéis específicos exigidos pelo Eventarc. Por exemplo, $TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com
  • PROJECT_ID: é o ID do projeto do Google Cloud.

Observações:

  • Essas sinalizações são necessárias:
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="instance=INSTANCE" ou --event-filters-path-pattern="instance=INSTANCE"
    • --event-filters-path-pattern="ref=REF"
  • Depois que um gatilho é criado, não é possível modificar o tipo de filtro do evento. Crie um novo gatilho e exclua o antigo.
  • A sinalização --service-account é usada para especificar o e-mail da conta de serviço do Identity and Access Management (IAM) associado ao gatilho.

Exemplo:

gcloud eventarc triggers create rd-gke-trigger \
    --location=us-central1 \
    --destination-gke-cluster=gke-events-cluster \
    --destination-gke-location=us-central1-a \
    --destination-gke-namespace=default \
    --destination-gke-service=helloworld-events \
    --destination-gke-path=/ \
    --event-filters="type=google.firebase.database.ref.v1.created" \
    --event-filters="instance=test-instance" \
    --event-filters-path-pattern="ref=users/*" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Esse comando cria um gatilho chamado rd-gke-trigger para o evento identificado como google.firebase.database.ref.v1.created.

Configuração remota do Firebase

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=google.firebase.remoteconfig.remoteConfig.v1.updated" \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

Substitua:

  • TRIGGER: o ID do gatilho ou um identificador totalmente qualificado.
  • DESTINATION_GKE_CLUSTER: o nome do cluster do GKE em que o serviço do GKE de destino que recebe eventos está em execução.
  • DESTINATION_GKE_LOCATION: o local em que o serviço do GKE de destino pode ser encontrado. Se não especificado, presume-se que o serviço está na mesma região que o gatilho Saiba mais em Locais do Cloud Run for Anthos no Google Cloud.
  • DESTINATION_GKE_NAMESPACE: o namespace em que o serviço do GKE de destino está em execução. Se não for especificado, é usado o namespace default.
  • DESTINATION_GKE_SERVICE: o nome do serviço do GKE que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o GKE e não precisa estar no mesmo local que o gatilho. No entanto, o serviço precisa estar no mesmo projeto que o gatilho e receberá eventos como solicitações POST HTTP enviadas para o caminho de URL raiz (/) sempre que o evento for gerado.
  • (Opcional) DESTINATION_GKE_PATH: o caminho relativo especificado no serviço de destino do GKE para o qual os eventos do gatilho precisam ser enviados. Por exemplo: /, /route, route, route/subroute.
  • TRIGGER_SERVICE_ACCOUNT: o e-mail da conta de serviço do IAM associada ao gatilho e ao qual você atribuiu papéis específicos exigidos pelo Eventarc. Por exemplo, $TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com
  • PROJECT_ID: é o ID do projeto do Google Cloud.

Observações:

  • A sinalização --location precisa ser global. Saiba mais em Locais do Eventarc.
  • A sinalização --event-filters é obrigatória e o tipo precisa ser google.firebase.remoteconfig.remoteConfig.v1.updated. Um evento é enviado quando um modelo do Configuração remota é atualizado.
  • Depois que um gatilho é criado, não é possível modificar o tipo de filtro do evento. Crie um novo gatilho e exclua o antigo.
  • A sinalização --service-account é usada para especificar o e-mail da conta de serviço do Identity and Access Management (IAM) associado ao gatilho.

Exemplo:

gcloud eventarc triggers create rc-gke-trigger \
    --location=global \
    --destination-gke-cluster=gke-events-cluster \
    --destination-gke-location=us-central1-a \
    --destination-gke-namespace=default \
    --destination-gke-service=helloworld-events \
    --destination-gke-path=/ \
    --event-filters="type=google.firebase.remoteconfig.remoteConfig.v1.updated" \
    --service-account=${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com

Esse comando cria um gatilho chamado rc-gke-trigger para o evento identificado como google.firebase.remoteconfig.remoteConfig.v1.updated.

Firebase Test Lab

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

Substitua:

  • TRIGGER: o ID do gatilho ou um identificador totalmente qualificado.
  • DESTINATION_GKE_CLUSTER: o nome do cluster do GKE em que o serviço do GKE de destino que recebe eventos está em execução.
  • DESTINATION_GKE_LOCATION: o local em que o serviço do GKE de destino pode ser encontrado. Se não especificado, presume-se que o serviço está na mesma região que o gatilho Saiba mais em Locais do Cloud Run for Anthos no Google Cloud.
  • DESTINATION_GKE_NAMESPACE: o namespace em que o serviço do GKE de destino está em execução. Se não for especificado, é usado o namespace default.
  • DESTINATION_GKE_SERVICE: o nome do serviço do GKE que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o GKE e não precisa estar no mesmo local que o gatilho. No entanto, o serviço precisa estar no mesmo projeto que o gatilho e receberá eventos como solicitações POST HTTP enviadas para o caminho de URL raiz (/) sempre que o evento for gerado.
  • (Opcional) DESTINATION_GKE_PATH: o caminho relativo especificado no serviço de destino do GKE para o qual os eventos do gatilho precisam ser enviados. Por exemplo: /, /route, route, route/subroute.
  • TRIGGER_SERVICE_ACCOUNT: o e-mail da conta de serviço do IAM associada ao gatilho e ao qual você atribuiu papéis específicos exigidos pelo Eventarc. Por exemplo, $TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com
  • PROJECT_ID: é o ID do projeto do Google Cloud.

Observações:

  • A sinalização --location precisa ser global. Saiba mais em Locais do Eventarc.
  • A sinalização --event-filters é obrigatória e o tipo precisa ser google.firebase.testlab.testMatrix.v1.completed. Um evento é enviado quando uma TestMatrix é concluída.
  • Depois que um gatilho é criado, não é possível modificar o tipo de filtro do evento. Crie um novo gatilho e exclua o antigo.
  • A sinalização --service-account é usada para especificar o e-mail da conta de serviço do Identity and Access Management (IAM) associado ao gatilho.

Exemplo:

gcloud eventarc triggers create tl-gke-trigger \
    --location=global \
    --destination-gke-cluster=gke-events-cluster \
    --destination-gke-location=us-central1-a \
    --destination-gke-namespace=default \
    --destination-gke-service=helloworld-events \
    --destination-gke-path=/ \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --service-account=${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com

Esse comando cria um gatilho chamado tl-gke-trigger para o evento identificado como google.firebase.testlab.testMatrix.v1.completed.

Mensagens do Pub/Sub (tópico existente)

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

Substitua:

  • TRIGGER: o ID do gatilho ou um identificador totalmente qualificado.
  • LOCATION: o local do gatilho do Eventarc. Para evitar problemas de desempenho e residência de dados causados por um gatilho global, ele deve corresponder à localização do serviço do Google Cloud que está gerando eventos. Outra opção é definir a propriedade eventarc/location. Por exemplo: gcloud config set eventarc/location us-central1. Saiba mais em Locais do Eventarc.
  • DESTINATION_GKE_CLUSTER: o nome do cluster do GKE em que o serviço do GKE de destino que recebe eventos está em execução.
  • DESTINATION_GKE_LOCATION: o local em que o serviço do GKE de destino pode ser encontrado. Se não especificado, presume-se que o serviço está na mesma região que o gatilho Saiba mais em Locais do Cloud Run for Anthos no Google Cloud.
  • DESTINATION_GKE_NAMESPACE: o namespace em que o serviço do GKE de destino está em execução. Se não for especificado, é usado o namespace default.
  • DESTINATION_GKE_SERVICE: o nome do serviço do GKE que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o GKE e não precisa estar no mesmo local que o gatilho. No entanto, o serviço precisa estar no mesmo projeto que o gatilho e receberá eventos como solicitações POST HTTP enviadas para o caminho de URL raiz (/) sempre que o evento for gerado.
  • (Opcional) DESTINATION_GKE_PATH: o caminho relativo especificado no serviço de destino do GKE para o qual os eventos do gatilho precisam ser enviados. Por exemplo: /, /route, route, route/subroute.
  • PROJECT_ID: é o ID do projeto do Google Cloud.
  • TOPIC_ID: o ID do tópico do Pub/Sub atual. O tópico precisa estar no mesmo projeto que o gatilho.
  • TRIGGER_SERVICE_ACCOUNT: o e-mail da conta de serviço do IAM associada ao gatilho e ao qual você atribuiu papéis específicos exigidos pelo Eventarc. Por exemplo, $TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com

Observações:

  • A sinalização --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" é obrigatória.
  • Cada gatilho pode ter vários filtros de eventos separados por vírgula em uma sinalização --event-filters=[ATTRIBUTE=VALUE,...] ou repita a sinalização para adicionar mais filtros. Somente eventos que correspondam a todos os filtros são enviados para o destino. Caracteres curinga e expressões regulares não são aceitos.
  • A sinalização --transport-topic é usada para especificar o código do tópico do Pub/Sub existente ou seu identificador totalmente qualificado.
  • Por padrão, as assinaturas do Pub/Sub criadas para o Eventarc não expiram e continuam existindo, independentemente da atividade. Saiba como alterar a duração da inatividade em Como gerenciar assinaturas.

Exemplo:

  gcloud eventarc triggers create pubsub-gke-trigger-existing \
      --destination-gke-cluster=gke-events-cluster \
      --destination-gke-location=us-central1-a \
      --destination-gke-namespace=default \
      --destination-gke-service=helloworld \
      --destination-gke-path=/ \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
      --transport-topic=projects/${PROJECT_ID}/topics/${TOPIC_ID} \
      --service-account=${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com

Isso cria um gatilho chamado pubsub-gke-trigger-existing para o tópico do Pub/Sub identificado por projects/${PROJECT_ID}/topics/${TOPIC_ID}.

Mensagens do Pub/Sub (novo tópico)

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

Substitua:

  • TRIGGER: o ID do gatilho ou um identificador totalmente qualificado.
  • LOCATION: o local do gatilho do Eventarc. Para evitar problemas de desempenho e residência de dados causados por um gatilho global, ele deve corresponder à localização do serviço do Google Cloud que está gerando eventos. Outra opção é definir a propriedade eventarc/location. Por exemplo: gcloud config set eventarc/location us-central1. Saiba mais em Locais do Eventarc.
  • DESTINATION_GKE_CLUSTER: o nome do cluster do GKE em que o serviço do GKE de destino que recebe eventos está em execução.
  • DESTINATION_GKE_LOCATION: o local em que o serviço do GKE de destino pode ser encontrado. Se não especificado, presume-se que o serviço está na mesma região que o gatilho Saiba mais em Locais do Cloud Run for Anthos no Google Cloud.
  • DESTINATION_GKE_NAMESPACE: o namespace em que o serviço do GKE de destino está em execução. Se não for especificado, é usado o namespace default.
  • DESTINATION_GKE_SERVICE: o nome do serviço do GKE que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o GKE e não precisa estar no mesmo local que o gatilho. No entanto, o serviço precisa estar no mesmo projeto que o gatilho e receberá eventos como solicitações POST HTTP enviadas para o caminho de URL raiz (/) sempre que o evento for gerado.
  • (Opcional) DESTINATION_GKE_PATH: o caminho relativo especificado no serviço de destino do GKE para o qual os eventos do gatilho precisam ser enviados. Por exemplo: /, /route, route, route/subroute.
  • TRIGGER_SERVICE_ACCOUNT: o e-mail da conta de serviço do IAM associada ao gatilho e ao qual você atribuiu papéis específicos exigidos pelo Eventarc. Por exemplo, $TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com
  • PROJECT_ID: é o ID do projeto do Google Cloud.

Observações:

  • A sinalização --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" é obrigatória.
  • Cada gatilho pode ter vários filtros de eventos separados por vírgula em uma sinalização --event-filters=[ATTRIBUTE=VALUE,...] ou repita a sinalização para adicionar mais filtros. Somente eventos que correspondam a todos os filtros são enviados para o destino. Caracteres curinga e expressões regulares não são aceitos.
  • Por padrão, as assinaturas do Pub/Sub criadas para o Eventarc não expiram e continuam existindo, independentemente da atividade. Saiba como alterar a duração da inatividade em Como gerenciar assinaturas.

Exemplo:

  gcloud eventarc triggers create pubsub-gke-trigger-new \
      --location=us-central1 \
      --destination-gke-cluster=gke-events-cluster \
      --destination-gke-location=us-central1-a \
      --destination-gke-namespace=default \
      --destination-gke-service=helloworld \
      --destination-gke-path=/ \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
      --service-account=${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com

Isso cria um novo tópico Pub/Sub e um gatilho para ele chamado pubsub-gke-trigger-new.

Criar um gatilho usando o Console do Google Cloud

É possível criar um gatilho com o console. Para mais detalhes, consulte Criar um gatilho usando o console.

Listar um gatilho usando a Google Cloud CLI

Confirme a criação de um gatilho listando os gatilhos do Eventarc:

gcloud eventarc triggers list --location=LOCATION

Substitua LOCATION pelo ID ou identificador totalmente qualificado do local do gatilho do Eventarc. Por exemplo, us-central1.

Saiba mais sobre como gerenciar gatilhos do Eventarc em Gerenciar gatilhos.

A seguir

Para começar a usar o Eventarc para o GKE, consulte os guias de início rápido.