3.5. Créer des solutions CI/CD pour les applications à l'aide d'OpenShift Pipelines
Avec Red Hat OpenShift Pipelines, vous pouvez créer une solution CI/CD personnalisée pour construire, tester et déployer votre application.
Pour créer un pipeline CI/CD complet et autonome pour une application, effectuez les tâches suivantes :
- Créez des tâches personnalisées ou installez des tâches réutilisables existantes.
- Créez et définissez le pipeline de livraison pour votre application.
Fournissez un volume de stockage ou un système de fichiers attaché à un espace de travail pour l'exécution du pipeline, en utilisant l'une des approches suivantes :
- Spécifier un modèle de revendication de volume qui crée une revendication de volume persistante
- Spécifier une revendication de volume persistant
-
Créer un objet
PipelineRun
pour instancier et invoquer le pipeline. - Ajouter des déclencheurs pour capturer les événements dans le référentiel source.
Cette section utilise l'exemple pipelines-tutorial
pour démontrer les tâches précédentes. L'exemple utilise une application simple qui se compose des éléments suivants
-
Une interface frontale,
pipelines-vote-ui
, dont le code source se trouve dans le dépôt Gitpipelines-vote-ui
Git. -
Une interface back-end,
pipelines-vote-api
, dont le code source se trouve dans le dépôt Gitpipelines-vote-api
Git. -
Les tâches
apply-manifests
etupdate-deployment
dans le dépôtpipelines-tutorial
Git.
3.5.1. Conditions préalables Copier lienLien copié sur presse-papiers!
- Vous avez accès à un cluster OpenShift Container Platform.
- Vous avez installé OpenShift Pipelines à l'aide de l'opérateur Red Hat OpenShift Pipelines Operator répertorié dans l'OpenShift OperatorHub. Une fois installé, il s'applique à l'ensemble du cluster.
- Vous avez installé OpenShift Pipelines CLI.
-
Vous avez forké le front-end
pipelines-vote-ui
et back-endpipelines-vote-api
À l'aide de votre identifiant GitHub, et vous disposez d'un accès administrateur à ces dépôts. -
Facultatif : vous avez cloné le dépôt
pipelines-tutorial
Dépôt Git.
3.5.2. Création d'un projet et vérification de votre compte de service de gazoduc Copier lienLien copié sur presse-papiers!
Procédure
Connectez-vous à votre cluster OpenShift Container Platform :
oc login -u <login> -p <password> https://openshift.example.com:6443
$ oc login -u <login> -p <password> https://openshift.example.com:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un projet pour l'exemple d'application. Pour cet exemple de flux de travail, créez le projet
pipelines-tutorial
:oc new-project pipelines-tutorial
$ oc new-project pipelines-tutorial
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteSi vous créez un projet avec un nom différent, veillez à mettre à jour les URL des ressources utilisées dans l'exemple avec le nom de votre projet.
Consulter le compte de service
pipeline
:Red Hat OpenShift Pipelines Operator ajoute et configure un compte de service nommé
pipeline
qui dispose de suffisamment d'autorisations pour construire et pousser une image. Ce compte de service est utilisé par l'objetPipelineRun
.oc get serviceaccount pipeline
$ oc get serviceaccount pipeline
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.3. Création de tâches de pipeline Copier lienLien copié sur presse-papiers!
Procédure
Installez les ressources de tâches
apply-manifests
etupdate-deployment
à partir du référentielpipelines-tutorial
, qui contient une liste de tâches réutilisables pour les pipelines :oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.9/01_pipeline/01_apply_manifest_task.yaml oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.9/01_pipeline/02_update_deployment_task.yaml
$ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.9/01_pipeline/01_apply_manifest_task.yaml $ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.9/01_pipeline/02_update_deployment_task.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Utilisez la commande
tkn task list
pour répertorier les tâches que vous avez créées :tkn task list
$ tkn task list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow La sortie vérifie que les ressources de tâches
apply-manifests
etupdate-deployment
ont été créées :NAME DESCRIPTION AGE apply-manifests 1 minute ago update-deployment 48 seconds ago
NAME DESCRIPTION AGE apply-manifests 1 minute ago update-deployment 48 seconds ago
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Utilisez la commande
tkn clustertasks list
pour dresser la liste des tâches de cluster supplémentaires installées par l'opérateur, telles quebuildah
ets2i-python
:NotePour utiliser la tâche
buildah
cluster dans un environnement restreint, vous devez vous assurer que le fichier Docker utilise un flux d'images interne comme image de base.tkn clustertasks list
$ tkn clustertasks list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow La liste des ressources
ClusterTask
installées par l'opérateur s'affiche :NAME DESCRIPTION AGE buildah 1 day ago git-clone 1 day ago s2i-python 1 day ago tkn 1 day ago
NAME DESCRIPTION AGE buildah 1 day ago git-clone 1 day ago s2i-python 1 day ago tkn 1 day ago
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Dans Red Hat OpenShift Pipelines 1.10, la fonctionnalité de tâche de cluster est dépréciée et il est prévu de la supprimer dans une prochaine version.
3.5.4. Assemblage d'un pipeline Copier lienLien copié sur presse-papiers!
Un pipeline représente un flux CI/CD et est défini par les tâches à exécuter. Il est conçu pour être générique et réutilisable dans de multiples applications et environnements.
Un pipeline spécifie la manière dont les tâches interagissent entre elles et leur ordre d'exécution à l'aide des paramètres from
et runAfter
. Il utilise le champ workspaces
pour spécifier un ou plusieurs volumes dont chaque tâche du pipeline a besoin pendant son exécution.
Dans cette section, vous allez créer un pipeline qui récupère le code source de l'application sur GitHub, puis le construit et le déploie sur OpenShift Container Platform.
Le pipeline effectue les tâches suivantes pour l'application back-end pipelines-vote-api
et l'application front-end pipelines-vote-ui
:
-
Clone le code source de l'application à partir du dépôt Git en se référant aux paramètres
git-url
etgit-revision
. -
Construit l'image du conteneur à l'aide de la tâche de cluster
buildah
. -
Pousse l'image dans le registre d'images OpenShift en se référant au paramètre
image
. -
Déploie la nouvelle image sur OpenShift Container Platform en utilisant les tâches
apply-manifests
etupdate-deployment
.
Procédure
Copiez le contenu du fichier YAML de l'exemple de pipeline suivant et enregistrez-le :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow La définition du pipeline fait abstraction des spécificités du référentiel source Git et des registres d'images. Ces détails sont ajoutés à l'adresse
params
lorsqu'un pipeline est déclenché et exécuté.Créer le pipeline :
oc create -f <pipeline-yaml-fichier-nom.yaml>
oc create -f <pipeline-yaml-fichier-nom.yaml>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez également exécuter le fichier YAML directement à partir du dépôt Git :
oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.9/01_pipeline/04_pipeline.yaml
$ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.9/01_pipeline/04_pipeline.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Utilisez la commande
tkn pipeline list
pour vérifier que le pipeline est ajouté à l'application :tkn pipeline list
$ tkn pipeline list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow La sortie vérifie que le pipeline
build-and-deploy
a été créé :NAME AGE LAST RUN STARTED DURATION STATUS build-and-deploy 1 minute ago --- --- --- ---
NAME AGE LAST RUN STARTED DURATION STATUS build-and-deploy 1 minute ago --- --- --- ---
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.5. Miroir d'images pour l'exécution de pipelines dans un environnement restreint Copier lienLien copié sur presse-papiers!
Pour exécuter OpenShift Pipelines dans un cluster déconnecté ou un cluster provisionné dans un environnement restreint, assurez-vous que l'opérateur d'échantillons est configuré pour un réseau restreint, ou qu'un administrateur de cluster a créé un cluster avec un registre en miroir.
La procédure suivante utilise l'exemple pipelines-tutorial
pour créer un pipeline pour une application dans un environnement restreint à l'aide d'un cluster avec un registre miroir. Pour que l'exemple pipelines-tutorial
fonctionne dans un environnement restreint, vous devez mettre en miroir les images de constructeur respectives du registre miroir pour l'interface frontale, pipelines-vote-ui
; l'interface dorsale, pipelines-vote-api
; et le registre cli
.
Procédure
Miroir de l'image du constructeur à partir du registre des miroirs pour l'interface frontale,
pipelines-vote-ui
.Vérifiez que la balise images requise n'est pas importée :
oc describe imagestream python -n openshift
$ oc describe imagestream python -n openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Mettez en miroir la balise d'image prise en charge dans le registre privé :
oc image mirror registry.redhat.io/ubi8/python-38:latest <mirror-registry>:<port>/ubi8/python-38
$ oc image mirror registry.redhat.io/ubi8/python-38:latest <mirror-registry>:<port>/ubi8/python-38
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Importer l'image :
oc tag <mirror-registry>:<port>/ubi8/python-38 python:latest --scheduled -n openshift
$ oc tag <mirror-registry>:<port>/ubi8/python-38 python:latest --scheduled -n openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous devez périodiquement réimporter l'image. L'option
--scheduled
permet de réimporter automatiquement l'image.Vérifier que les images avec le tag donné ont été importées :
oc describe imagestream python -n openshift
$ oc describe imagestream python -n openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Miroir de l'image du constructeur à partir du registre des miroirs pour l'interface back-end,
pipelines-vote-api
.Vérifiez que la balise images requise n'est pas importée :
oc describe imagestream golang -n openshift
$ oc describe imagestream golang -n openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Mettez en miroir la balise d'image prise en charge dans le registre privé :
oc image mirror registry.redhat.io/ubi8/go-toolset:1.14.7 <mirror-registry>:<port>/ubi8/go-toolset
$ oc image mirror registry.redhat.io/ubi8/go-toolset:1.14.7 <mirror-registry>:<port>/ubi8/go-toolset
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Importer l'image :
oc tag <mirror-registry>:<port>/ubi8/go-toolset golang:latest --scheduled -n openshift
$ oc tag <mirror-registry>:<port>/ubi8/go-toolset golang:latest --scheduled -n openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous devez périodiquement réimporter l'image. L'option
--scheduled
permet de réimporter automatiquement l'image.Vérifier que les images avec le tag donné ont été importées :
oc describe imagestream golang -n openshift
$ oc describe imagestream golang -n openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Miroir de l'image du constructeur à partir du registre des miroirs pour le site
cli
.Vérifiez que la balise images requise n'est pas importée :
oc describe imagestream cli -n openshift
$ oc describe imagestream cli -n openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Mettez en miroir la balise d'image prise en charge dans le registre privé :
oc image mirror quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:65c68e8c22487375c4c6ce6f18ed5485915f2bf612e41fef6d41cbfcdb143551 <mirror-registry>:<port>/openshift-release-dev/ocp-v4.0-art-dev:latest
$ oc image mirror quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:65c68e8c22487375c4c6ce6f18ed5485915f2bf612e41fef6d41cbfcdb143551 <mirror-registry>:<port>/openshift-release-dev/ocp-v4.0-art-dev:latest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Importer l'image :
oc tag <mirror-registry>:<port>/openshift-release-dev/ocp-v4.0-art-dev cli:latest --scheduled -n openshift
$ oc tag <mirror-registry>:<port>/openshift-release-dev/ocp-v4.0-art-dev cli:latest --scheduled -n openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous devez périodiquement réimporter l'image. L'option
--scheduled
permet de réimporter automatiquement l'image.Vérifier que les images avec le tag donné ont été importées :
oc describe imagestream cli -n openshift
$ oc describe imagestream cli -n openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.6. Gestion d'un pipeline Copier lienLien copié sur presse-papiers!
Une ressource PipelineRun
démarre un pipeline et le lie aux ressources Git et image qui doivent être utilisées pour l'invocation spécifique. Elle crée et démarre automatiquement les ressources TaskRun
pour chaque tâche du pipeline.
Procédure
Démarrer le pipeline pour l'application back-end :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow La commande précédente utilise un modèle de demande de volume, qui crée une demande de volume persistante pour l'exécution du pipeline.
Pour suivre la progression de l'exécution du pipeline, entrez la commande suivante: :
$ tkn pipelinerun logs <pipelinerun_id> -f
$ tkn pipelinerun logs <pipelinerun_id> -f
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Le <pipelinerun_id> de la commande ci-dessus est l'identifiant du site
PipelineRun
qui a été renvoyé dans la sortie de la commande précédente.Démarrer le pipeline pour l'application frontale :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour suivre la progression de l'exécution du pipeline, entrez la commande suivante :
$ tkn pipelinerun logs <pipelinerun_id> -f
$ tkn pipelinerun logs <pipelinerun_id> -f
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Le <pipelinerun_id> de la commande ci-dessus est l'identifiant du site
PipelineRun
qui a été renvoyé dans la sortie de la commande précédente.Après quelques minutes, utilisez la commande
tkn pipelinerun list
pour vérifier que le pipeline s'est déroulé correctement en listant toutes les exécutions du pipeline :$ tkn pipelinerun list
$ tkn pipelinerun list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow La sortie répertorie les exécutions du pipeline :
NAME STARTED DURATION STATUS build-and-deploy-run-xy7rw 1 hour ago 2 minutes Succeeded build-and-deploy-run-z2rz8 1 hour ago 19 minutes Succeeded
NAME STARTED DURATION STATUS build-and-deploy-run-xy7rw 1 hour ago 2 minutes Succeeded build-and-deploy-run-z2rz8 1 hour ago 19 minutes Succeeded
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Obtenir l'itinéraire de la demande :
$ oc get route pipelines-vote-ui --template='http://{{.spec.host}}'
$ oc get route pipelines-vote-ui --template='http://{{.spec.host}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Notez la sortie de la commande précédente. Vous pouvez accéder à l'application en utilisant cette route.
Pour réexécuter le dernier pipeline, en utilisant les ressources du pipeline et le compte de service du pipeline précédent, exécutez :
$ tkn pipeline start build-and-deploy --last
$ tkn pipeline start build-and-deploy --last
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.7. Ajouter des déclencheurs à un pipeline Copier lienLien copié sur presse-papiers!
Les déclencheurs permettent aux pipelines de répondre aux événements GitHub externes, tels que les événements "push" et les "pull requests". Après avoir assemblé et démarré un pipeline pour l'application, ajoutez les ressources TriggerBinding
, TriggerTemplate
, Trigger
, et EventListener
pour capturer les événements GitHub.
Procédure
Copiez le contenu de l'exemple de fichier YAML
TriggerBinding
suivant et enregistrez-le :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer la ressource
TriggerBinding
:oc create -f <triggerbinding-yaml-file-name.yaml>
oc create -f <triggerbinding-yaml-file-name.yaml>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez également créer la ressource
TriggerBinding
directement à partir du dépôt Gitpipelines-tutorial
:oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.9/03_triggers/01_binding.yaml
$ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.9/03_triggers/01_binding.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copiez le contenu de l'exemple de fichier YAML
TriggerTemplate
suivant et enregistrez-le :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Le modèle spécifie un modèle de réclamation de volume pour créer une réclamation de volume persistante afin de définir le volume de stockage de l'espace de travail. Par conséquent, il n'est pas nécessaire de créer une demande de volume persistant pour assurer le stockage des données.
Créer la ressource
TriggerTemplate
:oc create -f <triggertemplate-nom-de-fichier-yaml.yaml>
oc create -f <triggertemplate-nom-de-fichier-yaml.yaml>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez également créer la ressource
TriggerTemplate
directement à partir du dépôt Gitpipelines-tutorial
:oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.9/03_triggers/02_template.yaml
$ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.9/03_triggers/02_template.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copiez le contenu de l'exemple de fichier YAML
Trigger
suivant et enregistrez-le :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer la ressource
Trigger
:oc create -f <trigger-yaml-file-name.yaml>
oc create -f <trigger-yaml-file-name.yaml>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez également créer la ressource
Trigger
directement à partir du dépôt Gitpipelines-tutorial
:oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.9/03_triggers/03_trigger.yaml
$ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.9/03_triggers/03_trigger.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copiez le contenu de l'exemple de fichier YAML
EventListener
suivant et enregistrez-le :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si vous n'avez pas défini de ressource personnalisée pour le déclencheur, ajoutez la spécification de liaison et de modèle au fichier YAML
EventListener
, au lieu de vous référer au nom du déclencheur :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez la ressource
EventListener
en suivant les étapes suivantes :Pour créer une ressource
EventListener
à l'aide d'une connexion HTTPS sécurisée :Ajouter une étiquette pour activer la connexion HTTPS sécurisée à la ressource
Eventlistener
:oc label namespace <ns-name> operator.tekton.dev/enable-annotation=enabled
oc label namespace <ns-name> operator.tekton.dev/enable-annotation=enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer la ressource
EventListener
:oc create -f <eventlistener-yaml-file-name.yaml>
oc create -f <eventlistener-yaml-file-name.yaml>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez également créer la ressource
EvenListener
directement à partir du dépôt Gitpipelines-tutorial
:oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.9/03_triggers/04_event_listener.yaml
$ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.9/03_triggers/04_event_listener.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer une route avec la terminaison TLS re-encrypt :
oc create route reencrypt --service=<svc-name> --cert=tls.crt --key=tls.key --ca-cert=ca.crt --hostname=<hostname>
$ oc create route reencrypt --service=<svc-name> --cert=tls.crt --key=tls.key --ca-cert=ca.crt --hostname=<hostname>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez également créer un fichier YAML de terminaison TLS réencryptée pour créer un itinéraire sécurisé.
Exemple Ré-encrypter le YAML de terminaison TLS de la route sécurisée
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1 2
- Le nom de l'objet, qui est limité à 63 caractères.
- 3
- Le champ
termination
est défini surreencrypt
. C'est le seul champ obligatoire detls
. - 4
- Nécessaire pour le rechiffrement.
destinationCACertificate
spécifie un certificat d'autorité de certification pour valider le certificat du point de terminaison, sécurisant ainsi la connexion entre le routeur et les modules de destination. Si le service utilise un certificat de signature de service, ou si l'administrateur a spécifié un certificat d'autorité de certification par défaut pour le routeur et que le service dispose d'un certificat signé par cette autorité de certification, ce champ peut être omis.
Voir
oc create route reencrypt --help
pour plus d'options.
Pour créer une ressource
EventListener
à l'aide d'une connexion HTTP non sécurisée :-
Créer la ressource
EventListener
. Exposer le service
EventListener
en tant que route OpenShift Container Platform pour le rendre accessible au public :oc expose svc el-vote-app
$ oc expose svc el-vote-app
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
Créer la ressource
3.5.8. Configuration des auditeurs d'événements pour desservir plusieurs espaces de noms Copier lienLien copié sur presse-papiers!
Vous pouvez sauter cette section si vous souhaitez créer un pipeline CI/CD de base. Cependant, si votre stratégie de déploiement implique plusieurs espaces de noms, vous pouvez configurer les auditeurs d'événements pour qu'ils desservent plusieurs espaces de noms.
Pour améliorer la réutilisation des objets EvenListener
, les administrateurs de clusters peuvent les configurer et les déployer en tant qu'auditeurs d'événements multi-locataires desservant plusieurs espaces de noms.
Procédure
Configurer l'autorisation de récupération à l'échelle du cluster pour l'écouteur d'événements.
Définissez un nom de compte de service à utiliser dans les objets
ClusterRoleBinding
etEventListener
. Par exemple,el-sa
.Exemple
ServiceAccount.yaml
apiVersion: v1 kind: ServiceAccount metadata: name: el-sa ---
apiVersion: v1 kind: ServiceAccount metadata: name: el-sa ---
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dans la section
rules
du fichierClusterRole.yaml
, définissez les autorisations appropriées pour que chaque déploiement d'écouteur d'événements fonctionne à l'échelle du cluster.Exemple
ClusterRole.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Configurez la liaison des rôles de cluster avec le nom de compte de service et le nom de rôle de cluster appropriés.
Exemple
ClusterRoleBinding.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Dans le paramètre
spec
de l'écouteur d'événements, ajoutez le nom du compte de service, par exempleel-sa
. Remplissez le paramètrenamespaceSelector
avec les noms des espaces de noms que l'écouteur d'événements est censé servir.Exemple
EventListener.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un compte de service avec les autorisations nécessaires, par exemple
foo-trigger-sa
. Utilisez-le pour lier les rôles des déclencheurs.Exemple
ServiceAccount.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple
RoleBinding.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un déclencheur avec le modèle de déclencheur, la liaison de déclencheur et le nom du compte de service appropriés.
Exemple
Trigger.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.9. Création de webhooks Copier lienLien copié sur presse-papiers!
Webhooks sont des messages HTTP POST qui sont reçus par les auditeurs d'événements chaque fois qu'un événement configuré se produit dans votre référentiel. La charge utile de l'événement est ensuite mise en correspondance avec des liaisons de déclenchement et traitée par des modèles de déclenchement. Les modèles de déclenchement finissent par lancer une ou plusieurs exécutions de pipeline, conduisant à la création et au déploiement de ressources Kubernetes.
Dans cette section, vous allez configurer une URL webhook sur vos dépôts Git forkés pipelines-vote-ui
et pipelines-vote-api
. Cette URL pointe vers la route de service EventListener
accessible au public.
L'ajout de webhooks nécessite des droits d'administration sur le référentiel. Si vous n'avez pas d'accès administratif à votre référentiel, contactez votre administrateur système pour ajouter des webhooks.
Procédure
Obtenir l'URL du webhook :
Pour une connexion HTTPS sécurisée :
echo "URL: $(oc get route el-vote-app --template='https://{{.spec.host}}')"
$ echo "URL: $(oc get route el-vote-app --template='https://{{.spec.host}}')"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour une connexion HTTP (non sécurisée) :
echo "URL: $(oc get route el-vote-app --template='http://{{.spec.host}}')"
$ echo "URL: $(oc get route el-vote-app --template='http://{{.spec.host}}')"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Notez l'URL obtenue dans le résultat.
Configurer manuellement les webhooks sur le référentiel frontal :
-
Ouvrez le dépôt Git frontal
pipelines-vote-ui
dans votre navigateur. -
Cliquez sur Settings
Webhooks Add Webhook Sur la page Webhooks/Add Webhook:
- Entrez l'URL du webhook de l'étape 1 dans le champ Payload URL
- Sélectionnez application/json pour le Content type
- Spécifiez le secret dans le champ Secret
- Assurez-vous que le site Just the push event est sélectionné
- Sélectionner Active
- Cliquez sur Add Webhook
-
Ouvrez le dépôt Git frontal
-
Répétez l'étape 2 pour le référentiel back-end
pipelines-vote-api
.
3.5.10. Déclenchement de l'exécution d'un pipeline Copier lienLien copié sur presse-papiers!
Chaque fois qu'un événement push
se produit dans le dépôt Git, le webhook configuré envoie une charge utile d'événement à la route de service EventListener
exposée publiquement. Le service EventListener
de l'application traite la charge utile et la transmet aux paires de ressources TriggerBinding
et TriggerTemplate
correspondantes. La ressource TriggerBinding
extrait les paramètres, et la ressource TriggerTemplate
utilise ces paramètres et spécifie la manière dont les ressources doivent être créées. Cela peut entraîner la reconstruction et le redéploiement de l'application.
Dans cette section, vous poussez un commit vide dans le dépôt frontal pipelines-vote-ui
, ce qui déclenche l'exécution du pipeline.
Procédure
Depuis le terminal, clonez votre dépôt Git forké
pipelines-vote-ui
:git clone git@github.com:<your GitHub ID>/pipelines-vote-ui.git -b pipelines-1.9
$ git clone git@github.com:<your GitHub ID>/pipelines-vote-ui.git -b pipelines-1.9
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pousser un commit vide :
git commit -m "empty-commit" --allow-empty && git push origin pipelines-1.9
$ git commit -m "empty-commit" --allow-empty && git push origin pipelines-1.9
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifier si l'exécution du pipeline a été déclenchée :
tkn pipelinerun list
$ tkn pipelinerun list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Remarquez qu'une nouvelle canalisation a été mise en place.
3.5.11. Permettre la surveillance des auditeurs d'événements pour les déclencheurs des projets définis par l'utilisateur Copier lienLien copié sur presse-papiers!
En tant qu'administrateur de cluster, pour rassembler les métriques des auditeurs d'événements pour le service Triggers
dans un projet défini par l'utilisateur et les afficher dans la console Web de OpenShift Container Platform, vous pouvez créer un moniteur de service pour chaque auditeur d'événements. Lors de la réception d'une requête HTTP, les auditeurs d'événements du service Triggers
renvoient trois métriques -eventlistener_http_duration_seconds
, eventlistener_event_count
et eventlistener_triggered_resources
.
Conditions préalables
- Vous vous êtes connecté à la console web de OpenShift Container Platform.
- Vous avez installé l'opérateur Red Hat OpenShift Pipelines.
- Vous avez activé la surveillance pour les projets définis par l'utilisateur.
Procédure
Pour chaque auditeur d'événements, créez un moniteur de service. Par exemple, pour afficher les mesures de l'auditeur d'événements
github-listener
dans l'espace de nomstest
, créez le moniteur de services suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Testez le moniteur de service en envoyant une requête à l'écouteur d'événements. Par exemple, envoyez un commit vide :
git commit -m "empty-commit" --allow-empty && git push origin main
$ git commit -m "empty-commit" --allow-empty && git push origin main
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Sur la console web d'OpenShift Container Platform, naviguez vers Administrator
Observe Metrics. -
Pour afficher une mesure, effectuez une recherche à partir de son nom. Par exemple, pour afficher les détails de la métrique
eventlistener_http_resources
pour l'auditeur d'événementsgithub-listener
, effectuez une recherche à l'aide du mot-cléeventlistener_http_resources
.
3.5.12. Configurer les capacités de demande d'extraction dans GitHub Interceptor Copier lienLien copié sur presse-papiers!
Avec GitHub Interceptor, vous pouvez créer une logique qui valide et filtre les webhooks de GitHub. Par exemple, vous pouvez valider l'origine du webhook et filtrer les événements entrants en fonction de critères spécifiques. Lorsque vous utilisez GitHub Interceptor pour filtrer les données d'événements, vous pouvez spécifier les types d'événements qu'Interceptor peut accepter dans un champ. Dans Red Hat OpenShift Pipelines, vous pouvez utiliser les capacités suivantes de GitHub Interceptor :
- Filtrer les événements de demande d'extraction en fonction des fichiers qui ont été modifiés
- Valider les pull requests en fonction des propriétaires GitHub configurés
3.5.12.1. Filtrer les pull requests avec GitHub Interceptor Copier lienLien copié sur presse-papiers!
Vous pouvez filtrer les événements GitHub en fonction des fichiers qui ont été modifiés pour les événements push et pull. Cela vous permet d'exécuter un pipeline uniquement pour les changements pertinents dans votre dépôt Git. GitHub Interceptor ajoute une liste délimitée par des virgules de tous les fichiers qui ont été modifiés et utilise CEL Interceptor pour filtrer les événements entrants sur la base des fichiers modifiés. La liste des fichiers modifiés est ajoutée à la propriété changed_files
de la charge utile de l'événement dans le champ de niveau supérieur extensions
.
Prérequis
- Vous avez installé l'opérateur Red Hat OpenShift Pipelines.
Procédure
Effectuez l'une des étapes suivantes :
Pour un dépôt GitHub public, définissez la valeur du paramètre
addChangedFiles
àtrue
dans le fichier de configuration YAML illustré ci-dessous :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour un dépôt GitHub privé, définissez la valeur du paramètre
addChangedFiles
àtrue
et fournissez les détails du jeton d'accès,secretName
etsecretKey
dans le fichier de configuration YAML illustré ci-dessous :Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- Sauvegarder le fichier de configuration.
3.5.12.2. Valider les pull requests avec GitHub Interceptors Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser GitHub Interceptor pour valider le traitement des pull requests en fonction des propriétaires GitHub configurés pour un dépôt. Cette validation permet d'éviter l'exécution inutile d'un objet PipelineRun
ou TaskRun
. GitHub Interceptor ne traite une demande d'extraction que si le nom d'utilisateur est répertorié comme propriétaire ou si un commentaire configurable est émis par un propriétaire du dépôt. Par exemple, lorsque vous commentez /ok-to-test
sur une demande d'extraction en tant que propriétaire, un objet PipelineRun
ou TaskRun
est déclenché.
Les propriétaires sont configurés dans un fichier OWNERS
à la racine du référentiel.
Conditions préalables
- Vous avez installé l'opérateur Red Hat OpenShift Pipelines.
Procédure
- Créer une valeur de chaîne secrète.
- Configurez le webhook GitHub avec cette valeur.
-
Créez un secret Kubernetes nommé
secretRef
qui contient votre valeur secrète. - Transmettez le secret Kubernetes comme référence à votre GitHub Interceptor.
-
Créez un fichier
owners
et ajoutez la liste des approbateurs dans la sectionapprovers
. Effectuez l'une des étapes suivantes :
Pour un dépôt GitHub public, définissez la valeur du paramètre
githubOwners
àtrue
dans le fichier de configuration YAML illustré ci-dessous :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour un dépôt GitHub privé, définissez la valeur du paramètre
githubOwners
àtrue
et fournissez les détails du jeton d'accès,secretName
etsecretKey
dans le fichier de configuration YAML illustré ci-dessous :Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteLe paramètre
checkType
est utilisé pour spécifier les propriétaires GitHub qui ont besoin d'une authentification. Vous pouvez lui donner la valeurorgMembers
,repoMembers
, ouall
.
- Sauvegarder le fichier de configuration.