Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.
Guia de início rápido: receber eventos usando a mensagem do Pub/Sub (Google Cloud CLI)

Receber eventos usando mensagens do Pub/Sub (CLI gcloud)

Neste guia de início rápido, mostramos como configurar um serviço do Google Kubernetes Engine (GKE) como um destino para receber eventos de um tópico do Pub/Sub usando o Eventarc.

Neste guia de início rápido, você vai:

  1. Criar um cluster do GKE.
  2. Configurar uma conta de serviço para extrair eventos do Pub/Sub usando um componente encaminhador de eventos que encaminha eventos para o destino.
  3. Inicializar destinos do GKE no Eventarc.
  4. Implantar um serviço do GKE que recebe eventos.
  5. Criar um gatilho do Eventarc que conecte um tópico do Pub/Sub ao serviço do GKE.
  6. Gerar e visualizar um evento do Pub/Sub.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.

  4. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  5. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.

  6. Instale e inicialize a Google Cloud CLI. Se precisar configurar uma região de computação padrão, insira n.
  7. Atualize os componentes da gcloud:
    gcloud components update
  8. Ative as APIs Google Cloud, Cloud Build, Resource Manager, Google Kubernetes Engine, Container Registry e e as APIs do Eventarc:
    gcloud services enable cloudapis.googleapis.com
    gcloud services enable cloudbuild.googleapis.com
    gcloud services enable cloudresourcemanager.googleapis.com
    gcloud services enable container.googleapis.com
    gcloud services enable containerregistry.googleapis.com
    gcloud services enable eventarc.googleapis.com
    
  9. Defina as variáveis de configuração usadas neste guia de início rápido:
    gcloud config set project PROJECT_ID
    gcloud config set run/cluster events-cluster
    gcloud config set run/cluster_location us-central1
    gcloud config set run/platform gke
    gcloud config set eventarc/location us-central1
    Substitua PROJECT_ID pelo ID do projeto do Google Cloud.
  10. Opcional: para verificar as configurações usando o gcloud_name, basta digitar:
    gcloud config list
    A saída será semelhante a:
    [eventarc]
    location = us-central1
    [run]
    cluster = events-cluster
    cluster_location = us-central1
    platform = gke

Crie um cluster do GKE

Crie um cluster do GKE com o complemento HttpLoadBalancing. Ative a identidade da carga de trabalho para acessar os serviços do Google Cloud em aplicativos em execução no GKE.

PROJECT_ID=$(gcloud config get-value project)

gcloud beta container clusters create events-cluster \
  --addons=HttpLoadBalancing \
  --machine-type=n1-standard-4 \
  --enable-autoscaling --min-nodes=2 --max-nodes=10 \
  --no-issue-client-certificate --num-nodes=2  \
  --logging=SYSTEM,WORKLOAD \
  --monitoring=SYSTEM \
  --scopes=cloud-platform,logging-write,monitoring-write,pubsub \
  --zone us-central1 \
  --release-channel=rapid \
  --workload-pool=$PROJECT_ID.svc.id.goog

Aguarde a conclusão da criação do cluster. Ignore os avisos durante o processo de criação. Depois que o cluster é criado, a saída fica mais ou menos assim:

