Saiba como gerar eventos personalizados usando a ferramenta de linha de comando curl
e enviá-los para um serviço no Cloud Run para Anthos no Google Cloud.
Antes de começar
Para concluir esta tarefa, você precisa ter um agente de eventos e saber o namespace em que ele está sendo executado. Saiba como configurar eventos no Cloud Run for Anthos e criar um agente de eventos.
Se você tiver um agente de eventos ativo, execute o comando a seguir para ver o namespace do Kubernetes:
kubectl get brokers -n NAMESPACE
Como implantar um serviço receptor de eventos do Cloud Run for Anthos
Implantar um serviço do Cloud Run for Anthos que recebe eventos do agente de eventos.
Para implantar o serviço Cloud Run for Anthos:
Para clonar o repositório:
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
Para criar o contêiner e fazer o upload dele no Cloud Build:
gcloud builds submit \ --tag gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
Para implantar a imagem de contêiner no 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
Quando o URL do serviço aparecer, significa que ele foi implantado corretamente.
Como gerar eventos usando cURL
Use curl
em execução em um pod do Google Kubernetes Engine para gerar eventos:
Crie um pod do Google Kubernetes Engine no namespace do agente de eventos:
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: labels: run: curl name: curl namespace: NAMESPACE spec: containers: - image: radial/busyboxplus:curl imagePullPolicy: IfNotPresent name: curl stdin: true tty: true EOF
em que NAMESPACE é o mesmo namespace que seu agente de eventos.
Verifique se o pod está funcionando corretamente executando o seguinte comando:
kubectl get pod curl -n NAMESPACE
em que NAMESPACE é o mesmo namespace que seu agente de eventos.
Você verá um pod chamado "curl" e em execução (Status=Running).
Como criar um gatilho para seu agente de eventos
Crie um gatilho com um evento
alpha-type
de filtro:gcloud beta events triggers create TRIGGER_NAME \ --namespace NAMESPACE \ --target-service=CLOUD_RUN_SERVICE_NAME \ --type=alpha-type \ --custom-type
em que NAMESPACE é o mesmo namespace do agente de eventos.
Se você não especificar um filtro, todos os eventos serão enviados para o serviço do Cloud Run for Anthos. A filtragem de correspondência exata para qualquer número de atributos e extensões do CloudEvents é compatível. Se o filtro definir vários atributos, um evento precisará corresponder a todos eles.
Verifique se o gatilho está configurado:
gcloud beta events triggers list \ --target-service 'CLOUD_RUN_SERVICE_NAME' \ --namespace NAMESPACE
em que NAMESPACE é o mesmo namespace que seu agente de eventos.
A resposta será semelhante a:
TRIGGER EVENT TYPE TARGET trigger-name alpha-type cloud-run-service
Você verá o gatilho [TRIGGER-NAME]
em execução.
Como criar um evento
Para gerar um evento, envie uma solicitação HTTP para o agente de eventos do pod do Google Kubernetes Engine.
Encontre o URL do agente de eventos ao qual a solicitação HTTP será feita:
kubectl get brokers default \ --namespace NAMESPACE \ --output jsonpath="{.status.address.url}"
Anote o URL do agente. Você o usará para enviar a solicitação HTTP.
Execute SSH no pod:
kubectl --namespace NAMESPACE attach curl -it
Faça uma solicitação HTTP usando
curl
com um cabeçalho HTTP deCe-Type: alpha-type
para corresponder o filtro do gatilho ao agente de eventos. Neste exemplo, a mensagem ésend-cloudevents-to-broker
:curl -v "EVENT_BROKER_URL" \ -X POST \ -H "Ce-Id: my-id" \ -H "Ce-Specversion: 1.0" \ -H "Ce-Type: alpha-type" \ -H "Ce-Subject: custom event" \ -H "Ce-Source: my-source" \ -H "Content-Type: application/json" \ -d '{"msg":"send-cloudevents-to-broker"}'
Isso gera um evento, e o agente responde com uma resposta HTTP 202.
Como visualizar o evento
Visualize o evento observando os registros do serviço receptor do Cloud Run for Anthos:
Para ver os registros, digite:
gcloud logging read "resource.type=k8s_container \ resource.labels.namespace_name=events \ resource.labels.container_name=user-container"
Limpeza
Exclua os recursos criados neste tutorial para evitar cobranças recorrentes.
Exclua o pod:
kubectl delete pod curl --namespace >NAMESPACE
Exclua o gatilho:
gcloud beta events triggers delete TRIGGER_NAME \ --namespace >NAMESPACE