Aprende a implementar un servicio en Cloud Run for Anthos en Google Cloud y, luego, a crear y enviar eventos a ese servicio desde los registros de auditoría de Cloud.
Antes de comenzar
Para completar esta tarea, debes tener un agente de eventos y saber en qué espacio de nombres se ejecuta. Obtén más información sobre cómo configurar eventos para Cloud Run for Anthos y crear un agente de eventos.
Si tienes un agente de eventos en ejecución, puedes ver el espacio de nombres de Kubernetes si ejecutas este comando:
kubectl get brokers -n NAMESPACE
Implementa un servicio de receptor de eventos de Cloud Run for Anthos
Implementa un servicio de Cloud Run for Anthos que reciba eventos del agente de eventos.
Clona el repositorio:
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git cd python-docs-samples/eventarc/audit-storage
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git cd java-docs-samples/eventarc/audit-storage
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git cd golang-samples/eventarc/audit_storage
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git cd nodejs-docs-samples/eventarc/audit-storage
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git cd dotnet-docs-samples/eventarc/audit-storage
Compila el contenedor y súbelo a Cloud Build:
gcloud builds submit \ --tag gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
En el ejemplo anterior, CLOUD_RUN_CONTAINER_NAME es el nombre de archivo de tu contenedor.
Implementa la imagen de contenedor en Cloud Run for Anthos:
gcloud run deploy CLOUD_RUN_SERVICE_NAME \ --namespace=NAMESPACE \ --image gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.
Si ves la URL del servicio, se implementó de forma correcta.
Crea un activador de registros de auditoría de Cloud
Crea un activador en el mismo espacio de nombres que tu agente de eventos:
gcloud beta events triggers create TRIGGER_NAME \ --namespace NAMESPACE \ --target-service=CLOUD_RUN_SERVICE_NAME \ --type=google.cloud.audit.log.v1.written \ --parameters serviceName=pubsub.googleapis.com \ --parameters methodName=google.pubsub.v1.Publisher.CreateTopic
En este ejemplo, el activador filtra las entradas de registros de auditoría de Cloud que tienen entradas
methodName
iguales agoogle.pubsub.v1.Publisher.CreateTopic
. Para ver más opciones de filtrado, consulta Formato AuditLog.Después de 60 segundos, verifica que el activador funcione:
gcloud beta events triggers list \ --target-service CLOUD_RUN_SERVICE_NAME \ --namespace NAMESPACE
En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.
El resultado es similar al siguiente:
TRIGGER EVENT TYPE TARGET trigger-name google.cloud.audit.log.v1.written cloud-run-service
Genera un evento
Genera un evento mediante la creación de un tema de Pub/Sub:
gcloud pubsub topics create TOPIC_NAME
Verifica que el servicio de Cloud Run for Anthos haya recibido el evento:
kubectl logs \ --selector serving.knative.dev/service=CLOUD_RUN_SERVICE_NAME \ -c user-container \ -n NAMESPACE \ --tail=200
En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.
El resultado es similar al siguiente:
[...] [2020-09-10 18:51:28 +0000] [1] [INFO] Starting gunicorn 20.0.4 [2020-09-10 18:51:28 +0000] [1] [INFO] Listening at: http://0.0.0.0:8080 (1) [2020-09-10 18:51:28 +0000] [1] [INFO] Using worker: threads [2020-09-10 18:51:28 +0000] [7] [INFO] Booting worker with pid: 7 GCS CloudEvent type: pubsub.googleapis.com/projects/PROJECT_NAME/topics/to-be-deleted GCS CloudEvent type: pubsub.googleapis.com/projects/PROJECT_NAME/topics/to-be-deleted2 [...]
Realiza una limpieza
Borra los recursos que se crearon en este instructivo para evitar cargos recurrentes.
Para borrar el activador, escribe lo siguiente:
gcloud beta events triggers delete TRIGGER_NAME \ --namespace NAMESPACE
En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.
Borra el tema de Pub/Sub:
gcloud pubsub topics delete TOPIC_NAME