Configuration des pipelines d'intégration continue Tekton avec DevSecOps
Avec ce tutoriel, vous pouvez configurer le pipeline d'intégration continue (CI) Tekton et créer votre chaîne d'outils avec conformité.
Avant de commencer
-
Créez un cluster Kubernetes sur le site IBM Cloud® Kubernetes Service pour déployer votre application (*).
-
Installez le IBM Cloud CLI sur votre système d'exploitation pour interagir avec les ressources IBM Cloud.
-
Créer une clé de signature d'artefact avec le bon encodage pour signer les artefacts docker de votre application.
-
Créer des secrets de chaîne d'outils pour accéder à différentes intégrations et sécuriser.
-
Configurez IBM Cloud® Object Storage comme référentiel des preuves de conformité afin de stocker de manière durable les preuves relatives à l'exécution des pipelines.
-
Validez vos IBM Cloud® Identity and Access Management autorisations(IAM) qui sont attribuées aux intégrations correspondantes.
(*) Kubernetes cluster : requis lors de l'installation uniquement - peut être modifié après la création de la chaîne d'outils. Il n'est pas obligatoire de créer un cluster dédié, surtout si l'on utilise une cible de déploiement différente (comme CodeEngine ). Vous pouvez saisir une clé API IBM Cloud qui permet d'accéder à n'importe quel cluster.
Le pipeline CI utilise le service de signature de code GaraSign pour signer les artefacts de construction qui nécessitent un enregistrement et une adhésion. GaraSign utilise le réseau interne IBM. L'accès à ce réseau est disponible sur le site IBM pour les travailleurs partagés qui disposent d'un accès au réseau. IBM des travailleurs partagés ayant accès au réseau interne de 9.X peuvent être utilisés.
- Voir la vidéo suivante :
Démarrage de la configuration de la chaîne d'outils CI
Le service Continuous Delivery fournit des modèles qui vous guident dans la configuration de la chaîne d'outils et créent des processus dans un ordre logique. Un indicateur de progression indique les étapes à suivre pour terminer la configuration. Suivez les étapes pour accéder au modèle de la chaîne d'outils CI.
- Dans la console 'IBM Cloud, cliquez sur l'icône 'Menu '
> 'Automatisation de la plate-forme > 'Chaînes d'outils.
- Sur la page Chaînes d'outils, cliquez sur Créer une chaîne d'outils.
- Découvrez « Infrastructure as Code ».
- Cliquez sur CI - Développer une infrastructure sécurisée en tant que code avec les pratiques DevSecOps tuile.
Configurer les paramètres de la chaîne d'outils CI
La page Bienvenue résume l'objectif de la chaîne d'outils et fournit des pointeurs vers la documentation et le matériel connexe.
-
Cliquez sur Start.
-
Saisissez un Nom de la chaîne d'outils dans votre chaîne d'outils pour la même région et le même groupe de ressources dans le IBM Cloud.
-
Sélectionnez une région dans la liste déroulante.
-
Sélectionnez un groupe de ressources dans la liste déroulante.
-
Cliquez sur Continu.
Vous ne pouvez passer à l'étape suivante que si la configuration de l'étape en cours est terminée et valide. Vous pouvez à tout moment cliquer sur « Retour » pour revenir aux étapes précédentes de l'assistant d'installation. Tous les paramètres de configuration définis au cours des étapes successives sont conservés dans le programme d'installation de la chaîne d'outils.
Certaines étapes comprennent un bouton bascule vers la configuration avancée. Par défaut, ces étapes vous proposent la configuration minimale. Toutefois, les utilisateurs avancés qui ont besoin d'un contrôle plus précis peuvent cliquer sur le bouton « Passer à la configuration avancée » pour afficher les options de l'intégration sous-jacente.
Configurer les intégrations des outils d'intégration continue
Examinez les paramètres par défaut et fournissez les configurations définies par l'utilisateur lorsque cela est nécessaire pour mettre en place l'intégration de l'outil CI. Configurer plusieurs référentiels lors de l'installation. Vous pouvez cloner les dépôts d'exemple ou utiliser les vôtres, mais la chaîne d'outils ne prend en charge que les liens vers les dépôts Git Repos and Issue Tracking existants.
Application
Vérifiez les valeurs par défaut des paramètres de la chaîne d'outils :
- Vous pouvez accepter la configuration par défaut fournie dans le modèle.
- Cliquez sur Continuer
Inventaire Ansible
Le référentiel d'inventaire enregistre les détails des artefacts générés par les chaînes d'outils CI.
- Vous pouvez accepter la configuration par défaut fournie dans le modèle.
- Cliquez sur Continu.
Problèmes
Le référentiel des problèmes enregistre les problèmes trouvés pendant le fonctionnement du pipeline de CI.
- Vous pouvez accepter la configuration par défaut fournie dans le modèle.
- Cliquez sur Continuer
Secrets
Plusieurs outils de cette chaîne d'outils, et éventuellement de vos scripts personnalisables, nécessitent des secrets pour accéder à des ressources privilégiées. Une clé d'API IBM Cloud est un exemple de ce secret. Conservez ces secrets en toute sécurité dans un outil de gestion des secrets, tel que IBM Key Protect for IBM Cloud, IBM Cloud® Secrets Manager ou HashiCorp Vault. Le outil de gestion des secrets peut être intégré dans la chaîne d'outils afin que vous puissiez facilement faire référence aux secrets dans votre pipeline Tekton.
- Ce tutoriel utilise IBM Cloud® Secrets Manager comme chambre forte pour les secrets. Les champs Région, Groupe de ressources et Nom du service sont automatiquement remplis en fonction des choix disponibles. Cliquez sur les indicateurs déroulants pour voir les autres choix.
- Saisissez votre Secrets Manager nom d'instance.
- Sélectionnez le type d'autorisation dans la liste déroulante.
- Cliquez sur Continu.
Stockage des preuves
Le référentiel de preuves stocke toutes les preuves et tous les artefacts générés par le pipeline de CI DevSecOps.
- Faites basculer le curseur du seau IBM Cloud Object Storage pour stocker toutes les preuves dans le seau IBM Cloud Object Storage qui peut être configuré à la page suivante.
- Accepter les paramètres par défaut.
- Cliquez sur Continu.
Compartiment de stockage dans le cloud « Object Storage »
Vous devez disposer de l'instance IBM Cloud Object Storage et d'un bac pour faire office d'armoire à preuves de conformité.
- Les champs Cloud Object Storage instance, Nom du panier, et Cloud Object Storage endpoint sont automatiquement remplis.
- Saisissez votre clé API Service ID.
- Préféré : Une clé existante peut être importée à partir d'un coffre-fort secret en cliquant sur l'icône de la clé.
- Une clé existante peut être copiée et collée.
- Cliquez sur Continu.
Le champ « endpoint » est facultatif. Il est recommandé de sélectionner ou de fournir le point final lors de la configuration de la chaîne d'outils ou lors de l'exécution du pipeline.
Déployer
Configurez la cible d'inventaire et le cluster d' Kubernetes s sur lequel l'application est déployée :
-
Nom de l'application L'adresse par défaut est
hello-compliance-app. -
Saisissez votre clé API d' IBM Cloud. La clé API sert à interagir avec l'outil CLI IBM Cloud dans le cadre de plusieurs tâches.
- Préféré : Une clé existante peut être importée à partir d'un coffre-fort secret en cliquant sur l'icône de la clé.
- Une clé existante peut être copiée et collée.
- Vous pouvez créer une nouvelle clé à partir d'ici en cliquant sur le bouton « Nouveau + ».
La clé API nouvellement générée peut être immédiatement sauvegardée dans un coffre-fort secret.
-
Si la clé API est valide et dispose d'un accès suffisant, le Container Registry, Container Registry namespace, Région du cluster de développement, Groupe de ressources, Nom du cluster, Espace de noms du cluster sont automatiquement remplis. Vous pouvez modifier n'importe lequel de ces champs pour l'adapter à votre configuration.
-
Cliquez sur Continu.
Signature d'artefact
Les artefacts sont construits par la chaîne d'outils et enregistrés dans l'inventaire. Ils doivent être signés avant d'être déployés dans la production. Le pipeline utilise Skopeo comme outil par défaut pour la signature des artefacts. Vous pouvez utiliser une clé GPG existante ou créer une paire de clés GPG.
- Saisissez la GnuPG Private Key. Vous pouvez également créer une nouvelle clé GPG en cliquant sur NEW. Pour plus d'informations, voir Génération d'une clé GPG.
- Cliquez sur Continu.
DevOps Insights
Le IBM Cloud DevOps Insights est inclus dans la chaîne d'outils. Visualisez les résultats des tests de votre pipeline pour chaque build, à partir de chaque déploiement et de chaque environnement.
- Accepter la configuration par défaut.
- Cliquez sur Continu.
Outils facultatifs
Slack
Configurez le Slack pour recevoir des notifications sur vos pull requests, ou les événements du pipeline CI. Vous pouvez également ajouter l'outil Slack après la création de la chaîne d'outils.
- Saisissez votre webhook Slack. Pour plus d'informations, voir Slack webhook.
- Saisissez votre canal Slack pour poster un message.
- Saisissez le Nom de l'équipe adverse. Par exemple, si votre équipe s'appelle URL
https://team.slack.com, son nom estteam. - Choisir les événements pour lesquels vous souhaitez recevoir des notifications pour Notifications Slack automatisées.
- Cliquez sur Continu.
Chaîne d'outils commune DevOps Insights
DevOps Insights peut être intégrée, si on le souhaite, dans la chaîne d'outils créée et, après chaque contrôle de conformité, les résultats sont publiés. La chaîne d'outils peut utiliser une instance existante d' DevOps Insights s pour publier les enregistrements de déploiement dans Insights. Vous pouvez associer l'intégration d' DevOps Insights s provenant d'une autre chaîne d'outils en indiquant l'identifiant de l'intégration.
- Accepter la Chaîne d'outils actuelle.
- Cliquez sur Continu.
Vous pouvez copier l'ID de la chaîne d'outils à partir de l'URL de cette dernière. L' URL d'une chaîne d'outils suit ce modèle : https://cloud.ibm.com/devops/toolchains/<toolchain-ID-comes-here>?env_id=ibm:yp:us-south.
Si l' URL est : https://cloud.ibm.com/devops/toolchains/aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee?env_id=ibm:yp:us-south, alors l'identifiant de la chaîne d'outils est : aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee. Inclure uniquement l'identifiant, et non l'adresse complète URL.
Vous pouvez également définir un environnement cible pour les interactions de l' DevOps Insights. Ce paramètre est facultatif et est utilisé à la place de l'environnement cible de l'inventaire.
DevOps Insights
Vous pouvez créer une instance de DevOps Insights à utiliser pour la chaîne d'outils. Si aucune configuration n'est requise, le pipeline CI utilise automatiquement l'instance d'insights incluse dans la chaîne d'outils.
Delivery Pipeline Private Worker
Les artefacts construits par la chaîne d'outils et enregistrés dans l'inventaire doivent être signés à l'aide de GaraSign,, un service de signature de code fourni par Garantir, avant que les images puissent être déployées en production. Pour activer la signature d'artefacts à l'adresse GaraSign, vous devez disposer d'un travailleur privé à l'adresse TaaS et d'un certificat de signature CISO à l'adresse IBM.
L'intégration de l'outil Delivery Pipeline private worker se connecte à un ou plusieurs private workers qui peuvent exécuter des charges de travail de pipeline de livraison de manière isolée.
SonarQube
Configurer SonarQube comme outil d'analyse statique du code pour la chaîne d'outils. SonarQube offre un aperçu de la qualité et de la santé générale de votre code source et met en évidence les problèmes détectés dans le nouveau code. Les analyseurs de code statiques détectent les bogues complexes, tels que les déréférencements de pointeurs nuls, les erreurs logiques et les fuites de ressources, dans plusieurs langages de programmation.
- Acceptez la configuration par défaut.
- Cliquez sur Continu.
Création de la chaîne d'outils CI
- Dans la page Récapitulatif, cliquez sur Créer.
- Attendez la création de la chaîne d'outils. Cette opération peut prendre quelques minutes.
Exploration de la chaîne d'outils CI
Maintenant que la chaîne d'outils CD est créée avec deux pipelines comme le montre la capture d'écran. Cliquez sur la tuile ci-pipeline pour ouvrir et exécuter le pipeline de promotion.
Faire fonctionner le pipeline PR-CI
Pour lancer l' ci-pr pipeline, vous devez créer une demande de fusion dans le référentiel de votre application.
-
Sur la page de la chaîne d'outils CI, cliquez sur la tuile
pr pipeline. Par défaut, il est créé avec le nomcompliance-app-<timestamp>. -
Créer une branche à partir de la branche principale.
-
Mettez à jour le code de l'application ou ajoutez un fichier readme, puis enregistrez les modifications.
-
Envoyer une demande de fusion.
-
Sur la page consacrée à la chaîne d'outils d'intégration continue, cliquez sur la vignette « pr-pipeline ». Vérifiez que la
ci-pr pipelineest déclenchée par la création de la demande de fusion. -
Attendez que l'exécution de l'
ci-pr pipelinee soit terminée. La demande de fusion correspondante qui se trouve dans le référentiel de votre application est dans l'étatPendingjusqu'à ce que toutes les étapes du pipeline PR se terminent avec succès. -
Une fois que l'exécution du pipeline de relations publiques a réussi, cliquez sur le pipeline pour découvrir les nombreuses étapes réalisées et pour afficher la page. Pour modifier et soumettre à nouveau la demande de fusion, suivez les étapes 3 à 7.
caption-side=bottom"
Flux simplifié des tâches dans le pipeline
Dans le flux de tâches du DevSecOps PR pipeline, les tâches utilitaires sont omises. Par exemple, la mise à jour de la vérification de l'état de GitHub, la récupération des informations d'identification, etc. Dans le monde DevSecOps, le shift left est une pratique qui permet de prévenir et de trouver des problèmes tels que des défauts, des vulnérabilités de sécurité. Shift left effectue également des contrôles de conformité au début du processus de livraison du logiciel, comme le montre la figure.
- Vérifications qui peuvent être exécutées sur le code/référentiel et qui ne nécessitent pas d'être construites. L'artefact doit être exécuté le plus tôt possible afin d'éviter que le code non conforme ne soit fusionné dans la branche principale du référentiel. Les éléments de preuve ne sont pas collectés à partir du pipeline de la RP. L'objectif de la filière est de déplacer les contrôles de conformité le plus à gauche possible.
- Tous les contrôles sont effectués lors de l'exécution d'un pipeline. Même si une vérification précédente échoue, le pipeline passe à la suivante. Pour vérifier si votre exécution a rencontré des erreurs, vous devez consulter la dernière étape de votre pipeline, qui comprend un évaluateur de pipeline.
- Si vous essayez de fusionner un correctif d'urgence et souhaitez contourner les contrôles de conformité. Ajoutez une étiquette à votre demande de fusion pour indiquer la correction. Il faut indiquer la même étiquette lors de l'exécution du pipeline CD.
Exécution du pipeline PR
Vous pouvez lancer le pipeline d'intégration continue de l'une des manières suivantes :
- Automatiquement : après l'exécution réussie d'un pipeline PR, en approuvant et en fusionnant la demande d'extraction dans la branche principale.
- Manuellement : pour déclencher manuellement le pipeline CI, sélectionnez la fiche du pipeline de livraison, cliquez sur « Exécuter le pipeline », puis sélectionnez « Déclenchement manuel ».
Dans ce tutoriel, le pipeline CI a été déclenché après que vous ayez fusionné vos modifications de code dans la branche master du référentiel de votre application.
- Sur la page de la chaîne d'outils CI, cliquez sur la vignette « ci-pipeline ».
- Cliquez sur Run en regard du nom de votre pipeline. Observer le fonctionnement d'un pipeline. Attendez que l'exécution du pipeline soit terminée.
- Une fois que l'exécution du pipeline CI est réussie, cliquez sur le pipeline pour explorer les étapes réalisées et afficher la page comme indiqué dans la capture d'écran.
Exécution du pipeline CI
Dans ce document, le pipeline CI a été déclenché après que vous ayez fusionné vos modifications de code dans la branche « master » du référentiel de votre application.
- Sur la page de la chaîne d'outils CI, cliquez sur la vignette « ci-pipeline ».
- Vous notez que l'exécution d'un pipeline (pipeline-run) est en cours. Attendez qu'elle se termine.
Une fois que l'exécution du pipeline CI s'est déroulée avec succès, vous pouvez cliquer sur les tâches du pipeline pour consulter les étapes terminées.
Flux simplifié des tâches dans le pipeline
Dans le flux de tâches du pipeline CI de DevSecOps, les tâches utilitaires sont omises. Par exemple, la mise à jour de la vérification de l'état de GitHub, la récupération des informations d'identification, etc. Les tâches colorées en vert produisent des preuves.
Les données issues de tous les contrôles de conformité effectués dans le pipeline CI sont collectées et stockées dans le référentiel de données de contrôle fourni lors de la configuration de la chaîne d'outils. Les données issues de CI sont
disponibles à l'adresse raw/ci/<pipeline-run-id>/*.json.
Les données sont publiées sur l'instance d' DevOps Insights s intégrée à la chaîne d'outils. Vous pouvez naviguer en cliquant sur la carte d'outils DevOps Insights dans la chaîne d'outils. Vous pouvez consulter les preuves collectées sur la page Tableau de bord Qualité.
Pour vérifier si votre exécution de pipeline a rencontré des échecs, vous devez consulter la dernière étape de votre pipeline, qui comporte un évaluateur de pipeline.
Affichage de l'application en cours d'exécution
Une fois le pipeline d'intégration continue exécuté avec succès, l'application d'exemple est déployée sur votre cluster Kubernetes et s'exécute dans l'espace de noms « dev ».
L'application URL figure à la fin du journal, à l'étape « run stage » de la tâche « deploy-dev » de l'exécution du pipeline CI. Utilisez cette adresse URL pour vérifier que l'application est en cours d'exécution.
Configuration du pipeline
Pour ajouter une propriété de texte commit-id.
- Cliquez sur Ajouter une propriété.
- Sélectionnez Propriété de texte.
Si vous déclenchez le pipeline manuellement sans commit-id, le pipeline prend le dernier commit ID de la branche master de votre application.
Exemple
Pour ajouter les paramètres de déclenchement.
- Cliquez sur Exécuter le pipeline.
- Sélectionnez « Déclenchement manuel ».
- Cliquez sur Exécuter.