Creating cluster events-cluster...done.
Created [https://container.googleapis.com/v1beta1/projects/my-project/zones/us-central1/clusters/events-cluster].

em que my-project é o ID do projeto no Google Cloud.

Isso cria um cluster do GKE chamado events-cluster em my-project.

Configurar uma conta de serviço do Google

Configure uma conta de serviço fornecida pelo usuário e conceda papéis específicos para que o componente encaminhador de eventos possa extrair eventos do Pub/Sub.

  1. Crie uma conta de serviço chamada TRIGGER_GSA, que é usada para criar gatilhos:

    TRIGGER_GSA=eventarc-gke-triggers
    gcloud iam service-accounts create $TRIGGER_GSA
  2. Conceda os papéis pubsub.subscriber e monitoring.metricWriter à conta de serviço:

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

Ativar destinos do GKE

Para cada gatilho que segmenta um serviço do GKE, o Eventarc cria um componente de encaminhamento de eventos que extrai eventos do Pub/Sub e o encaminha ao destino. Para criar o componente e gerenciar recursos no cluster do GKE, conceda permissões a uma conta de serviço do Eventarc:

  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 à conta de serviço:

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

Criar um destino de serviço do GKE

Usando uma imagem pré-criada, gcr.io/cloudrun/hello, implante um serviço do GKE que receberá e registrará eventos:

  1. Crie uma implantação do Kubernetes:

    SERVICE_NAME=hello-gke
    kubectl create deployment $SERVICE_NAME \
    --image=gcr.io/cloudrun/hello
    
  2. Exponha-a como um serviço do Kubernetes:

    kubectl expose deployment $SERVICE_NAME \
    --type LoadBalancer --port 80 --target-port 8080
    

Criar um gatilho do Pub/Sub

Quando uma mensagem é publicada no tópico do Pub/Sub, o gatilho do Eventarc envia mensagens para o serviço hello-gke do GKE.

  1. Crie um gatilho do GKE para detectar mensagens do Pub/Sub:

    Novo tópico pub/sub

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

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

    Tópico do Pub/Sub atual

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

    Substitua:

    • PROJECT_ID é o ID do projeto no Google Cloud.
    • TOPIC_ID é o ID do tópico do Pub/Sub atual. Essa ação cria um gatilho chamado gke-trigger-pubsub para o tópico atual do Pub/Sub.
  2. Confirme se o gatilho foi criado com sucesso:

    gcloud eventarc triggers list

    A saída será semelhante a:

    NAME: gke-trigger-pubsub
    TYPE: google.cloud.pubsub.topic.v1.messagePublished
    DESTINATION: GKE: hello-gke
    ACTIVE: Yes
    

Gerar e visualizar um evento

É possível gerar um evento para acionar o serviço do GKE publicando uma mensagem no tópico do Pub/Sub. Em seguida, visualize a mensagem nos registros do pod.

  1. Encontre e defina o tópico do Pub/Sub como uma variável de ambiente:

    TOPIC=$(gcloud eventarc triggers describe gke-trigger-pubsub --format='value(transport.pubsub.topic)')
    
  2. Envie uma mensagem para o tópico do Pub/Sub a fim de gerar um evento:

    gcloud pubsub topics publish $TOPIC --message="Hello World"
    

    O serviço do GKE registra a mensagem do evento.

  3. Para visualizar a mensagem de evento:

    1. Encontre o ID do pod:
      kubectl get pods
      
      A saída será semelhante a:
      NAME                                         READY   STATUS             RESTARTS   AGE
      hello-gke-645964f578-2mjjt                   1/1     Running            0          35s
      em que NAME é o nome do pod. Observe o NAME a ser usado na próxima etapa.
    2. Verifique os registros do pod:
      kubectl logs NAME
      Substitua NAME pelo nome do pod que você copiou.
    3. Procure uma entrada de registro semelhante a esta:
      2022/02/24 22:23:49 Hello from Cloud Run! The container started successfully and is listening for HTTP requests on $PORT
      {"severity":"INFO","eventType":"google.cloud.pubsub.topic.v1.messagePublished","message":"Received event of type google.cloud.pubsub.topic.v1.messagePublished. Event data: Hello World"[...]}
      

Limpar

Ainda que o Cloud Run não gere custos quando o serviço não está em uso, pode haver cobrança pelo armazenamento da imagem do contêiner no Container Registry, por recursos do Eventarc e mensagens do Pub/Sub e para o cluster do GKE.

Você pode excluir a imagem, excluir o tópico do Pub/Sub, excluir a assinatura do Pub/Sub e excluir o cluster do GKE.

Para excluir o gatilho do Eventarc:

gcloud eventarc triggers delete gke-trigger-pubsub

Se preferir, exclua o projeto do Google Cloud para evitar cobranças. A exclusão do projeto do Cloud interrompe o faturamento de todos os recursos usados nele.

gcloud projects delete PROJECT_ID_OR_NUMBER

Substitua PROJECT_ID_OR_NUMBER pelo código ou número do projeto.

A seguir

Receber eventos usando os Registros de auditoria do Cloud (Google Cloud CLI)