Knative Eventing fournit un modèle d'événements complet pour l'intégration de sources d'événements externes. Déployez Knative Eventing dans votre cluster ACK et créez des déclencheurs pour acheminer les événements EventBridge vers des services Knative afin de gérer des charges de travail événementielles.
Prérequis
La version de Knative Serving est 1.12.7 ou ultérieure.
-
Activez EventBridge et accordez les autorisations requises.
RemarqueConsultez la rubrique Qu'est-ce qu'EventBridge ?.
Fonctionnement
EventBridge reçoit des événements provenant de diverses sources. Configurez un bus d'événements, des règles et des cibles pour filtrer, transformer et acheminer les événements vers des services Knative en vue d'une consommation à la demande. Le schéma suivant illustre l'architecture.
Vous pouvez connecter OSS à EventBridge en tant que source d'événements. Consultez la rubrique Événements OSS pour connaître les types d'événements pris en charge.
Étape 1 : Déployer les composants Eventing et EventBridge
Knative utilise EventBridge pour ses fonctionnalités événementielles, prenant en charge les sources d'événements Alibaba Cloud et le transfert d'événements.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
Sous l'onglet Components, déployez les composants Eventing et EventBridge.
Sous l'onglet Components, localisez le composant Eventing et cliquez sur Deploy dans la colonne Actions.
-
Une fois Eventing déployé, localisez le composant EventBridge et cliquez sur Deploy dans la colonne Actions. Saisissez votre AccessKey ID et votre AccessKey secret, puis cliquez sur Confirm.
Consultez la rubrique Créer une paire de clés AccessKey.
RemarquePour renforcer la sécurité de votre utilisateur RAM, associez un dispositif MFA pour une authentification secondaire lors de la connexion à la console ou lors de l'exécution d'opérations sensibles. Cela offre une couche de protection supplémentaire au-delà du nom d'utilisateur et du mot de passe. Pour plus d'informations, consultez la rubrique Associer un dispositif MFA à un utilisateur RAM.
Si le Status des composants est Deployed, le déploiement a réussi.
Étape 2 : Créer un service Knative
Créez un service Knative nommé event-display qui journalise les événements reçus. Vous pouvez utiliser la console ACK ou kubectl.
Console
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
Sous l'onglet Services, cliquez sur Create from Template.
Exemple :
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_3874dbdSous l'onglet Services, un Status indiquant Success confirme que le service a été créé.
Kubectl
-
Enregistrez le contenu suivant dans le fichier
event-display.yamlet appliquez-le :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 -
Vérifiez l'état du service Knative :
kubectl get ksvcRésultat attendu :
NAME URL LATESTCREATED LATESTREADY READY REASON event-display http://event-display.default.example.com event-display-00001 event-display-00001 True
Étape 3 : Créer un déclencheur
Console
Sur la page Knative, cliquez sur l'onglet Services. Cliquez sur le service cible, puis sur l'onglet Trigger.
-
Cliquez sur Create Trigger. Sur la page Configuration, définissez les paramètres suivants :
Parameter
Description
Example
Name
Le nom du déclencheur.
my-service-trigger
Broker
Sélectionnez EventBridge ou Others.
EventBridge
Event Source
Sélectionnez une source d'événements.
OSS
Event Type
Sélectionnez un type d'événement.
oss:ActionTrail:ConsoleOperation
Le déclencheur apparaît sous l'onglet Triggers.
Kubectl
-
Enregistrez le contenu suivant dans le fichier
my-service-trigger.yamlet appliquez-le :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: leeventbridge-default-broker, correspondant au bus d'événements par défaut (default) dans EventBridge.source: la source d'événements.type: le type d'événement. Séparez plusieurs types par une virgule (,).subscriber: le service Knative cible.
kubectl apply -f my-service-trigger.yaml -
Vérifiez l'état du déclencheur :
kubectl get triggersRésultat attendu :
NAME BROKER SUBSCRIBER_URI AGE READY REASON my-service-trigger eventbridge-default-broker http://event-display.default.svc.cluster.local 42h True
Étape 4 : Vérifier la consommation des événements
-
Téléchargez un fichier dans votre bucket OSS.
RemarqueLe bucket OSS et EventBridge doivent se trouver dans la même région.
ossutil cp <file_name> oss://<bucket_name>Après le téléchargement, EventBridge déclenche le service Knative pour consommer l'événement.
-
Consultez la trace des événements.
Connectez-vous à la console EventBridge. Dans le volet de navigation de gauche, cliquez sur Event Buses.
Localisez le bus d'événements default et cliquez sur Event Tracking dans la colonne Actions. Sous l'onglet Query By Time Range, définissez une Time Range et cliquez sur Search.
-
Recherchez l'événement dont la Event Source est Object Storage Service et dont le Event Type est Upload Object. Cliquez sur Event Trace dans la colonne Actions.
Un statut de livraison Succeeded avec la réponse
[200]confirme qu'EventBridge a livré l'événement.La page Event Trace affiche l'intégralité du statut de livraison.
-
Vérifiez que le service Knative a consommé l'événement.
-
Vérifiez la présence du pod créé pour consommer l'événement :
kubectl get podRésultat attendu :
NAME READY STATUS RESTARTS AGE event-display-00001-deployment-56cc79****-z2vhv 2/2 Running 0 7s -
Consultez les journaux pour confirmer que le service Knative a enregistré l'événement :
kubectl logs event-display-00001-deployment-56cc79****-z2vhv user-containerRésultat attendu :
{"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"}}}}
Le résultat confirme que le service Knative a consommé l'événement de téléchargement de fichier OSS.
-