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

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.

  1. Dans la console 'IBM Cloud, cliquez sur l'icône 'Menu 'Icône de menu > 'Automatisation de la plate-forme > 'Chaînes d'outils.
  2. Sur la page Chaînes d'outils, cliquez sur Créer une chaîne d'outils.
  3. 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.

  1. Cliquez sur Start.

  2. 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.

  3. 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.

  4. Sélectionnez un groupe de ressources dans la liste déroulante.

  5. 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.

  1. Vous pouvez accepter la configuration par défaut fournie dans le modèle.
  2. 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.

  1. Vous pouvez accepter la configuration par défaut fournie dans le modèle.
  2. 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.

  1. 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.

  2. Entrez un nouveau nom de référentiel.

  3. 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.

  1. 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.
  2. Saisissez votre Secrets Manager nom d'instance.
  3. Sélectionnez le type d'autorisation dans la liste déroulante.
  4. 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.

  1. Sélectionnez un Utiliser le dépôt de preuves existant.
  2. 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.
  3. Faites basculer le curseur du seau IBM Cloud Object Storage pour stocker toutes les preuves dans le seau IBM Cloud Object Storage.
  4. 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é.

  1. Les champs Cloud Object Storage instance, Nom du panier, et Cloud Object Storage endpoint sont automatiquement remplis.
  2. 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.
  3. 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 :

  1. Le nom de l'application par défaut est hello-compliance-app.

  2. 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.

  3. 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.

  4. 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-key si 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

  1. 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.
  2. Cliquez sur Continuer pour afficher la page du cluster.
  3. 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é.
  4. 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.
  5. Cliquez sur Continu.

Gestion des demandes de changement

  1. 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.
  2. 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.

  1. Fournissez votre DevOps Insights IBM Cloud Clé API.
  2. Accepter la configuration par défaut.
  3. 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éé.
  4. 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.

  1. Saisissez votre webhook Slack. Pour plus d'informations, voir Slack webhook.
  2. Saisissez votre canal Slack pour poster un message.
  3. Saisissez le Nom de l'équipe adverse. Par exemple, si votre équipe est URL https://team.slack.com, le nom de l'équipe est team.
  4. Choisir les événements pour lesquels vous souhaitez recevoir des notifications pour Notifications Slack automatisées.
  5. 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.

  1. Entrez un Name pour le travailleur privé du pipeline de livraison.
  2. 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.
  3. Cliquez sur Continu.

Création de la chaîne d'outils CD

  1. Dans la page Récapitulatif, cliquez sur Créer.
  2. 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.

caption-side=bottom"
DevSecOps CD toolchain créé DevSecOps CD toolchain créé

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.

  1. Cliquez sur cd-pipeline.

  2. Cliquez sur Exécuter pour le pipeline Déclencheur manuel de promotion.

  3. Cliquez sur Exécuter pour déclencher le pipeline.

  4. Cliquez sur Déclencheur manuel de promotion > #1promotion-pipelinerun pipeline. 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 master ciblant la branche de l'environnement cible de l'inventaire tel que staging ou production.

  5. Lorsque le pipeline de promotion se termine avec succès, le journal des tâches de promote fournit un lien vers la demande d'extraction dans le référentiel d'inventaire. Le nom de la demande d'extraction est du format promote <inventory source environment> to <inventory target environment>, par exemple, promote master to prod

  6. 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, ou Planning.
    • Change Request assignee: (obligatoire) Email-ID de 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.
  7. Complétez les champs de la demande de retrait et cliquez sur enregistrer.

  8. 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

  9. 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

  1. Assurez-vous que le pipeline CI s'est déroulé avec succès avant d'exécuter l'application Promotion Pipeline.

  2. Le pipeline de promotion crée un Pull Request avec le contenu de l'inventaire dans l'environnement de la source d'inventaire. Par exemple, master branche ciblant l'environnement cible de l'inventaire, par exemple, staging ou prod. 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
    Exécution du pipeline de promotion

  3. Une fois que la tâche Promotion Pipeline s'est terminée avec succès, la tâche promote vous fournit un lien vers la tâche Pull Request mentionné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>
    
  4. Ouvrez la Pull Request dans 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
  5. Remplissez les zones dans Pull Request et enregistrez leur contenu.

  6. Fusionner le site Pull Request avec 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.

caption-side=bottom"
DevSecOps Promotion du manuel du pipeline de CD DevSecOps Promotion du manuel du pipeline de CD

caption-side=bottom"
DevSecOps Promotion automatique du pipeline de CD DevSecOps Promotion automatique du pipeline de CD

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 :

caption-side=bottom"
DevSecOps Succès du pipeline de CD Succès du pipeline de CD DevSecOps

Flux des tâches dans le pipeline CD :

tâches du CDDevSecOps

Tâches du CD DevSecOps
Tâches du CD DevSecOps

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

en cours d'exécution Application DevSecOps
en cours d'exécution Application DevSecOps
en cours d'exécution