O Knative Eventing oferece um modelo completo de eventos para integrar fontes externas. Implante o Knative Eventing no cluster ACK e crie triggers para rotear eventos do EventBridge para Serviços Knative, habilitando workloads orientados a eventos.
Pré-requisitos
Versão do Knative Serving 1.12.7 ou superior.
-
Ativar o EventBridge e conceder as permissões necessárias.
NotaConsulte O que é o EventBridge?.
Como funciona
O EventBridge recebe eventos de diversas fontes. Configure um barramento de eventos, regras e alvos para filtrar, transformar e rotear esses eventos para os Serviços Knative, permitindo o consumo sob demanda. A figura a seguir ilustra a arquitetura.
É possível conectar o OSS ao EventBridge como fonte de eventos. Consulte Eventos do OSS para verificar os tipos de eventos compatíveis.
Etapa 1: Implantar os componentes Eventing e EventBridge
O Knative utiliza o EventBridge para recursos orientados a eventos, com suporte a fontes de eventos da Alibaba Cloud e encaminhamento de eventos.
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em .
-
Na aba Add-ons, implante os componentes Eventing e EventBridge.
Ainda na aba Add-ons, localize o componente Eventing e clique em Deployments na coluna Actions.
-
Após implantar o Eventing, localize o componente EventBridge e clique em Deployments na coluna Actions. Insira o AccessKey ID e o AccessKey secret e clique em OK.
Consulte Criar um par de AccessKey.
NotaPara aumentar a segurança do usuário RAM, vincule um dispositivo MFA para autenticação secundária durante o login no console ou ao executar operações sensíveis. Essa medida adiciona uma camada extra de proteção além do nome de usuário e senha. Para mais informações, consulte Vincular um dispositivo MFA a um usuário RAM.
Se o Status dos componentes for Deployed, a implantação foi bem-sucedida.
Etapa 2: Criar um Serviço Knative
Crie um Serviço Knative chamado event-display para registrar os eventos recebidos nos logs. Use o console do ACK ou o kubectl.
Console
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em .
-
Na aba Services, clique em Create from Template.
Exemplo:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: event-display namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/event-display:20230207194118_3874dbdNa aba Services, o Status igual a Success confirma a criação do serviço.
Kubectl
-
Salve o conteúdo abaixo como
event-display.yamle aplique-o:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: event-display namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/event-display:20230207194118_3874dbdkubectl apply -f event-display.yaml -
Verifique o status do Serviço Knative:
kubectl get ksvcSaída esperada:
NAME URL LATESTCREATED LATESTREADY READY REASON event-display http://event-display.default.example.com event-display-00001 event-display-00001 True
Etapa 3: Criar um trigger
Console
Na página Knative, clique na aba Services. Clique no serviço de destino e, em seguida, na aba Trigger.
-
Clique em Create Trigger. Na página Configuration, defina os seguintes parâmetros:
Parâmetro
Descrição
Exemplo
Name
Nome do trigger.
my-service-trigger
Broker
Selecione EventBridge ou Others.
EventBridge
Event Source
Selecione uma fonte de eventos.
OSS
Event Type
Selecione um tipo de evento.
oss:ActionTrail:ConsoleOperation
O trigger aparecerá na aba Triggers.
Kubectl
-
Salve o conteúdo abaixo como
my-service-trigger.yamle aplique-o:apiVersion: eventing.knative.dev/v1 kind: Trigger metadata: name: my-service-trigger spec: broker: eventbridge-default-broker filter: attributes: source: acs.oss type: 'oss:ActionTrail:ConsoleOperation' subscriber: ref: apiVersion: serving.knative.dev/v1 kind: Service name: event-display namespace: defaultbroker: Oeventbridge-default-broker, correspondente ao barramento de eventos padrão (default) no EventBridge.source: A fonte do evento.type: O tipo de evento. Separe vários tipos com vírgula (,).subscriber: O Serviço Knative de destino.
kubectl apply -f my-service-trigger.yaml -
Verifique o status do trigger:
kubectl get triggersSaída esperada:
NAME BROKER SUBSCRIBER_URI AGE READY REASON my-service-trigger eventbridge-default-broker http://event-display.default.svc.cluster.local 42h True
Etapa 4: Verificar o consumo de eventos
-
Carregue um arquivo no bucket OSS.
NotaO bucket OSS e o EventBridge devem estar na mesma região.
ossutil cp <file_name> oss://<bucket_name>Após o upload, o EventBridge aciona o Serviço Knative para consumir o evento.
-
Visualize o Rastreamento de Eventos.
Faça login no console do EventBridge. No painel de navegação à esquerda, clique em Event Buses.
Localize o barramento de eventos default e clique em Event Tracking na coluna Actions. Na aba Query By Time Range, defina um Time Range e clique em Search.
-
Encontre o evento cuja Event Source seja Object Storage Service e cujo Event Type seja Upload Object. Clique em Event Trace na coluna Actions.
Um status de entrega Succeeded com resposta
[200]confirma que o EventBridge entregou o evento.A página Event Trace exibe o status completo da entrega.
-
Confirme se o Serviço Knative consumiu o evento.
-
Verifique o pod criado para consumir o evento:
kubectl get podSaída esperada:
NAME READY STATUS RESTARTS AGE event-display-00001-deployment-56cc79****-z2vhv 2/2 Running 0 7s -
Visualize os logs para confirmar que o Serviço Knative registrou o evento:
kubectl logs event-display-00001-deployment-56cc79****-z2vhv user-containerSaída esperada:
{"data":{"eventVersion":"1.0","responseElements":{"requestId":"63E21F5FEE852133319101AD"},"eventSource":"acs:oss","eventTime":"2023-02-07T09:52:31.000Z","requestParameters":{"sourceIPAddress":"XX.XXX.XX.XXX"},"eventName":"ObjectCreated:PutObject","userIdentity":{"principalId":"1118324452360952"},"region":"cn-hangzhou","oss":{"bucket":{"name":"knative","arn":"acs:oss:cn-hangzhou:1581204543170042:knative","virtualBucket":"","ownerIdentity":"1581204543170042"},"ossSchemaVersion":"1.0","object":{"size":225496,"objectMeta":{"mimeType":"application/octet-stream"},"deltaSize":0,"eTag":"B350C082843DAC7E9E634193437EBA30","key":"demo.data"}}}}
A saída confirma que o Serviço Knative consumiu o evento de upload de arquivo do OSS.
-