5.2. Sources des événements
5.2.1. Sources des événements Copier lienLien copié sur presse-papiers!
Un Knative event source peut être n'importe quel objet Kubernetes qui génère ou importe des événements cloud, et relaie ces événements vers un autre point d'extrémité, connu sous le nom de sink. L'approvisionnement en événements est essentiel pour développer un système distribué qui réagit aux événements.
Vous pouvez créer et gérer des sources d'événements Knative en utilisant la perspective Developer dans la console web OpenShift Container Platform, le CLI Knative (kn
), ou en appliquant des fichiers YAML.
Actuellement, OpenShift Serverless prend en charge les types de sources d'événements suivants :
- Source du serveur API
- Apporte les événements du serveur API Kubernetes dans Knative. La source du serveur API envoie un nouvel événement chaque fois qu'une ressource Kubernetes est créée, mise à jour ou supprimée.
- Source de ping
- Produit des événements avec une charge utile fixe selon un calendrier cron spécifié.
- Source d'événements Kafka
- Connecte un cluster Apache Kafka à un puits en tant que source d'événements.
Vous pouvez également créer une source d'événement personnalisée.
5.2.2. Source d'événement dans la perspective de l'administrateur Copier lienLien copié sur presse-papiers!
L'approvisionnement en événements est essentiel pour développer un système distribué qui réagit aux événements.
5.2.2.1. Création d'une source d'événements à l'aide de la perspective administrateur Copier lienLien copié sur presse-papiers!
Un Knative event source peut être n'importe quel objet Kubernetes qui génère ou importe des événements cloud, et relaie ces événements vers un autre point final, connu sous le nom de sink.
Conditions préalables
- OpenShift Serverless Operator et Knative Eventing sont installés sur votre cluster OpenShift Container Platform.
- Vous vous êtes connecté à la console web et vous vous trouvez dans la perspective Administrator.
- Vous disposez des droits d'administrateur de cluster pour OpenShift Container Platform.
Procédure
-
Dans la perspective Administrator de la console web OpenShift Container Platform, naviguez vers Serverless
Eventing. - Dans la liste Create, sélectionnez Event Source. Vous serez dirigé vers la page Event Sources.
- Sélectionnez le type de source d'événement que vous souhaitez créer.
5.2.3. Création d'une source de serveur API Copier lienLien copié sur presse-papiers!
La source du serveur API est une source d'événements qui peut être utilisée pour connecter un récepteur d'événements, tel qu'un service Knative, au serveur API Kubernetes. La source du serveur API surveille les événements Kubernetes et les transmet au courtier Knative Eventing.
5.2.3.1. Création d'une source de serveur API à l'aide de la console web Copier lienLien copié sur presse-papiers!
Une fois Knative Eventing installé sur votre cluster, vous pouvez créer une source de serveur API à l'aide de la console Web. L'utilisation de la console web d'OpenShift Container Platform offre une interface utilisateur rationalisée et intuitive pour créer une source d'événement.
Conditions préalables
- Vous vous êtes connecté à la console web de OpenShift Container Platform.
- OpenShift Serverless Operator et Knative Eventing sont installés sur le cluster.
- Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
-
Vous avez installé l'OpenShift CLI (
oc
).
Si vous souhaitez réutiliser un compte de service existant, vous pouvez modifier votre ressource ServiceAccount
existante pour y inclure les autorisations requises au lieu de créer une nouvelle ressource.
Créez un compte de service, un rôle et une liaison de rôle pour la source d'événement sous la forme d'un fichier YAML :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Appliquer le fichier YAML :
oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Dans la perspective Developer, naviguez vers Add
Event Source. La page Event Sources s'affiche. - Facultatif : si vous avez plusieurs fournisseurs pour vos sources d'événements, sélectionnez le fournisseur requis dans la liste Providers pour filtrer les sources d'événements disponibles du fournisseur.
- Sélectionnez ApiServerSource puis cliquez sur Create Event Source. La page Create Event Source s'affiche.
Configurez les paramètres de ApiServerSource en utilisant les boutons Form view ou YAML view:
NoteVous pouvez passer de la vue Form view à la vue YAML view. Les données sont conservées lors du passage d'une vue à l'autre.
-
Saisissez
v1
comme APIVERSION etEvent
comme KIND. - Sélectionnez le site Service Account Name pour le compte de service que vous avez créé.
- Sélectionnez le site Sink pour la source de l'événement. Un Sink peut être soit un Resource, tel qu'un canal, un courtier ou un service, soit un URI.
-
Saisissez
- Cliquez sur Create.
Vérification
Après avoir créé la source du serveur API, vous la verrez connectée au service auquel elle est liée dans la vue Topology.
Si un puits URI est utilisé, modifiez l'URI en faisant un clic droit sur URI sink
Suppression de la source du serveur API
- Naviguez jusqu'à la vue Topology.
Cliquez avec le bouton droit de la souris sur la source du serveur API et sélectionnez Delete ApiServerSource.
5.2.3.2. Création d'une source de serveur API à l'aide du CLI Knative Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser la commande kn source apiserver create
pour créer une source de serveur API à l'aide de l'interface de programmation kn
. L'utilisation du CLI kn
pour créer une source de serveur API offre une interface utilisateur plus rationnelle et plus intuitive que la modification directe des fichiers YAML.
Conditions préalables
- OpenShift Serverless Operator et Knative Eventing sont installés sur le cluster.
- Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
-
Vous avez installé l'OpenShift CLI (
oc
). -
Vous avez installé le CLI Knative (
kn
).
Si vous souhaitez réutiliser un compte de service existant, vous pouvez modifier votre ressource ServiceAccount
existante pour y inclure les autorisations requises au lieu de créer une nouvelle ressource.
Créez un compte de service, un rôle et une liaison de rôle pour la source d'événement sous la forme d'un fichier YAML :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Appliquer le fichier YAML :
oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez une source de serveur API dotée d'un puits d'événements. Dans l'exemple suivant, le puits est un courtier :
kn source apiserver create <event_source_name> --sink broker:<broker_name> --resource "event:v1" --service-account <service_account_name> --mode Resource
$ kn source apiserver create <event_source_name> --sink broker:<broker_name> --resource "event:v1" --service-account <service_account_name> --mode Resource
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour vérifier que la source du serveur API est correctement configurée, créez un service Knative qui déverse les messages entrants dans son journal :
kn service create <service_name> --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest
$ kn service create <service_name> --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si vous avez utilisé un courtier comme puits d'événements, créez un déclencheur pour filtrer les événements du courtier
default
vers le service :kn trigger create <trigger_name> --sink ksvc:<service_name> $ kn trigger create <trigger_name>
kn trigger create <trigger_name> --sink ksvc:<service_name> $ kn trigger create <trigger_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer des événements en lançant un pod dans l'espace de noms par défaut :
oc create deployment hello-node --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest
$ oc create deployment hello-node --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que le contrôleur est correctement mappé en inspectant la sortie générée par la commande suivante :
kn source apiserver describe <nom_de_la_source>
$ kn source apiserver describe <nom_de_la_source>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Vous pouvez vérifier que les événements Kubernetes ont été envoyés à Knative en consultant les journaux de la fonction dumper de messages.
Obtenez les cosses :
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Affichez les journaux des fonctions de l'expéditeur de messages pour les modules :
oc logs $(oc get pod -o name | grep event-display) -c user-container
$ oc logs $(oc get pod -o name | grep event-display) -c user-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Suppression de la source du serveur API
Supprimer le déclencheur :
kn trigger delete <trigger_name>
kn trigger delete <trigger_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer la source de l'événement :
kn source apiserver delete <nom_de_la_source>
$ kn source apiserver delete <nom_de_la_source>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimez le compte de service, le rôle de cluster et le lien de cluster :
oc delete -f authentication.yaml
$ oc delete -f authentication.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.3.2.1. Drapeau d'évitement de l'CLI Knative Copier lienLien copié sur presse-papiers!
Lorsque vous créez une source d'événements à l'aide de l'interface de programmation Knative (kn
), vous pouvez spécifier un puits vers lequel les événements sont envoyés à partir de cette ressource à l'aide de l'indicateur --sink
. Le récepteur peut être n'importe quelle ressource adressable ou appelable qui peut recevoir des événements entrants d'autres ressources.
L'exemple suivant crée une liaison de puits qui utilise un service, http://event-display.svc.cluster.local
, comme puits :
Exemple de commande utilisant l'indicateur d'évitement
kn source binding create bind-heartbeat \ --namespace sinkbinding-example \ --subject "Job:batch/v1:app=heartbeat-cron" \ --sink http://event-display.svc.cluster.local \ --ce-override "sink=bound"
$ kn source binding create bind-heartbeat \
--namespace sinkbinding-example \
--subject "Job:batch/v1:app=heartbeat-cron" \
--sink http://event-display.svc.cluster.local \
--ce-override "sink=bound"
- 1
svc
danshttp://event-display.svc.cluster.local
détermine que le puits est un service Knative. D'autres préfixes de puits par défaut incluentchannel
, etbroker
.
5.2.3.3. Création d'un serveur API source à l'aide de fichiers YAML Copier lienLien copié sur presse-papiers!
La création de ressources Knative à l'aide de fichiers YAML utilise une API déclarative, qui vous permet de décrire les sources d'événements de manière déclarative et reproductible. Pour créer une source de serveur API à l'aide de YAML, vous devez créer un fichier YAML qui définit un objet ApiServerSource
, puis l'appliquer à l'aide de la commande oc apply
.
Conditions préalables
- OpenShift Serverless Operator et Knative Eventing sont installés sur le cluster.
- Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
-
Vous avez créé le broker
default
dans le même espace de noms que celui défini dans le fichier YAML source du serveur API. -
Installez le CLI OpenShift (
oc
).
Si vous souhaitez réutiliser un compte de service existant, vous pouvez modifier votre ressource ServiceAccount
existante pour y inclure les autorisations requises au lieu de créer une nouvelle ressource.
Créez un compte de service, un rôle et une liaison de rôle pour la source d'événement sous la forme d'un fichier YAML :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Appliquer le fichier YAML :
oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer une source de serveur API sous la forme d'un fichier YAML :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Appliquer le fichier YAML
ApiServerSource
:oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour vérifier que la source du serveur API est correctement configurée, créez un service Knative sous la forme d'un fichier YAML qui déverse les messages entrants dans son journal :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Appliquer le fichier YAML
Service
:oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un objet
Trigger
sous la forme d'un fichier YAML qui filtre les événements du courtierdefault
vers le service créé à l'étape précédente :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Appliquer le fichier YAML
Trigger
:oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer des événements en lançant un pod dans l'espace de noms par défaut :
oc create deployment hello-node --image=quay.io/openshift-knative/knative-eventing-sources-event-display
$ oc create deployment hello-node --image=quay.io/openshift-knative/knative-eventing-sources-event-display
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que le contrôleur est correctement mappé, en entrant la commande suivante et en inspectant la sortie :
oc get apiserversource.sources.knative.dev testevents -o yaml
$ oc get apiserversource.sources.knative.dev testevents -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Pour vérifier que les événements Kubernetes ont été envoyés à Knative, vous pouvez consulter les journaux de la fonction dumper de messages.
Récupérez les pods en entrant la commande suivante :
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Affichez les journaux de la fonction d'expéditeur de messages pour les modules en entrant la commande suivante :
oc logs $(oc get pod -o name | grep event-display) -c user-container
$ oc logs $(oc get pod -o name | grep event-display) -c user-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Suppression de la source du serveur API
Supprimer le déclencheur :
oc delete -f trigger.yaml
$ oc delete -f trigger.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimer la source de l'événement :
oc delete -f k8s-events.yaml
$ oc delete -f k8s-events.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimez le compte de service, le rôle de cluster et le lien de cluster :
oc delete -f authentication.yaml
$ oc delete -f authentication.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.4. Création d'une source de ping Copier lienLien copié sur presse-papiers!
Une source ping est une source d'événements qui peut être utilisée pour envoyer périodiquement des événements ping avec une charge utile constante à un consommateur d'événements. Une source ping peut être utilisée pour programmer l'envoi d'événements, à l'instar d'une minuterie.
5.2.4.1. Création d'une source de ping à l'aide de la console web Copier lienLien copié sur presse-papiers!
Une fois Knative Eventing installé sur votre cluster, vous pouvez créer une source de ping en utilisant la console web. L'utilisation de la console web d'OpenShift Container Platform offre une interface utilisateur rationalisée et intuitive pour créer une source d'événement.
Conditions préalables
- Vous vous êtes connecté à la console web de OpenShift Container Platform.
- L'opérateur OpenShift Serverless, Knative Serving et Knative Eventing sont installés sur le cluster.
- Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
Procédure
Pour vérifier que la source de ping fonctionne, créez un service Knative simple qui déverse les messages entrants dans les journaux du service.
-
Dans la perspective Developer, naviguez vers Add
YAML. Copiez l'exemple YAML :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Cliquez sur Create.
-
Dans la perspective Developer, naviguez vers Add
Créez une source ping dans le même espace de noms que le service créé à l'étape précédente, ou tout autre puits vers lequel vous souhaitez envoyer des événements.
-
Dans la perspective Developer, naviguez vers Add
Event Source. La page Event Sources s'affiche. - Facultatif : si vous avez plusieurs fournisseurs pour vos sources d'événements, sélectionnez le fournisseur requis dans la liste Providers pour filtrer les sources d'événements disponibles du fournisseur.
Sélectionnez Ping Source puis cliquez sur Create Event Source. La page Create Event Source s'affiche.
NoteVous pouvez configurer les paramètres de PingSource en utilisant Form view ou YAML view et passer d'une vue à l'autre. Les données sont conservées lors du passage d'une vue à l'autre.
-
Enter a value for Schedule. In this example, the value is
*/2 * * * *
, which creates a PingSource that sends a message every two minutes. - Facultatif : vous pouvez saisir une valeur pour Data, qui est la charge utile du message.
-
Sélectionnez un Sink. Il peut s'agir d'un Resource ou d'un URI. Dans cet exemple, le service
event-display
créé à l'étape précédente est utilisé comme puits Resource. - Cliquez sur Create.
-
Dans la perspective Developer, naviguez vers Add
Vérification
Vous pouvez vérifier que la source de ping a été créée et qu'elle est connectée au puits en consultant la page Topology.
- Dans la perspective Developer, naviguez jusqu'à Topology.
Affichez la source et la destination du ping.
Suppression de la source de ping
- Naviguez jusqu'à la vue Topology.
- Cliquez avec le bouton droit de la souris sur la source du serveur API et sélectionnez Delete Ping Source.
5.2.4.2. Création d'une source de ping à l'aide de la CLI Knative Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser la commande kn source ping create
pour créer une source de ping en utilisant le CLI Knative (kn
). L'utilisation de l'interface de programmation Knative pour créer des sources d'événements offre une interface utilisateur plus rationnelle et plus intuitive que la modification directe des fichiers YAML.
Conditions préalables
- L'opérateur OpenShift Serverless, Knative Serving et Knative Eventing sont installés sur le cluster.
-
Vous avez installé le CLI Knative (
kn
). - Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
-
Facultatif : Si vous souhaitez utiliser les étapes de vérification pour cette procédure, installez l'OpenShift CLI (
oc
).
Procédure
Pour vérifier que la source de ping fonctionne, créez un service Knative simple qui déverse les messages entrants dans les journaux du service :
kn service create event-display \ --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest
$ kn service create event-display \ --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour chaque ensemble d'événements ping que vous souhaitez demander, créez une source ping dans le même espace de noms que le consommateur d'événements :
kn source ping create test-ping-source \ --schedule "*/2 * * * *" \ --data '{"message": "Hello world!"}' \ --sink ksvc:event-display
$ kn source ping create test-ping-source \ --schedule "*/2 * * * *" \ --data '{"message": "Hello world!"}' \ --sink ksvc:event-display
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que le contrôleur est correctement mappé en entrant la commande suivante et en inspectant la sortie :
kn source ping describe test-ping-source
$ kn source ping describe test-ping-source
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Vous pouvez vérifier que les événements Kubernetes ont été envoyés au puits d'événements Knative en examinant les journaux du pod de puits.
Par défaut, les services Knative terminent leurs pods si aucun trafic n'est reçu pendant une période de 60 secondes. L'exemple présenté dans ce guide crée une source ping qui envoie un message toutes les 2 minutes, chaque message doit donc être observé dans un pod nouvellement créé.
Surveillez la création de nouvelles gousses :
watch oc get pods
$ watch oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Annulez l'observation des pods en utilisant Ctrl C, puis regardez les journaux du pod créé :
oc logs $(oc get pod -o name | grep event-display) -c user-container
$ oc logs $(oc get pod -o name | grep event-display) -c user-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Suppression de la source de ping
Supprimer la source de ping :
kn delete pingsources.sources.knative.dev <nom_de_la_source_de_ping>
$ kn delete pingsources.sources.knative.dev <nom_de_la_source_de_ping>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.4.2.1. Drapeau d'évitement de l'CLI Knative Copier lienLien copié sur presse-papiers!
Lorsque vous créez une source d'événements à l'aide de l'interface de programmation Knative (kn
), vous pouvez spécifier un puits vers lequel les événements sont envoyés à partir de cette ressource à l'aide de l'indicateur --sink
. Le récepteur peut être n'importe quelle ressource adressable ou appelable qui peut recevoir des événements entrants d'autres ressources.
L'exemple suivant crée une liaison de puits qui utilise un service, http://event-display.svc.cluster.local
, comme puits :
Exemple de commande utilisant l'indicateur d'évitement
kn source binding create bind-heartbeat \ --namespace sinkbinding-example \ --subject "Job:batch/v1:app=heartbeat-cron" \ --sink http://event-display.svc.cluster.local \ --ce-override "sink=bound"
$ kn source binding create bind-heartbeat \
--namespace sinkbinding-example \
--subject "Job:batch/v1:app=heartbeat-cron" \
--sink http://event-display.svc.cluster.local \
--ce-override "sink=bound"
- 1
svc
danshttp://event-display.svc.cluster.local
détermine que le puits est un service Knative. D'autres préfixes de puits par défaut incluentchannel
, etbroker
.
5.2.4.3. Création d'une source de ping à l'aide de YAML Copier lienLien copié sur presse-papiers!
La création de ressources Knative à l'aide de fichiers YAML utilise une API déclarative, qui vous permet de décrire les sources d'événements de manière déclarative et reproductible. Pour créer une source ping sans serveur à l'aide de YAML, vous devez créer un fichier YAML qui définit un objet PingSource
, puis l'appliquer à l'aide de oc apply
.
Exemple d'objet PingSource
- 1
- L'horaire de l'événement spécifié à l'aide d'une expression CRON.
- 2
- Le corps du message de l'événement exprimé sous la forme d'une chaîne de données codée en JSON.
- 3
- Il s'agit des détails du consommateur d'événements. Dans cet exemple, nous utilisons un service Knative nommé
event-display
.
Conditions préalables
- L'opérateur OpenShift Serverless, Knative Serving et Knative Eventing sont installés sur le cluster.
-
Installez le CLI OpenShift (
oc
). - Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
Procédure
Pour vérifier que la source de ping fonctionne, créez un service Knative simple qui déverse les messages entrants dans les journaux du service.
Créer un fichier YAML de service :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer le service :
oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Pour chaque ensemble d'événements ping que vous souhaitez demander, créez une source ping dans le même espace de noms que le consommateur d'événements.
Créer un fichier YAML pour la source ping :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer la source de ping :
oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérifiez que le contrôleur est correctement mappé en entrant la commande suivante :
oc get pingsource.sources.knative.dev <nom_de_la_source_de_ping> -oyaml
$ oc get pingsource.sources.knative.dev <nom_de_la_source_de_ping> -oyaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Vous pouvez vérifier que les événements Kubernetes ont été envoyés au puits d'événements Knative en consultant les journaux du pod de puits.
Par défaut, les services Knative terminent leurs pods si aucun trafic n'est reçu pendant une période de 60 secondes. L'exemple présenté dans ce guide crée une PingSource qui envoie un message toutes les 2 minutes, donc chaque message doit être observé dans un pod nouvellement créé.
Surveillez la création de nouvelles gousses :
watch oc get pods
$ watch oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Annulez l'observation des pods en utilisant Ctrl C, puis regardez les journaux du pod créé :
oc logs $(oc get pod -o name | grep event-display) -c user-container
$ oc logs $(oc get pod -o name | grep event-display) -c user-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Suppression de la source de ping
Supprimer la source de ping :
oc delete -f <filename>
oc delete -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example command
oc delete -f ping-source.yaml
$ oc delete -f ping-source.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.5. Source pour Apache Kafka Copier lienLien copié sur presse-papiers!
Vous pouvez créer une source Apache Kafka qui lit des événements à partir d'un cluster Apache Kafka et transmet ces événements à un puits. Vous pouvez créer une source Kafka en utilisant la console web d'OpenShift Container Platform, le CLI Knative (kn
), ou en créant un objet KafkaSource
directement en tant que fichier YAML et en utilisant le CLI OpenShift (oc
) pour l'appliquer.
Voir la documentation sur l'installation du courtier Knative pour Apache Kafka.
5.2.5.1. Création d'une source d'événement Apache Kafka à l'aide de la console web Copier lienLien copié sur presse-papiers!
Une fois que l'implémentation du courtier Knative pour Apache Kafka est installée sur votre cluster, vous pouvez créer une source Apache Kafka à l'aide de la console web. L'utilisation de la console web d'OpenShift Container Platform offre une interface utilisateur rationalisée et intuitive pour créer une source Kafka.
Conditions préalables
-
OpenShift Serverless Operator, Knative Eventing et la ressource personnalisée
KnativeKafka
sont installés sur votre cluster. - Vous vous êtes connecté à la console web.
- Vous avez accès à un cluster Red Hat AMQ Streams (Kafka) qui produit les messages Kafka que vous souhaitez importer.
- Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
Procédure
- Dans la perspective Developer, naviguez jusqu'à la page Add et sélectionnez Event Source.
- Dans la page Event Sources, sélectionnez Kafka Source dans la section Type.
Configurez les paramètres de Kafka Source:
- Ajouter une liste de Bootstrap Servers séparée par des virgules.
- Ajouter une liste de Topics séparée par des virgules.
- Ajouter un Consumer Group.
- Sélectionnez le site Service Account Name pour le compte de service que vous avez créé.
- Sélectionnez le site Sink pour la source de l'événement. Un Sink peut être soit un Resource, tel qu'un canal, un courtier ou un service, soit un URI.
- Saisissez une adresse Name pour la source d'événements Kafka.
- Cliquez sur Create.
Vérification
Vous pouvez vérifier que la source d'événements Kafka a été créée et qu'elle est connectée au puits en consultant la page Topology.
- Dans la perspective Developer, naviguez jusqu'à Topology.
Afficher la source et le puits d'événements Kafka.
5.2.5.2. Créer une source d'événement Apache Kafka en utilisant le CLI Knative Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser la commande kn source kafka create
pour créer une source Kafka en utilisant le CLI Knative (kn
). L'utilisation du CLI Knative pour créer des sources d'événements offre une interface utilisateur plus rationnelle et intuitive que la modification directe des fichiers YAML.
Conditions préalables
-
OpenShift Serverless Operator, Knative Eventing, Knative Serving et la ressource personnalisée (CR)
KnativeKafka
sont installés sur votre cluster. - Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
- Vous avez accès à un cluster Red Hat AMQ Streams (Kafka) qui produit les messages Kafka que vous souhaitez importer.
-
Vous avez installé le CLI Knative (
kn
). -
Facultatif : Vous avez installé l'OpenShift CLI (
oc
) si vous voulez utiliser les étapes de vérification dans cette procédure.
Procédure
Pour vérifier que la source d'événements Kafka fonctionne, créez un service Knative qui déverse les événements entrants dans les journaux du service :
kn service create event-display \ --image quay.io/openshift-knative/knative-eventing-sources-event-display
$ kn service create event-display \ --image quay.io/openshift-knative/knative-eventing-sources-event-display
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un CR
KafkaSource
:kn source kafka create <kafka_source_name> \ --servers <cluster_kafka_bootstrap>.kafka.svc:9092 \ --topics <topic_name> --consumergroup my-consumer-group \ --sink event-display
$ kn source kafka create <kafka_source_name> \ --servers <cluster_kafka_bootstrap>.kafka.svc:9092 \ --topics <topic_name> --consumergroup my-consumer-group \ --sink event-display
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteRemplacez les valeurs de cette commande par les valeurs de votre nom de source, de vos serveurs d'amorçage et de vos rubriques.
Les options
--servers
,--topics
, et--consumergroup
spécifient les paramètres de connexion au cluster Kafka. L'option--consumergroup
est facultative.Facultatif : Affichez les détails de la CR
KafkaSource
que vous avez créée :kn source kafka describe <kafka_source_name>
$ kn source kafka describe <kafka_source_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Verification steps
Déclencher l'envoi par l'instance Kafka d'un message au sujet :
oc -n kafka run kafka-producer \ -ti --image=quay.io/strimzi/kafka:latest-kafka-2.7.0 --rm=true \ --restart=Never -- bin/kafka-console-producer.sh \ --broker-list <cluster_kafka_bootstrap>:9092 --topic my-topic
$ oc -n kafka run kafka-producer \ -ti --image=quay.io/strimzi/kafka:latest-kafka-2.7.0 --rm=true \ --restart=Never -- bin/kafka-console-producer.sh \ --broker-list <cluster_kafka_bootstrap>:9092 --topic my-topic
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Saisissez le message dans l'invite. Cette commande suppose que :
-
Le cluster Kafka est installé dans l'espace de noms
kafka
. -
L'objet
KafkaSource
a été configuré pour utiliser le sujetmy-topic
.
-
Le cluster Kafka est installé dans l'espace de noms
Vérifiez que le message est arrivé en consultant les journaux :
oc logs $(oc get pod -o name | grep event-display) -c user-container
$ oc logs $(oc get pod -o name | grep event-display) -c user-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.5.2.1. Drapeau d'évitement de l'CLI Knative Copier lienLien copié sur presse-papiers!
Lorsque vous créez une source d'événements à l'aide de l'interface de programmation Knative (kn
), vous pouvez spécifier un puits vers lequel les événements sont envoyés à partir de cette ressource à l'aide de l'indicateur --sink
. Le récepteur peut être n'importe quelle ressource adressable ou appelable qui peut recevoir des événements entrants d'autres ressources.
L'exemple suivant crée une liaison de puits qui utilise un service, http://event-display.svc.cluster.local
, comme puits :
Exemple de commande utilisant l'indicateur d'évitement
kn source binding create bind-heartbeat \ --namespace sinkbinding-example \ --subject "Job:batch/v1:app=heartbeat-cron" \ --sink http://event-display.svc.cluster.local \ --ce-override "sink=bound"
$ kn source binding create bind-heartbeat \
--namespace sinkbinding-example \
--subject "Job:batch/v1:app=heartbeat-cron" \
--sink http://event-display.svc.cluster.local \
--ce-override "sink=bound"
- 1
svc
danshttp://event-display.svc.cluster.local
détermine que le puits est un service Knative. D'autres préfixes de puits par défaut incluentchannel
, etbroker
.
5.2.5.3. Créer une source d'événement Apache Kafka en utilisant YAML Copier lienLien copié sur presse-papiers!
La création de ressources Knative à l'aide de fichiers YAML utilise une API déclarative, qui vous permet de décrire des applications de manière déclarative et reproductible. Pour créer une source Kafka à l'aide de YAML, vous devez créer un fichier YAML qui définit un objet KafkaSource
, puis l'appliquer à l'aide de la commande oc apply
.
Conditions préalables
-
OpenShift Serverless Operator, Knative Eventing et la ressource personnalisée
KnativeKafka
sont installés sur votre cluster. - Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
- Vous avez accès à un cluster Red Hat AMQ Streams (Kafka) qui produit les messages Kafka que vous souhaitez importer.
-
Installez le CLI OpenShift (
oc
).
Procédure
Créer un objet
KafkaSource
sous la forme d'un fichier YAML :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Un groupe de consommateurs est un groupe de consommateurs qui utilisent le même identifiant de groupe et consomment des données d'un thème.
- 2
- Un thème fournit une destination pour le stockage des données. Chaque thème est divisé en une ou plusieurs partitions.
- 3
- Un puits indique où les événements sont envoyés à partir d'une source.
ImportantSeule la version
v1beta1
de l'API pour les objetsKafkaSource
sur OpenShift Serverless est prise en charge. N'utilisez pas la versionv1alpha1
de cette API, car elle est désormais obsolète.Exemple d'objet
KafkaSource
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Appliquer le fichier YAML
KafkaSource
:oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Vérifiez que la source d'événements Kafka a été créée en entrant la commande suivante :
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME READY STATUS RESTARTS AGE kafkasource-kafka-source-5ca0248f-... 1/1 Running 0 13m
NAME READY STATUS RESTARTS AGE kafkasource-kafka-source-5ca0248f-... 1/1 Running 0 13m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.5.4. Configuration de l'authentification SASL pour les sources Apache Kafka Copier lienLien copié sur presse-papiers!
Simple Authentication and Security Layer (SASL) est utilisé par Apache Kafka pour l'authentification. Si vous utilisez l'authentification SASL sur votre cluster, les utilisateurs doivent fournir des informations d'identification à Knative pour communiquer avec le cluster Kafka ; sinon, les événements ne peuvent pas être produits ou consommés.
Conditions préalables
- Vous avez des permissions d'administrateur de cluster ou dédié sur OpenShift Container Platform.
-
OpenShift Serverless Operator, Knative Eventing et
KnativeKafka
CR sont installés sur votre cluster OpenShift Container Platform. - Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
- Vous disposez d'un nom d'utilisateur et d'un mot de passe pour un cluster Kafka.
-
Vous avez choisi le mécanisme SASL à utiliser, par exemple
PLAIN
,SCRAM-SHA-256
, ouSCRAM-SHA-512
. -
Si TLS est activé, vous avez également besoin du fichier de certificat
ca.crt
pour le cluster Kafka. -
Vous avez installé le CLI OpenShift (
oc
).
Procédure
Créez les fichiers de certificats en tant que secrets dans l'espace de noms que vous avez choisi :
oc create secret -n <namespace> generic <kafka_auth_secret> \ --from-file=ca.crt=caroot.pem \ --from-literal=password="SecretPassword" \ --from-literal=saslType="SCRAM-SHA-512" \ --from-literal=user="my-sasl-user"
$ oc create secret -n <namespace> generic <kafka_auth_secret> \ --from-file=ca.crt=caroot.pem \ --from-literal=password="SecretPassword" \ --from-literal=saslType="SCRAM-SHA-512" \
1 --from-literal=user="my-sasl-user"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Le type SASL peut être
PLAIN
,SCRAM-SHA-256
, ouSCRAM-SHA-512
.
Créez ou modifiez votre source Kafka de manière à ce qu'elle contienne la configuration suivante :
spec
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- La spécification
caCert
n'est pas nécessaire si vous utilisez un service Kafka en nuage public, tel que Red Hat OpenShift Streams for Apache Kafka.
5.2.6. Sources d'événements personnalisées Copier lienLien copié sur presse-papiers!
Si vous avez besoin d'intégrer des événements provenant d'un producteur d'événements qui n'est pas inclus dans Knative, ou d'un producteur qui émet des événements qui ne sont pas au format CloudEvent
, vous pouvez le faire en créant une source d'événements personnalisée. Vous pouvez créer une source d'événement personnalisée en utilisant l'une des méthodes suivantes :
-
Utiliser un objet
PodSpecable
comme source d'événements, en créant une liaison de type "sink". - Utiliser un conteneur comme source d'événements en créant un conteneur source.
5.2.6.1. Fixation de l'évier Copier lienLien copié sur presse-papiers!
L'objet SinkBinding
permet de découpler la production d'événements de l'adressage de livraison. La liaison Sink est utilisée pour connecter event producers à un consommateur d'événements, ou sink. Un producteur d'événements est une ressource Kubernetes qui intègre un modèle PodSpec
et produit des événements. Un sink est un objet Kubernetes adressable qui peut recevoir des événements.
L'objet SinkBinding
injecte des variables d'environnement dans le site PodTemplateSpec
du puits, ce qui signifie que le code de l'application n'a pas besoin d'interagir directement avec l'API Kubernetes pour localiser la destination de l'événement. Ces variables d'environnement sont les suivantes :
K_SINK
- L'URL de l'évier résolu.
K_CE_OVERRIDES
- Un objet JSON qui spécifie les dérogations à l'événement sortant.
L'objet SinkBinding
ne prend actuellement pas en charge les noms de révision personnalisés pour les services.
5.2.6.1.1. Création d'un sink binding à l'aide de YAML Copier lienLien copié sur presse-papiers!
La création de ressources Knative à l'aide de fichiers YAML utilise une API déclarative, qui vous permet de décrire les sources d'événements de manière déclarative et reproductible. Pour créer une liaison de puits à l'aide de YAML, vous devez créer un fichier YAML qui définit un objet SinkBinding
, puis l'appliquer à l'aide de la commande oc apply
.
Conditions préalables
- L'opérateur OpenShift Serverless, Knative Serving et Knative Eventing sont installés sur le cluster.
-
Installez le CLI OpenShift (
oc
). - Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
Procédure
Pour vérifier que la liaison des puits est correctement configurée, créez un service d'affichage d'événements Knative, ou puits d'événements, qui déverse les messages entrants dans son journal.
Créer un fichier YAML de service :
Exemple de fichier YAML de service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer le service :
oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Créer une instance de liaison d'évier qui dirige les événements vers le service.
Créer un fichier YAML de liaison avec le puits :
Exemple de fichier YAML de service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans cet exemple, tout Job portant l'étiquette
app: heartbeat-cron
sera lié au puits d'événements.
Créer la liaison de l'évier :
oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Créer un objet
CronJob
.Créez un fichier YAML de travail cron :
Exemple de fichier YAML d'une tâche cron
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ImportantPour utiliser le sink binding, vous devez ajouter manuellement une étiquette
bindings.knative.dev/include=true
à vos ressources Knative.Par exemple, pour ajouter cette étiquette à une ressource
CronJob
, ajoutez les lignes suivantes à la définition YAML de la ressourceJob
:jobTemplate: metadata: labels: app: heartbeat-cron bindings.knative.dev/include: "true"
jobTemplate: metadata: labels: app: heartbeat-cron bindings.knative.dev/include: "true"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez la tâche cron :
oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérifiez que le contrôleur est correctement mappé en entrant la commande suivante et en inspectant la sortie :
oc get sinkbindings.sources.knative.dev bind-heartbeat -oyaml
$ oc get sinkbindings.sources.knative.dev bind-heartbeat -oyaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Vous pouvez vérifier que les événements Kubernetes ont été envoyés au puits d'événements Knative en examinant les journaux de la fonction dumper de messages.
Entrez la commande :
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Entrez la commande :
oc logs $(oc get pod -o name | grep event-display) -c user-container
$ oc logs $(oc get pod -o name | grep event-display) -c user-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.6.1.2. Création d'un sink binding à l'aide du CLI Knative Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser la commande kn source binding create
pour créer une liaison de puits en utilisant l'interface de programmation Knative (kn
). L'utilisation de l'interface de programmation Knative pour créer des sources d'événements offre une interface utilisateur plus rationnelle et plus intuitive que la modification directe des fichiers YAML.
Conditions préalables
- L'opérateur OpenShift Serverless, Knative Serving et Knative Eventing sont installés sur le cluster.
- Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
-
Installer le CLI Knative (
kn
). -
Installez le CLI OpenShift (
oc
).
La procédure suivante nécessite la création de fichiers YAML.
Si vous modifiez les noms des fichiers YAML par rapport à ceux utilisés dans les exemples, vous devez vous assurer que vous mettez également à jour les commandes CLI correspondantes.
Procédure
Pour vérifier que la liaison des puits est correctement configurée, créez un service d'affichage d'événements Knative, ou puits d'événements, qui déverse les messages entrants dans son journal :
kn service create event-display --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest
$ kn service create event-display --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer une instance de liaison d'évier qui dirige les événements vers le service :
kn source binding create bind-heartbeat --subject Job:batch/v1:app=heartbeat-cron --sink ksvc:event-display
$ kn source binding create bind-heartbeat --subject Job:batch/v1:app=heartbeat-cron --sink ksvc:event-display
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un objet
CronJob
.Créez un fichier YAML de travail cron :
Exemple de fichier YAML d'une tâche cron
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ImportantPour utiliser le sink binding, vous devez ajouter manuellement une étiquette
bindings.knative.dev/include=true
à vos CR Knative.Par exemple, pour ajouter cette étiquette à un CR
CronJob
, ajoutez les lignes suivantes à la définition YAML du CRJob
:jobTemplate: metadata: labels: app: heartbeat-cron bindings.knative.dev/include: "true"
jobTemplate: metadata: labels: app: heartbeat-cron bindings.knative.dev/include: "true"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez la tâche cron :
oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérifiez que le contrôleur est correctement mappé en entrant la commande suivante et en inspectant la sortie :
kn source binding describe bind-heartbeat
$ kn source binding describe bind-heartbeat
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Vous pouvez vérifier que les événements Kubernetes ont été envoyés au puits d'événements Knative en examinant les journaux de la fonction dumper de messages.
Affichez les journaux des fonctions de l'expéditeur de messages en entrant les commandes suivantes :
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc logs $(oc get pod -o name | grep event-display) -c user-container
$ oc logs $(oc get pod -o name | grep event-display) -c user-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.6.1.2.1. Drapeau d'évitement de l'CLI Knative Copier lienLien copié sur presse-papiers!
Lorsque vous créez une source d'événements à l'aide de l'interface de programmation Knative (kn
), vous pouvez spécifier un puits vers lequel les événements sont envoyés à partir de cette ressource à l'aide de l'indicateur --sink
. Le récepteur peut être n'importe quelle ressource adressable ou appelable qui peut recevoir des événements entrants d'autres ressources.
L'exemple suivant crée une liaison de puits qui utilise un service, http://event-display.svc.cluster.local
, comme puits :
Exemple de commande utilisant l'indicateur d'évitement
kn source binding create bind-heartbeat \ --namespace sinkbinding-example \ --subject "Job:batch/v1:app=heartbeat-cron" \ --sink http://event-display.svc.cluster.local \ --ce-override "sink=bound"
$ kn source binding create bind-heartbeat \
--namespace sinkbinding-example \
--subject "Job:batch/v1:app=heartbeat-cron" \
--sink http://event-display.svc.cluster.local \
--ce-override "sink=bound"
- 1
svc
danshttp://event-display.svc.cluster.local
détermine que le puits est un service Knative. D'autres préfixes de puits par défaut incluentchannel
, etbroker
.
5.2.6.1.3. Création d'une liaison de puits à l'aide de la console web Copier lienLien copié sur presse-papiers!
Une fois Knative Eventing installé sur votre cluster, vous pouvez créer un sink binding en utilisant la console web. L'utilisation de la console web d'OpenShift Container Platform offre une interface utilisateur rationalisée et intuitive pour créer une source d'événement.
Conditions préalables
- Vous vous êtes connecté à la console web de OpenShift Container Platform.
- OpenShift Serverless Operator, Knative Serving et Knative Eventing sont installés sur votre cluster OpenShift Container Platform.
- Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
Procédure
Créer un service Knative à utiliser comme puits :
-
Dans la perspective Developer, naviguez vers Add
YAML. Copiez l'exemple YAML :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Cliquez sur Create.
-
Dans la perspective Developer, naviguez vers Add
Créez une ressource
CronJob
qui est utilisée comme source d'événements et qui envoie un événement toutes les minutes.-
Dans la perspective Developer, naviguez vers Add
YAML. Copiez l'exemple YAML :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Assurez-vous d'inclure l'étiquette
bindings.knative.dev/include: true
. Le comportement de sélection de l'espace de noms par défaut d'OpenShift Serverless utilise le mode d'inclusion.
- Cliquez sur Create.
-
Dans la perspective Developer, naviguez vers Add
Créez un lien sink dans le même espace de noms que le service créé à l'étape précédente, ou tout autre sink vers lequel vous souhaitez envoyer des événements.
-
Dans la perspective Developer, naviguez vers Add
Event Source. La page Event Sources s'affiche. - Facultatif : si vous avez plusieurs fournisseurs pour vos sources d'événements, sélectionnez le fournisseur requis dans la liste Providers pour filtrer les sources d'événements disponibles du fournisseur.
Sélectionnez Sink Binding puis cliquez sur Create Event Source. La page Create Event Source s'affiche.
NoteVous pouvez configurer les paramètres de Sink Binding en utilisant Form view ou YAML view et passer d'une vue à l'autre. Les données sont conservées lors du passage d'une vue à l'autre.
-
Dans le champ apiVersion, entrez
batch/v1
. Dans le champ Kind, entrez
Job
.NoteLe type
CronJob
n'est pas pris en charge directement par la liaison OpenShift Serverless sink, de sorte que le champ Kind doit cibler les objetsJob
créés par la tâche cron, plutôt que l'objet de la tâche cron elle-même.-
Sélectionnez un Sink. Il peut s'agir d'un Resource ou d'un URI. Dans cet exemple, le service
event-display
créé à l'étape précédente est utilisé comme puits Resource. Dans la section Match labels:
-
Saisissez
app
dans le champ Name. Saisissez
heartbeat-cron
dans le champ Value.NoteLe sélecteur d'étiquette est nécessaire lors de l'utilisation de tâches cron avec le sink binding, plutôt que le nom de la ressource. En effet, les travaux créés par un travail cron n'ont pas de nom prévisible et contiennent une chaîne générée de manière aléatoire dans leur nom. Par exemple,
hearthbeat-cron-1cc23f
.
-
Saisissez
- Cliquez sur Create.
-
Dans la perspective Developer, naviguez vers Add
Vérification
Vous pouvez vérifier que la liaison et l'évier, ainsi que la tâche cron ont été créés et fonctionnent correctement en consultant la page Topology et les journaux de pods.
- Dans la perspective Developer, naviguez jusqu'à Topology.
Affichez le travail cron de liaison, d'évitement et de battements de cœur de l'évier.
- Observez que des travaux réussis sont enregistrés par la tâche cron une fois que la liaison sink a été ajoutée. Cela signifie que la liaison sink reconfigure avec succès les travaux créés par la tâche cron.
-
Parcourez les journaux du pod de service
event-display
pour voir les événements produits par le job cron heartbeats.
5.2.6.1.4. Référence pour la fixation de l'évier Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser un objet PodSpecable
comme source d'événement en créant une liaison de puits. Vous pouvez configurer plusieurs paramètres lors de la création d'un objet SinkBinding
.
SinkBinding
prennent en charge les paramètres suivants :
Field | Description | Obligatoire ou facultatif |
---|---|---|
|
Spécifie la version de l'API, par exemple | Exigée |
|
Identifie cet objet de ressource en tant qu'objet | Exigée |
|
Spécifie les métadonnées qui identifient de manière unique l'objet | Exigée |
|
Spécifie les informations de configuration pour cet objet | Exigée |
| Une référence à un objet qui se résout en un URI à utiliser comme puits. | Exigée |
| Fait référence aux ressources pour lesquelles le contrat d'exécution est complété par des implémentations contraignantes. | Exigée |
| Définit les surcharges permettant de contrôler le format de sortie et les modifications apportées à l'événement envoyé à l'émetteur. | En option |
5.2.6.1.4.1. Paramètre du sujet Copier lienLien copié sur presse-papiers!
Le paramètre Subject
fait référence aux ressources pour lesquelles le contrat d'exécution est complété par des implémentations de liaison. Vous pouvez configurer plusieurs champs pour une définition Subject
.
La définition de Subject
prend en charge les champs suivants :
Field | Description | Obligatoire ou facultatif |
---|---|---|
| Version API du référent. | Exigée |
| C'est en quelque sorte le référent. | Exigée |
| Espace de noms du référent. S'il est omis, il s'agit par défaut de l'espace de noms de l'objet. | En option |
| Nom du référent. |
Ne pas utiliser si vous configurez |
| Sélecteur de référents. |
Ne pas utiliser si vous configurez |
| Une liste des exigences en matière de sélecteur d'étiquettes. |
N'utilisez qu'une seule des deux options suivantes : |
| Clé de l'étiquette à laquelle s'applique le sélecteur. |
Nécessaire si l'on utilise |
|
Représente la relation d'une clé avec un ensemble de valeurs. Les opérateurs valides sont |
Nécessaire si l'on utilise |
|
Un tableau de valeurs de chaînes de caractères. Si la valeur du paramètre |
Nécessaire si l'on utilise |
|
Une carte de paires clé-valeur. Chaque paire clé-valeur de la carte |
N'utilisez qu'une seule des deux options suivantes : |
Exemples de paramètres du sujet
Étant donné le YAML suivant, l'objet Deployment
nommé mysubject
dans l'espace de noms default
est sélectionné :
Étant donné le YAML suivant, tout objet Job
portant l'étiquette working=example
dans l'espace de noms default
est sélectionné :
Étant donné le YAML suivant, tout objet Pod
portant l'étiquette working=example
ou working=sample
dans l'espace de noms default
est sélectionné :
5.2.6.1.4.2. Surcharges de CloudEvent Copier lienLien copié sur presse-papiers!
Une définition de ceOverrides
fournit des paramètres qui contrôlent le format de sortie du CloudEvent et les modifications envoyées au récepteur. Vous pouvez configurer plusieurs champs pour la définition ceOverrides
.
Une définition de ceOverrides
prend en charge les champs suivants :
Field | Description | Obligatoire ou facultatif |
---|---|---|
|
Spécifie quels attributs sont ajoutés ou remplacés sur l'événement sortant. Chaque paire clé-valeur | En option |
Seuls les noms d'attributs CloudEvent
valides sont autorisés en tant qu'extensions. Vous ne pouvez pas définir les attributs définis par la spécification à partir de la configuration des extensions. Par exemple, vous ne pouvez pas modifier l'attribut type
.
Exemple de surcharges de CloudEvent
Cette opération définit la variable d'environnement K_CE_OVERRIDES
sur le serveur subject
:
Exemple de sortie
{ "extensions": { "extra": "this is an extra attribute", "additional": "42" } }
{ "extensions": { "extra": "this is an extra attribute", "additional": "42" } }
5.2.6.1.4.3. L'étiquette d'inclusion Copier lienLien copié sur presse-papiers!
Pour utiliser un sink binding, vous devez attribuer l'étiquette bindings.knative.dev/include: "true"
à la ressource ou à l'espace de noms dans lequel la ressource est incluse. Si la définition de la ressource n'inclut pas l'étiquette, un administrateur de cluster peut l'attacher à l'espace de noms en exécutant la commande suivante :
oc label namespace <namespace> bindings.knative.dev/include=true
$ oc label namespace <namespace> bindings.knative.dev/include=true
5.2.6.2. Source du conteneur Copier lienLien copié sur presse-papiers!
Les sources de conteneurs créent une image de conteneur qui génère des événements et les envoie à un récepteur. Vous pouvez utiliser une source de conteneur pour créer une source d'événements personnalisée, en créant une image de conteneur et un objet ContainerSource
qui utilise l'URI de votre image.
5.2.6.2.1. Lignes directrices pour la création d'une image de conteneur Copier lienLien copié sur presse-papiers!
Deux variables d'environnement sont injectées par le contrôleur de source du conteneur : K_SINK
et K_CE_OVERRIDES
. Ces variables sont résolues à partir des spécifications sink
et ceOverrides
, respectivement. Les événements sont envoyés à l'URI de destination spécifié dans la variable d'environnement K_SINK
. Le message doit être envoyé en tant que POST
en utilisant le format CloudEvent
En utilisant le format HTTP.
Exemples d'images de conteneurs
Voici un exemple d'image de conteneur de battements de cœur :
Voici un exemple de source de conteneur qui fait référence à l'image de conteneur Heartbeats précédente :
5.2.6.2.2. Créer et gérer des sources de conteneurs en utilisant le CLI Knative Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser les commandes kn source container
pour créer et gérer des sources de conteneurs en utilisant le CLI Knative (kn
). L'utilisation de l'interface de programmation Knative pour créer des sources d'événements offre une interface utilisateur plus rationnelle et plus intuitive que la modification directe des fichiers YAML.
Créer un conteneur source
kn source container create <container_source_name> --image <image_uri> --sink <sink>
$ kn source container create <container_source_name> --image <image_uri> --sink <sink>
Supprimer un conteneur source
kn source container delete <container_source_name>
kn source container delete <container_source_name>
Décrire la source d'un conteneur
kn source container describe <container_source_name>
kn source container describe <container_source_name>
Liste des sources de conteneurs existantes
kn source container list
$ kn source container list
Liste des sources de conteneurs existantes au format YAML
kn source container list -o yaml
$ kn source container list -o yaml
Mise à jour d'un conteneur source
Cette commande met à jour l'URI de l'image d'un conteneur existant :
kn source container update <container_source_name> --image <image_uri>
$ kn source container update <container_source_name> --image <image_uri>
5.2.6.2.3. Création d'un conteneur source à l'aide de la console web Copier lienLien copié sur presse-papiers!
Une fois Knative Eventing installé sur votre cluster, vous pouvez créer une source de conteneur en utilisant la console web. L'utilisation de la console web d'OpenShift Container Platform offre une interface utilisateur rationalisée et intuitive pour créer une source d'événements.
Conditions préalables
- Vous vous êtes connecté à la console web de OpenShift Container Platform.
- OpenShift Serverless Operator, Knative Serving et Knative Eventing sont installés sur votre cluster OpenShift Container Platform.
- Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
Procédure
-
Dans la perspective Developer, naviguez vers Add
Event Source. La page Event Sources s'affiche. - Sélectionnez Container Source puis cliquez sur Create Event Source. La page Create Event Source s'affiche.
Configurez les paramètres de Container Source en utilisant les boutons Form view ou YAML view:
NoteVous pouvez passer de la vue Form view à la vue YAML view. Les données sont conservées lors du passage d'une vue à l'autre.
- Dans le champ Image, saisissez l'URI de l'image que vous souhaitez exécuter dans le conteneur créé par la source du conteneur.
- Dans le champ Name, saisissez le nom de l'image.
- Facultatif : dans le champ Arguments, saisissez les arguments à transmettre au conteneur.
- Facultatif : dans le champ Environment variables, ajoutez les variables d'environnement à définir dans le conteneur.
Dans la section Sink, ajoutez un puits vers lequel les événements de la source du conteneur sont acheminés. Si vous utilisez la vue Form, vous pouvez choisir parmi les options suivantes :
- Sélectionnez Resource pour utiliser un canal, un courtier ou un service comme puits pour la source d'événement.
- Sélectionnez URI pour spécifier où les événements de la source du conteneur sont acheminés.
- Une fois la configuration de la source du conteneur terminée, cliquez sur Create.
5.2.6.2.4. Référence de la source du conteneur Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser un conteneur comme source d'événements en créant un objet ContainerSource
. Vous pouvez configurer plusieurs paramètres lors de la création d'un objet ContainerSource
.
ContainerSource
prennent en charge les champs suivants :
Field | Description | Obligatoire ou facultatif |
---|---|---|
|
Spécifie la version de l'API, par exemple | Exigée |
|
Identifie cet objet de ressource en tant qu'objet | Exigée |
|
Spécifie les métadonnées qui identifient de manière unique l'objet | Exigée |
|
Spécifie les informations de configuration pour cet objet | Exigée |
| Une référence à un objet qui se résout en un URI à utiliser comme puits. | Exigée |
|
Une spécification | Exigée |
| Définit les surcharges permettant de contrôler le format de sortie et les modifications apportées à l'événement envoyé à l'émetteur. | En option |
Exemple de paramètre de modèle
5.2.6.2.4.1. Surcharges de CloudEvent Copier lienLien copié sur presse-papiers!
Une définition de ceOverrides
fournit des paramètres qui contrôlent le format de sortie du CloudEvent et les modifications envoyées au récepteur. Vous pouvez configurer plusieurs champs pour la définition ceOverrides
.
Une définition de ceOverrides
prend en charge les champs suivants :
Field | Description | Obligatoire ou facultatif |
---|---|---|
|
Spécifie quels attributs sont ajoutés ou remplacés sur l'événement sortant. Chaque paire clé-valeur | En option |
Seuls les noms d'attributs CloudEvent
valides sont autorisés en tant qu'extensions. Vous ne pouvez pas définir les attributs définis par la spécification à partir de la configuration des extensions. Par exemple, vous ne pouvez pas modifier l'attribut type
.
Exemple de surcharges de CloudEvent
Cette opération définit la variable d'environnement K_CE_OVERRIDES
sur le serveur subject
:
Exemple de sortie
{ "extensions": { "extra": "this is an extra attribute", "additional": "42" } }
{ "extensions": { "extra": "this is an extra attribute", "additional": "42" } }
5.2.7. Connexion d'une source d'événements à un puits à l'aide de la perspective du développeur Copier lienLien copié sur presse-papiers!
Lorsque vous créez une source d'événement en utilisant la console web d'OpenShift Container Platform, vous pouvez spécifier un puits vers lequel les événements sont envoyés à partir de cette source. Le puits peut être n'importe quelle ressource adressable ou appelable qui peut recevoir des événements entrants d'autres ressources.
5.2.7.1. Connecter une source d'événements à un puits à l'aide de la perspective du développeur Copier lienLien copié sur presse-papiers!
Conditions préalables
- OpenShift Serverless Operator, Knative Serving et Knative Eventing sont installés sur votre cluster OpenShift Container Platform.
- Vous vous êtes connecté à la console web et vous vous trouvez dans la perspective Developer.
- Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
- Vous avez créé un puits, tel qu'un service, un canal ou un courtier Knative.
Procédure
-
Créez une source d'événement de n'importe quel type, en naviguant vers Add
Event Source et en sélectionnant le type de source d'événement que vous souhaitez créer. - Dans la section Sink de la vue du formulaire Create Event Source, sélectionnez votre évier dans la liste Resource.
- Cliquez sur Create.
Vérification
Vous pouvez vérifier que la source d'événements a été créée et qu'elle est connectée au puits en consultant la page Topology.
- Dans la perspective Developer, naviguez jusqu'à Topology.
- Affichez la source de l'événement et cliquez sur le puits connecté pour afficher les détails du puits dans le panneau de droite.