Mettre en place une chaîne d'outils CD pour Infrastructure as Code
Ce tutoriel est la troisième partie d'une série de trois tutoriels qui vous permettent d'apprendre les meilleures pratiques d' IBM Cloud®DevSecOps en utilisant une implémentation de référence complète disponible sous forme de service et optimisée par IBM Cloud® Continuous Delivery. Dans la troisième partie de cette série de didacticiels, vous utilisez le modèle de chaîne d'outils pour le déploiement continu (CD) avec les meilleures pratiques en matière de sécurité et de conformité dans DevSecOps.
Avant de commencer
Avant de commencer la partie 3 de cette série de tutoriels, assurez-vous d'avoir rempli les conditions préalables suivantes :
CD - Déployer une application sécurisée avec les pratiques de DevSecOps
La chaîne d'outils CD de DevSecOps ne contient qu'un seul pipeline pour le déploiement continu. Elle met en oeuvre les meilleures pratiques suivantes :
- automatise la gestion des changements pour aider les développeurs, les approbateurs et les auditeurs à suivre les déploiements du point de vue de la conformité.
- Crée un résumé des éléments de preuve à partir des éléments de preuve collectés dans le pipeline de l'IC.
- Crée une demande de changement dans le référentiel de gestion des changements basé sur Git Repos and Issue Tracking et y ajoute des preuves de déploiement.
- Utilise le référentiel d'inventaire pour promouvoir les artefacts construits dans les environnements de déploiement tels que staging et prod.
- Vérifie le CR et l'approuve automatiquement si toutes les vérifications sont positives.
- Si la RC est approuvée, ou en cas d'urgence, la chaîne d'outils déploie l'image de l'inventaire vers la production.
Présentation de la configuration guidée pour la chaîne d'outils CD
Toutes les méthodes décrites dans ce tutoriel vous donnent accès à l'expérience de configuration guidée. Vous êtes guidé dans le processus de configuration de la chaîne d'outils et les options de configuration recommandées nécessaires à la création de votre chaîne d'outils vous sont présentées.
Un indicateur de progression indique les étapes à suivre pour terminer la configuration. L'indicateur de progression permet de revenir à l'étape précédente. Les options de configuration pour l'étape en cours sont affichées dans la zone principale de la page.
Pour passer à l'étape suivante, cliquez sur Continuer. Vous ne pouvez passer à l'étape suivante que si la configuration de l'étape en cours est terminée et valide. Pour revenir à l'étape précédente, cliquez sur Retour.
Certaines étapes comprennent un bouton Basculer vers la configuration avancée. Ces étapes vous présentent par défaut la configuration minimale nécessaire. Cependant, 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 toutes les options de l'intégration sous-jacente.
Lorsque toutes les étapes sont terminées avec succès, vous créez la chaîne d'outils en cliquant sur Créer dans l'étape Résumé.
Vous pouvez toujours revenir aux étapes précédentes dans le programme d'installation guidé. 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.
Démarrage de la configuration de la chaîne d'outils CD
Démarrez la configuration de la chaîne d'outils CD en utilisant l'une des options suivantes :
Configurer le nom et la région de la chaîne d'outils du CD
Passez en revue les informations par défaut des paramètres de chaîne d'outils. Le nom de la chaîne d'outils l'identifie dans 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.
Choisissez la chaîne d'outils CI associée dans le menu déroulant pour copier une partie de la configuration CI afin de faciliter l'installation de cette chaîne d'outils CD.
Attention: Cette action risque d'écraser certaines des valeurs que vous avez déjà saisies.
Mise en place d'intégrations d'outils de CD
Si vous avez déjà établi un lien avec une chaîne d'outils CI existante lors de l'étape de bienvenue, les noms des dépôts liés à l'application qui sont utilisés dans cette chaîne d'outils sont pré-remplis. Passez en revue les URL de référentiel, puis passez aux étapes suivantes.
Référentiels liés à l'application
Si vous souhaitez mettre en place votre chaîne d'outils CD à partir de zéro, configurez ces dépôts lors de la création de la chaîne d'outils CI, puis utilisez-les ou créez des liens vers eux ici.
Pour récupérer le site URL, allez dans le CI Pipeline, sélectionnez la carte d'outils correspondante. Cliquez avec le bouton droit de la souris sur la carte d' outils et sélectionnez Copier l'adresse du lien.
- Inventaire: Le référentiel d'inventaire enregistre les détails des artefacts construits par les pipelines CI et CD. Par exemple,
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-inventory - Problèmes: Le référentiel des problèmes enregistre les problèmes détectés pendant le fonctionnement du pipeline de CI. Par exemple,
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-issues. - Preuve : Ce référentiel regroupe toutes les preuves de conformité brutes qui appartiennent à l'application. Par exemple,
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-evidence.
La chaîne d'outils ne prend actuellement en charge que les liens vers les référentiels Git Repos and Issue Tracking hébergés par IBM.
Inventaire Ansible
Référentiel URL: URL du référentiel d'inventaire qui est configuré dans votre chaîne d'outils CI comme capturé dans l'étape précédente.
Problèmes
Référentiel URL: URL du référentiel des problèmes qui est configuré dans votre chaîne d'outils CI comme capturé dans l'étape précédente.
Configuration de pipeline
Le référentiel de configuration de pipeline contient les fichiers YAML et les scripts nécessaires au déploiement, au test et à d'autres tâches personnalisées.
Pour ce tutoriel, le référentiel de configuration du pipeline est le même que celui défini pour le CI DevSecOps pour Infrastructure as Code ( IaC ). Sélectionnez Use existing deployment configuration repository et sélectionnez le référentiel utilisé pour la configuration du pipeline de la chaîne d'outils CI.
Pour plus d'informations sur les dépôts Git, consultez Configuration de votre Git Repos and Issue Tracking. Pour plus d'informations sur les scripts personnalisables, voir Scripts personnalisés.
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. Stockez ces secrets en toute sécurité dans un outil de gestion des secrets recommandé par IBM, tel que IBM Key Protect for IBM Cloud, IBM Cloud® Secrets Manager ou HashiCorp Vault. L'outil de gestion des secrets peut être intégré dans la chaîne d'outils afin que vous puissiez facilement référencer les secrets dans votre pipeline Tekton.
Ce tutoriel utilise IBM Cloud® Secrets Manager comme coffre-fort pour les secrets.
Stockage des preuves
Le casier à preuves stocke les preuves pour toutes les tâches exécutées par le pipeline. Ces éléments de preuve sont recueillis par la canalisation lors de son passage.
Sélectionnez le seau Cloud Object Storage (COS) configuré pour votre chaîne d'outils d'intégration continue (CI). Assurez-vous que le même panier de COS est utilisé dans les chaînes d'outils d'intégration continue (CI), Continuous Delivery (CD) et de conformité continue (CC).
Une bonne pratique consiste à utiliser un seau Cloud Object Storage pour stocker toutes les preuves et tous les artefacts collectés au cours de l'exécution du pipeline.
Pour plus d'informations sur le stockage des éléments de preuve, voir Éléments de preuve.
Preuve
Référentiel URL: URL du référentiel de preuves qui est configuré dans votre chaîne d'outils CI comme capturé dans l'étape précédente.
Compartiment cloud Object Storage
Pour utiliser cette fonctionnalité, vous devez disposer d'une instance Cloud Object Storage et d'un compartiment. Cliquez sur Utilisation des compartiments Cloud Object Storage comme coffre-fort de preuves pour créer une instance Cloud Object Storage. Pour plus d'informations sur la configuration d'un compartiment pouvant servir de coffre-fort de conformité, consultez la section Configuration de l' Object Storage-cloud pour le stockage des preuves.
- Les champs instance Cloud Object Storage, nom de la base de données et point de terminaison Cloud Object Storage sont automatiquement remplis.
- Saisir la clé API de l'identifiant de service
- 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.
Le champ "endpoint" est facultatif. Sélectionnez ou fournissez le point d'arrivée lors de la configuration de la chaîne d'outils ou lors de l'exécution du pipeline.
Cible de déploiement
Pour le cas d'utilisation DevSecOps for Terraform, choisissez l'option Custom deployment.
Cible personnalisée
Cette option requiert la clé API IBM Cloud utilisée dans les scripts de déploiement du pipeline. Les scripts de déploiement fournis utilisent Schematics pour télécharger l'artefact de configuration Terraform dans l'espace de travail Schematics
et utilisent les commandes Schematics CLI plan et apply pour livrer la configuration Terraform sur IBM Cloud.
Clé d'API IBM Cloud
La clé API permet d'interagir avec l'outil CLI de IBM Cloud dans plusieurs tâches :
- Préférable : Importer une clé existante à partir d'un coffre-fort de secrets en cliquant sur l'icône de la clé.
- Copier et coller une clé existante.
- Créez une clé en cliquant sur le bouton Nouveau +.
Enregistrez la clé API nouvellement générée dans un coffre-fort secret.
Gestion des demandes de changement
Utilisez un référentiel IBM Cloudhébergé par Git Repos and Issue Tracking pour gérer les demandes de changement. Pour plus d'informations, voir Automatisation de la gestion des changements.
DevOps chaîne d'outils insights
Lier une instance DevOps insights existante d'une autre chaîne d'outils à ce pipeline afin que tous les enregistrements de construction, de déploiement et de test des pipelines des chaînes d'outils CI et CD soient rassemblés au même endroit.
La chaîne d'outils CD peut publier les enregistrements de déploiement sur une instance existante de DevOps insights. Pour activer cette fonction, indiquez l'ID de la chaîne d'outils qui contient l'instance DevOps Insights existante en la sélectionnant dans le menu déroulant DevOps insights toolchain ID.
Outils facultatifs
Slack
Configurez l'outil Slack pour recevoir des notifications sur vos événements PR/CI Pipeline :
- Webhook Slack
- Préféré : Un webhook existant peut être importé à partir d'un coffre-fort de secrets en cliquant sur l'icône de la clé.
- Copier et coller un webhook existant.
- Canal Slack : envoyer un message à un canal Slack existant.
- Nom de l'équipe Slack : la phrase avant . slack.com dans notre équipe URL. Par exemple, si votre équipe URL est
https://team.slack.com, le nom de l'équipe est team. - Notifications automatisées sur Slack : Personnalisez votre sélection en choisissant les événements pour lesquels vous souhaitez recevoir des notifications.
Vous pouvez ajouter l'outil Slack après la création de la chaîne d'outils.
Après avoir créé votre chaîne d'outils, activez l'envoi de notifications avec la propriété d'environnement slack-notifications dans votre pipeline CD (0 = off, 1 = on)
Création de la chaîne d'outils CD
Sur la page Résumé, cliquez sur Créer et attendez que la chaîne d'outils soit créée.
Configurer les intégrations individuelles de la chaîne d'outils après la création du pipeline.
Exploration de la chaîne d'outils CD
Maintenant que la chaîne d'outils CD est créée, cliquez sur la carte cd-pipeline pour ouvrir et exécuter le pipeline de promotion.
Exécution du pipeline de promotion
Assurez-vous que le pipeline CI s'est déroulé correctement avant d'exécuter le pipeline de promotion.
Le pipeline de promotion crée une demande d'extraction avec le contenu de l'inventaire sur la branche Environnement source d'inventaire (par exemple : principale) qui cible la branche Environnement cible d'inventaire (par exemple, préproduction ou production).
- Dans le tableau de bord cd-pipeline, cliquez sur Exécuter le pipeline et sélectionnez le déclencheur de promotion manuelle. Cliquez sur Exécuter pour déclencher le pipeline.
- Attendez la fin de l'exécution du pipeline de promotion et vérifiez le journal d'exécution.
- Une fois que le pipeline de promotion s'est achevé avec succès, le journal des tâches
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>.
-
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) Une des priorités suivantes : critique, élevée, modérée, faible, planification.
- Change Request assignee: (obligatoire) email-id de l'assigné.
- Description supplémentaire: Description des modifications apportées à la demande.
- Objet: Objet des modifications apportées à l'application.
- Explication de l'impact: Impact du changement sur le comportement de l'application ou sur l'environnement.
- Plan d'annulation: Etapes d'annulation en cas d'échec du déploiement.
-
Complétez les champs de la demande de retrait et cliquez sur enregistrer.
-
Ajoutez l'étiquette
EMERGENCYà votre PR si les contrôles de conformité de l'IC ont échoué et que vous souhaitez poursuivre le déploiement -
Fusionnez la demande d'extraction depuis Git Repos and Issue Tracking.
Les détails de la demande de retrait sont utilisés par le pipeline de CD pour créer une demande de changement dans le référentiel de gestion des demandes de changement pendant l'exécution du pipeline de CD.
Configurer le pipeline CD
variables terraform
Pour ce tutoriel, indiquez le nom de l'instance de protection des clés à créer dans l'environnement de production.
Pour ce faire, sélectionnez Propriétés de l'environnement dans la cd-pipeline et cliquez sur Ajouter.
Ajouter une propriété de type Text Value et nommée TF_VAR_key_protect_instance. Définir une valeur significative qui indique la livraison à l'environnement de production, par exemple key-protect-production-202210191453.
La valeur de cette propriété d'environnement est injectée comme valeur de la variable de configuration key_protect_instance terraform.
Vous devez également configurer le fournisseur IBM Cloud pour Terraform avec le ibmcloud_api_key approprié qui s'authentifie avec le IBM Cloud comme décrit dans Configuration du plug-in IBM Cloud Provider
Ajouter une propriété de type Secure Value et nommée TF_VAR_ibmcloud_api_key. Définir la valeur de la clé api à utiliser pour la création des ressources IBM Cloud.
L'exemple utilisé dans ce tutoriel nécessite un resource_group pour créer l'instance KeyProtect. Le nom par défaut de resource_group est Default. Si cela ne convient pas à votre compte, remplacez la
variable par défaut resource_group dans le fichier variables.tf ou spécifiez la valeur de la variable resource_group à utiliser en définissant la propriété d'environnement TF_VAR_resource_group avec le nom du groupe de ressources approprié.
Branche de configuration du pipeline
La branche du référentiel de configuration du pipeline est définie par défaut comme master dans les propriétés de l'environnement CD Pipeline. Changez la branche en main pour ce tutoriel.
Pour ce faire, sélectionnez Environment Properties dans cd-pipeline et cliquez sur edit pour changer la valeur en main
Exécution du pipeline CD
Démarrer un pipeline de CD de l'une des manières suivantes :
- Préférable : déclencher manuellement le pipeline de CD.
- Facultatif : automatiquement après chaque action
Mergedans le référentiel d'inventaire. Un déclencheur Git Repos and Issue Tracking est configuré pour déclencher automatiquement le CD Pipeline, mais il est désactivé par défaut.
Vous pouvez également déclencher manuellement le pipeline CD à tout moment, mais s'il n'y a pas de changement depuis le dernier déploiement réussi, le pipeline CD s'interrompt prématurément car il n'y a rien à déployer. Vous pouvez ajouter
et utiliser la variable force-redeploy pour réexécuter le CD sans modifier le code.
Une exécution de pipeline de CD réussie se présente comme suit :
Après une exécution réussie du pipeline CD, vous pouvez trouver le service d'instance KeyProtect dans la liste des ressources.
