Mise en place de pipelines de déploiement continu Tekton avec DevSecOps
Ce tutoriel vous permettra de mettre en place un pipeline de déploiement continu (CD) et une chaîne d'outils qui respectent les meilleures pratiques en matière de conformité.
Avant de commencer
- Créer un cluster Kubernetes sur IBM Cloud® Kubernetes Service pour déployer votre application.
- Créez des secrets de chaîne d'outils pour accéder à différentes intégrations et les sécuriser.
- Chaîne d'outils d'intégration continue de la conformité configurée avec des intégrations IBM Cloud® DevOps Insights.
- Optionnel. Configurer IBM Cloud® Object Storage en tant que casier de preuves de conformité pour stocker les preuves d'exécution du pipeline.
- Validez vos IBM Cloud® Identity and Access Management autorisations(IAM) qui sont attribuées aux intégrations correspondantes.
- Visionnez la vidéo suivante pour avoir un aperçu du processus de configuration de la chaîne d'outils CD.
Démarrage de la configuration de la chaîne d'outils CD
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.
- Cliquez sur CD-Develop with DevSecOps practices tile.
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 propose des liens 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. Veillez à ce qu'il n'existe qu'une seule chaîne d'outils de ce nom dans une même région et un même groupe de ressources IBM Cloud.
-
Sélectionnez une région dans la liste déroulante.
La région de la chaîne d'outils peut être différente de celle du cluster et du registre.
-
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 toujours cliquer sur Retour pour afficher les étapes précédentes de l'installation guidée. 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. Ces étapes vous présentent par défaut la configuration minimale. Toutefois, les utilisateurs avancés qui ont besoin d'un contrôle plus fin peuvent cliquer sur le bouton Basculer vers la configuration avancée pour faire apparaître les options de l'intégration sous-jacente.
Mise en place de l'intégration des outils de CD
L'intégration des outils de CD couvre la configuration des différents outils et services d'intégration utilisés par la chaîne d'outils de CD. Si vous utilisez le modèle de chaîne d'outils du pipeline CI pour configurer votre processus CI, référez-vous à votre chaîne d'outils CI et copiez les noms des dépôts utilisés dans cette chaîne d'outils.
Référentiels liés aux applications
Si vous souhaitez mettre en place votre chaîne d'outils CI à partir de zéro, configurez ces dépôts lors de la création de la chaîne d'outils CI.
- Inventaire Ansible
- Les informations relatives au déploiement sont suivies à l'aide de ce référentiel. Pour chaque exécution réussie du pipeline CI, le pipeline CD crée une nouvelle branche nommée d'après le numéro du CR créé, et fusionne avec le master une
fois le déploiement terminé. Par exemple,
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-inventory. - Problèmes
- Stocke les questions relatives aux incidents survenus au cours du processus de construction et de déploiement. Par exemple,
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-issues. - Preuve
- Collecte toutes les preuves brutes de conformité qui appartiennent à l'application. Par exemple,
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-evidence. - Chaîne d'outils
- Les définitions des pipelines tekton, tels que les pipelines, les triggers et les listeners sont stockés dans ce référentiel. Par exemple,
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-toolchain.
Après avoir capturé les noms des dépôts de la chaîne d'outils CI, continuez avec Guided Setup pour commencer la création de la chaîne d'outils CD. Au cours du processus d'installation, pour chaque dépôt, vous pouvez fournir l'adresse
URL à un dépôt existant IBM hébergé Git Repos and Issue Tracking. Actuellement, la chaîne d'outils ne permet de créer que des dépôts Git Repos and Issue Tracking. Les prochaines versions permettront de créer des référentiels avec GitHub,
GitHub Enterprise (GHE) et d'autres fournisseurs de SCM.
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. Le comportement par défaut de la chaîne d'outils est d' utiliser l'inventaire existant pour lier un référentiel d'inventaire existant à la chaîne d'outils. La chaîne d'outils ne permet actuellement de créer des liens qu'avec les dépôts Git Repos and Issue Tracking existants. Pour plus d'informations, voir Référentiels liés à l'application.
- 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
Configuration de pipeline
Le référentiel de configuration du pipeline contient des fichiers YAML et des scripts nécessaires au déploiement, aux tests et à d'autres tâches personnalisées. Pour plus d'informations sur les dépôts Git, voir Configuration de vos Git Repos and Issue Tracking. Pour plus d'informations sur les scripts personnalisables, voir Scripts personnalisés.
-
Acceptez les paramètres par défaut pour Fournisseur de source et Créer un nouveau référentiel de configuration de déploiement.
La chaîne d'outils clone l 'exemple hello-compliance-deployment dans votre organisation Git. Pour plus d'informations sur les référentiels Git, consultez la section Configuration de votre Git Repos and Issue Tracking. Pour plus d'informations sur les scripts personnalisables, voir Scripts personnalisés.
-
Entrez un nouveau nom de référentiel.
-
Cliquez sur Continu.
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.
Vous pouvez utiliser la méthode d'authentification AppRole pour lire les valeurs secrètes.
- 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 casier de preuves stocke toutes les preuves et tous les artefacts générés par le pipeline de CI DevSecOps.
- Sélectionnez un Utiliser le dépôt de preuves existant.
- Sélectionnez l' URL e de référentiel qui a été créée lors de la configuration de la chaîne d'outils d'intégration continue (CI). Pour plus d'informations sur le stockage des preuves, voir Preuves.
- Faites basculer le curseur du seau IBM Cloud Object Storage pour stocker toutes les preuves dans le seau IBM Cloud Object Storage.
- Cliquez sur Continu.
Bucket d' Object Storage s Cloud
Vous devez disposer d'une instance d' IBM Cloud Object Storage et d'un compartiment qui servira de coffre-fort pour les 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 Kubernetes où l'application est déployée :
-
Le nom de l'application par défaut est
hello-compliance-app. -
Saisissez votre clé API IBM Cloud. La clé API est utilisée pour interagir avec l'outil CLI de IBM Cloud dans 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.
- Une nouvelle clé peut être créée à 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.
Clé d'API IBM Cloud
La clé API est utilisée pour interagir avec l'outil CLI de ibmcloud dans plusieurs tâches.
- Une clé API existante peut être importée à partir d'un fournisseur de secret existant créé comme prérequis (recommandé)
- Une clé existante peut être copiée et collée (non recommandé)
- Une nouvelle clé peut être créée en cliquant sur Nouveau +. Créez une
api-keysi vous n'en avez pas. La clé d'API nouvellement générée peut être immédiatement enregistrée dans une instance Key Protect existante
Lorsque le champ Clé API est rempli, les champs relatifs au registre et au cluster sont remplis automatiquement.
Cible d'inventaire et branches source
- Acceptez l'option Cluster unique (déploiement basé sur la poussée) pour déployer votre application vers des cibles telles que Virtual Server Instance ou personnaliser le processus de déploiement, utilisez l'option Personnalisée.
- Cliquez sur Continuer pour afficher la page du cluster.
- Saisissez le champ IBM Cloud API Key pour interagir avec l'outil CLI dans plusieurs tâches. Note une clé existante peut être importée d'un coffre-fort de secrets en cliquant sur l'icône de la clé.
- Verify your Région de la grappe, Groupe de ressources, Nom du groupe, and Espace de noms des clusters fields where your target cluster is created.
- Cliquez sur Continu.
Gestion des demandes de changement
- Sélectionnez le dépôt IBM Cloud hébergé Git Repos and Issue Tracking pour gérer les demandes de changement. Pour plus d'informations, voir Automatiser la gestion des modifications.
- Cliquez sur Continu.
DevOps Insights chaîne d'outils
Lier une instance DevOps Insights existante d'une autre chaîne d'outils à ce pipeline, de sorte que tous les enregistrements de construction, de déploiement et de test des pipelines des chaînes d'outils CI et CD puissent être rassemblés au même endroit.
La chaîne d'outils CD peut publier les enregistrements de déploiement dans une instance DevOps Insights existante. Pour activer cette fonctionnalité, indiquez l'ID de la chaîne d'outils qui contient l'instance DevOps Insights existante en la sélectionnant dans la liste des ID de chaînes d'outils DevOps Insights.
- Fournissez votre DevOps Insights IBM Cloud Clé API.
- Accepter la configuration par défaut.
- Vérifiez les champs Région, Groupe de ressources, DevOps Insights toolchain ID et DevOps Insights environnement cible dans lesquels votre environnement cible est créé.
- Cliquez sur Continu.
Lien vers la chaîne d'outils existante DevOps Insights
DevOps Insights peut éventuellement être inclus dans la chaîne d'outils créée et, après chaque contrôle de conformité, les preuves sont publiées. La chaîne d'outils peut utiliser une instance existante de DevOps Insights pour publier les enregistrements de déploiement sur insights. Vous pouvez lier l'intégration DevOps Insights à partir d'une autre chaîne d'outils en fournissant l'ID 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. Le site URL d'une chaîne d'outils suit le modèle suivant : https://cloud.ibm.com/devops/toolchains/<toolchain-ID-comes-here>?env_id=ibm:yp:us-south.
Si le site URL est : https://cloud.ibm.com/devops/toolchains/aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee?env_id=ibm:yp:us-south, l'identifiant de la chaîne d'outils est : : aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee. Indiquez uniquement l'identifiant, et non l' URL complète.
Vous pouvez également définir un environnement cible pour les interactions DevOps Insights. Ce paramètre est facultatif et est utilisé à la place de l'environnement cible de l'inventaire.
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 est URL
https://team.slack.com, le nom de l'équipe estteam. - Choisir les événements pour lesquels vous souhaitez recevoir des notifications pour Notifications Slack automatisées.
- Cliquez sur Continu.
Agent privé
L'intégration de l'outil de travail privé du pipeline de livraison se connecte à un ou plusieurs travailleurs privés qui peuvent exécuter des charges de travail du pipeline de livraison de manière isolée. Pour plus d'informations, voir Utilisation des agents privés.
- Entrez un Name pour le travailleur privé du pipeline de livraison.
- 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.
Création de la chaîne d'outils CD
- Dans la page Récapitulatif, cliquez sur Créer.
- Attendez la création de la chaîne d'outils pour afficher la page de résumé comme indiqué dans la capture d'écran. Cette opération peut prendre quelques minutes.
Vous pouvez configurer les intégrations de chaînes d'outils individuelles une fois que le pipeline a été créé.
Exploration de la chaîne d'outils CD
Exécution du pipeline de promotion
Assurez-vous que le pipeline CI s'est déroulé avec succès avant d'exécuter le pipeline de promotion.
-
Cliquez sur cd-pipeline.
-
Cliquez sur Exécuter pour le pipeline Déclencheur manuel de promotion.
-
Cliquez sur Exécuter pour déclencher le pipeline.
-
Cliquez sur Déclencheur manuel de promotion >
#1promotion-pipelinerunpipeline. Attendez la fin de l'exécution du pipeline de promotion et vérifiez le journal d'exécution.Le pipeline de promotion crée une demande d'extraction avec le contenu de l'inventaire sur l'environnement source de l'inventaire tel que la branche
masterciblant la branche de l'environnement cible de l'inventaire tel questagingouproduction. -
Lorsque le pipeline de promotion se termine avec succès, le journal des tâches de
promotefournit un lien vers la demande d'extraction dans le référentiel d'inventaire. Le nom de la demande d'extraction est du formatpromote <inventory source environment> to <inventory target environment>, par exemple,promote master to prod -
Ouvrez la pull request dans votre navigateur à l'aide du lien fourni dans le journal. Complétez les détails dans les sections suivantes :
- Priorité: (obligatoire) Définie comme
Critical,High,Moderate,Low, ouPlanning. - Change Request assignee: (obligatoire)
Email-IDde l'assigné. - Description supplémentaire: Description des modifications apportées à la demande.
- Objectif: Objectif des changements apportés à l'application.
- Explication de l'impact: Impact du changement sur le comportement de l'application ou sur l'environnement.
- Plan de secours: Etapes à suivre pour se retirer en cas d'échec du déploiement.
- Priorité: (obligatoire) Définie comme
-
Complétez les champs de la demande de retrait et cliquez sur enregistrer.
-
Ajoutez l'étiquette
EMERGENCYà votre pull request si les contrôles de conformité dans CI ont échoué et que vous voulez continuer avec le déploiement -
Fusionner la pull request de Git Repos and Issue Tracking.
Les détails de la demande d'extraction sont utilisés pendant l'exécution du pipeline CD pour créer et mettre à jour le référentiel des demandes de changement.
Exécution du pipeline CD
Gestion d'un pipeline de promotion
-
Assurez-vous que le pipeline CI s'est déroulé avec succès avant d'exécuter l'application
Promotion Pipeline. -
Le pipeline de promotion crée un
Pull Requestavec le contenu de l'inventaire dans l'environnement de la source d'inventaire. Par exemple,masterbranche ciblant l'environnement cible de l'inventaire, par exemple,stagingouprod. Une branche intermédiaire pour la demande d'extraction est créée et peut être supprimée après la fusion de cette demande.
Exécution du pipeline de promotion -
Une fois que la tâche
Promotion Pipelines'est terminée avec succès, la tâchepromotevous fournit un lien vers la tâchePull Requestmentionnée précédemment dans le référentiel d'inventaire. Le nom de la demande d'extraction est dans le format suivant :promote <Inventory Source Environment> to <Inventory Target Environment> -
Ouvrez la
Pull Requestdans le navigateur avec le lien fourni dans le journal. Complétez les sections comme suit :- Priorité : (obligatoire) Critique, Elevée, Modérée, Faible, Planification
- Gestionnaire de la demande de changement : (obligatoire) ID de messagerie électronique du gestionnaire
- Description supplémentaire : Description des changements dans l'application
- Objectif : Objectif des changements apportés à l'application
- Explication de l'impact : Impact du changement sur le comportement ou l'environnement de l'application
- Plan de reprise: Etapes de la reprise en cas d'échec du déploiement
-
Remplissez les zones dans
Pull Requestet enregistrez leur contenu. -
Fusionner le site
Pull Requestavec le site Git Repos and Issue Tracking.
Les détails du site Pull Request sont utilisés par le pipeline de CD pour créer une demande de modification dans le référentiel de gestion des demandes de modification au cours de l'exécution du pipeline de CD.
Exécution du pipeline CD
Vous pouvez déclencher un pipeline de CD de manière manuelle ou automatique. Vous pouvez déclencher manuellement le pipeline CD à tout moment, mais si aucun changement n'est intervenu depuis le dernier déploiement réussi, le pipeline CD s'arrête
prématurément car il n'y a rien à déployer. Un Git Repos and Issue Tracking trigger est mis en place pour déclencher le pipeline automatique du CD, mais il est désactivé par défaut et peut être activé après la première promotion.You pouvez
ajouter et utiliser force-redeploy variable pour réexécuter le CD sans modification du code. Voir la capture d'écran réussie du DevSecOps
CD pipeline.
Vous pouvez également déclencher le CD Pipeline manuellement à tout moment, mais s'il n'y a pas de modifications depuis le dernier déploiement réussi, aucun nouveau déploiement n'est effectué par le CD Pipeline.
Une exécution de pipeline de CD réussie se présente comme suit :
Flux des tâches dans le pipeline CD :
tâches du CDDevSecOps
Après une exécution réussie du pipeline CD, vous pouvez trouver l'application d'exemple qui s'exécute sur l'espace de noms prod. L'URL d'application se trouve dans la sous-étape run stage de l'étape prod deployment de l'exécution du pipeline CD. Utilisez cette URL pour vérifier que l'application est en cours d'exécution.
applicationDevSecOps