Guia de início rápido: receber eventos usando os registros de auditoria do Cloud (Google Cloud CLI)

Veja neste guia de início rápido como configurar o Cloud Run for Anthos para receber eventos do Cloud Storage usando o Eventarc.

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

  1. Criar um bucket do Cloud Storage para ser a origem do evento.
  2. Criar um cluster do Google Kubernetes Engine (GKE) e ativar o Cloud Run for Anthos.
  3. Configurar uma conta de serviço para extrair eventos do Pub/Sub usando um componente encaminhador de eventos que encaminha eventos para o destino.
  4. Implantar um serviço do Cloud Run for Anthos que recebe eventos.
  5. Inicializar os destinos do Cloud Run for Anthos no Eventarc.
  6. Criar um gatilho do Eventarc no GKE que envia eventos do Cloud Storage para o serviço do Cloud Run for Anthos.
  7. Fazer o upload de um arquivo para o bucket do Cloud Storage para gerar um evento e visualizar o evento nos registros do Cloud Run for Anthos.

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 a cobrança está ativada para o seu projeto do Google Cloud.

  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 a cobrança está ativada para o seu projeto do Google Cloud.

  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
    em que PROJECT_ID é o ID do projeto no Google Cloud.
  10. Opcional: é possível verificar os parâmetros de configuração usando a CLI do Google Cloud. 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
  11. Ative os tipos de registro de auditoria do Cloud: Leitura de administradores, Leitura de dados e Gravação de dados no Google Cloud Storage:
    1. Leia a política de IAM do projeto e guarde-a em um arquivo:
       gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
      
    2. Edite sua política em /tmp/policy.yaml, adicionar ou alterar somente a configuração dos registros de auditoria de acesso a dados.

      auditConfigs:
      - auditLogConfigs:
        - logType: ADMIN_READ
        - logType: DATA_WRITE
        - logType: DATA_READ
        service: storage.googleapis.com
      bindings:
      - members:
        - user:EMAIL_ADDRESS
        role: roles/owner
      etag: BwW_bHKTV5U=
      version: 1
      Substitua EMAIL_ADDRESS pelo seu endereço de e-mail.
    3. Grave a nova política de IAM:

      gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
      Se o comando anterior relatar um conflito com outra alteração, repita essas etapas, começando com a leitura da política de IAM do projeto.

crie um bucket do Cloud Storage

No guia de início rápido, usamos o Cloud Storage como origem do evento. Para criar um bucket de armazenamento:

gsutil mb -l us-central1 gs://events-quickstart-$(gcloud config get-value project)/

Depois que a origem do evento é criada, implante o serviço de receptor de eventos no Cloud Run.

Criar um cluster do GKE com o Cloud Run for Anthos ativado

Crie um cluster do GKE para o Cloud Run for Anthos com os complementos CloudRun, HttpLoadBalancing e HorizontalPodAutoscaling. 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,HorizontalPodAutoscaling,CloudRun \
  --machine-type=n1-standard-4 \
  --enable-autoscaling --min-nodes=2 --max-nodes=10 \
  --no-issue-client-certificate --num-nodes=2  \
  --enable-stackdriver-kubernetes \
  --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 e os encaminhar ao destino.

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

    TRIGGER_GSA=eventarc-crfa-triggers
    gcloud iam service-accounts create $TRIGGER_GSA
  2. Conceda os papéis pubsub.subscriber, monitoring.metricWriter e eventarc.eventReceiver à 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"
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
     --member "serviceAccount:$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com" \
     --role "roles/eventarc.eventReceiver"

Implantar um serviço do Cloud Run for Anthos

Usando uma imagem pré-criada, gcr.io/cloudrun/hello, implante um serviço do Cloud Run for Anthos que vai receber e registrar eventos:

gcloud run deploy hello \
  --platform=gke \
  --cluster=events-cluster \
  --cluster-location=us-central1 \
  --namespace=default \
  --image=gcr.io/cloudrun/hello

Ativar destinos do GKE

Para cada gatilho direcionado a um serviço do Cloud Run for Anthos, o Eventarc cria um componente encaminhador de eventos que extrai eventos do Pub/Sub e os 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 gatilho dos Registros de auditoria do Cloud

Quando você faz o upload de um arquivo para o Cloud Storage, o gatilho do Eventarc envia eventos do Cloud Storage para o serviço hello do Cloud Run for Anthos.

  1. Crie um gatilho dos Registros de auditoria do Cloud:

    gcloud eventarc triggers create my-gke-trigger \
      --location=$TRIGGER_LOCATION \
      --destination-gke-cluster="events-cluster" \
      --destination-gke-location="us-central1" \
      --destination-gke-namespace="default" \
      --destination-gke-service="hello" \
      --destination-gke-path="/" \
      --event-filters="type=google.cloud.audit.log.v1.written" \
      --event-filters="serviceName=storage.googleapis.com" \
      --event-filters="methodName=storage.objects.create" \
      --service-account=$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com
    

    Isso cria um gatilho chamado my-gke-trigger.

  2. Confirme se o gatilho foi criado com sucesso:

    gcloud eventarc triggers list
    

    A saída será semelhante a:

    NAME             TYPE                               DESTINATION_RUN_SERVICE  DESTINATION_RUN_PATH  ACTIVE
    my-gke-trigger   google.cloud.audit.log.v1.written                                                 Yes
    

Gerar e visualizar um evento

Faça o upload de um arquivo de texto para o Cloud Storage para gerar um evento e acionar o serviço do Cloud Run for Anthos. Em seguida, visualize a mensagem do evento nos registros do serviço do Cloud Run for Anthos.

  1. Faça upload de um arquivo de texto para o Cloud Storage:

    echo "Hello World" > random.txt
    gsutil cp random.txt gs://events-quickstart-$(gcloud config get-value project)/random.txt

    O upload gera um evento, e o serviço do Cloud Run for Anthos registra a mensagem desse evento.

  2. Para ver a mensagem do evento, acesse os registros do serviço do Cloud Run for Anthos:

    1. Acesse a página do Cloud Run for Anthos.

      Acessar o Cloud Run for Anthos

    2. Clique no serviço hello.
    3. Selecione a guia Registros.
  3. Procure uma entrada de registro semelhante a esta:

    Hello from Cloud Run! The container started successfully and is listening for HTTP requests on $PORT
    Received event of type google.cloud.audit.log.v1.written.
    

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 bucket de armazenamento e excluir o cluster do GKE.

Para excluir o gatilho do Eventarc:

gcloud eventarc triggers delete my-gke-trigger

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