Guía de inicio rápido: Recibir eventos con los Registros de auditoría de Cloud (Google Cloud CLI)

En esta guía de inicio rápido, se muestra cómo configurar Cloud Run for Anthos para recibir eventos de Cloud Storage mediante Eventarc.

En esta guía de inicio rápido, podrás hacer lo siguiente:

  1. Crear un bucket de Cloud Storage para que sea la fuente del evento
  2. Crear un clúster de Google Kubernetes Engine (GKE) y habilitar Cloud Run for Anthos
  3. Configurar una cuenta de servicio para extraer eventos de Pub/Sub mediante un componente de reenvío de eventos que reenvíe eventos al destino
  4. Implementar un servicio de Cloud Run for Anthos que reciba eventos
  5. Inicializar los destinos de Cloud Run for Anthos en Eventarc
  6. Crea un activador de GKE de Eventarc que envíe eventos desde Cloud Storage al servicio de Cloud Run for Anthos.
  7. Sube un archivo al bucket de Cloud Storage para generar un evento y visualizarlo en los registros de Cloud Run for Anthos.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  6. Instala y, luego, inicializa Google Cloud CLI. Si se te solicita configurar una región de procesamiento predeterminada, ingresa n.
  7. Actualiza los componentes de gcloud:
    gcloud components update
  8. Habilita las API de Google Cloud, Cloud Build, Resource Manager, Google Kubernetes Engine, Eventarc y Container Registry:
    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. Establece las variables de configuración que se usan en esta guía de inicio 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
    En el ejemplo anterior, PROJECT_ID es el ID del proyecto de Google Cloud.
  10. Opcional: Para comprobar los ajustes de configuración con Google Cloud CLI, escribe lo siguiente:
    gcloud config list
    El resultado debería ser similar al ejemplo siguiente:
    [eventarc]
    location = us-central1
    [run]
    cluster = events-cluster
    cluster_location = us-central1
    platform = gke
  11. Habilita los tipos de registros de lectura de administrador, lectura de datos y escritura de datos de los registros de auditoría de Cloud en Cloud Storage:
    1. Lee la política de IAM de tu proyecto y almacénala en un archivo:
       gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
      
    2. Edita la política en /tmp/policy.yaml. Para ello, agrega o cambia solo la configuración de los registros de auditoría de acceso a datos.

      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
      Reemplaza EMAIL_ADDRESS por tu dirección de correo electrónico.
    3. Escribe tu nueva política de IAM:

      gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
      Si el comando anterior informa de un conflicto con otro cambio, repite estos pasos y comienza por leer la lectura de la política de IAM del proyecto.

Cree un bucket de Cloud Storage

En esta guía de inicio rápido, se usa Cloud Storage como la fuente del evento. Para crear un bucket de almacenamiento, ejecuta el siguiente comando:

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

Después de crear la fuente del evento, puedes implementar el servicio del receptor de eventos en Cloud Run.

Crea un clúster de GKE con Cloud Run for Anthos habilitado.

Crea un clúster de GKE para Cloud Run for Anthos con los complementos CloudRun, HttpLoadBalancing y HorizontalPodAutoscaling. Habilita Workload Identity para acceder a los servicios de Google Cloud desde aplicaciones que se ejecutan dentro de 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

Espera a que termine de crearse el clúster. Puedes ignorar las advertencias durante el proceso de creación. Una vez que se crea el clúster, el resultado debe ser similar al siguiente:

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

En el ejemplo anterior, my-project es el ID del proyecto de Google Cloud.

Esto crea un clúster de GKE llamado events-cluster en my-project.

Configura una cuenta de servicio de Google

Configura una cuenta de servicio proporcionada por el usuario y otórgale funciones específicas para que el componente de reenvío de eventos pueda extraer eventos de Pub/Sub y reenviarlos al destino.

  1. Crea una cuenta de servicio llamada TRIGGER_GSA que se use para crear activadores:

    TRIGGER_GSA=eventarc-crfa-triggers
    gcloud iam service-accounts create $TRIGGER_GSA
  2. Otorga las funciones pubsub.subscriber, monitoring.metricWriter y eventarc.eventReceiver a la cuenta de servicio:

    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"

Implementa un servicio de Cloud Run for Anthos

Con una imagen compilada previamente, gcr.io/cloudrun/hello, implementa un servicio de Cloud Run for Anthos que recibirá y registrará eventos:

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

Habilita los destinos de GKE

Para cada activador que se segmenta a un servicio de Cloud Run for Anthos, Eventarc crea un componente de reenvío de eventos que extrae eventos de Pub/Sub y los reenvía al destino. Para crear el componente y administrar los recursos en el clúster de GKE, otorga permisos a una cuenta de servicio de Eventarc:

  1. Habilita los destinos de GKE para Eventarc:

    gcloud eventarc gke-destinations init
  2. Cuando se te solicite vincular los roles necesarios, ingresa y.

    Los siguientes roles están vinculados a la cuenta de servicio:

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

Crea un activador de registros de auditoría de Cloud

Cuando subes un archivo a Cloud Storage, el activador de Eventarc envía eventos de Cloud Storage al servicio hello de Cloud Run for Anthos.

  1. Crea un activador de registros de auditoría de 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
    

    Esto crea un activador llamado my-gke-trigger.

  2. Confirma que el activador se haya creado correctamente:

    gcloud eventarc triggers list

    El resultado debería ser similar al ejemplo siguiente:

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

Genera y visualiza un evento

Sube un archivo de texto a Cloud Storage para generar un evento y activar el servicio de Cloud Run for Anthos. Luego, puedes ver el mensaje del evento en los registros del servicio de Cloud Run for Anthos.

  1. Sube un archivo de texto a Cloud Storage:

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

    La carga genera un evento, y el servicio de Cloud Run for Anthos registra el mensaje del evento.

  2. Para ver el mensaje del evento, ve a los registros del servicio de Cloud Run for Anthos:

    1. Ve a la página Cloud Run for Anthos.

      Ir a Cloud Run for Anthos

    2. Haz clic en el servicio hello.
    3. Selecciona la pestaña Registros.
  3. Busca una entrada de registro similar a lo siguiente:

    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.
    

Limpia

Si bien Cloud Run no cobra cuando el servicio no se usa, es posible que se te cobre poralmacenar la imagen del contenedor en Container Registry, recursos de Eventarc, mensajes de Pub/Sub y el clúster de GKE.

Puedes borrar tu imagen, borrar tu bucket de almacenamiento y borrar el clúster de GKE.

Para borrar el activador de Eventarc, ejecuta el siguiente comando:

gcloud eventarc triggers delete my-gke-trigger

Como alternativa, puedes borrar el proyecto de Cloud Console para evitar que se generen cargos. Si borras el proyecto de Cloud, se dejan de facturar todos los recursos que usaste en ese proyecto.

gcloud projects delete PROJECT_ID_OR_NUMBER

Reemplaza PROJECT_ID_OR_NUMBER por el ID o el número del proyecto.

¿Qué sigue?