Pipeline CI/CD pour le développement et la livraison d'applications en conteneur

Last reviewed 2022-11-18 UTC

Ce document décrit un ensemble intégré d'outils Google Cloud permettant de configurer un système de développement, d'intégration continue (CI) et de livraison continue (CD) qui vous permet de développer et de déployer des applications sur Google Kubernetes Engine (GKE). Ce document d'architecture de référence est destiné à la fois aux développeurs logiciels et aux opérateurs. Nous partons du principe que vous savez exécuter des commandes gcloud sur Google Cloud et déployer des conteneurs d'applications sur GKE.

Architecture

Le schéma suivant montre les ressources utilisées dans cette architecture :

Développer et déployer un système avec Cloud Code, Cloud Build, Artifact Registry, Cloud Deploy et GKE

Cette architecture comprend les composants suivants :

  1. Cloud Code en tant qu'espace de travail de développement. Dans le cadre de cet espace de travail, vous pouvez voir les modifications apportées au cluster de développement, qui s'exécute sur minikube. Vous exécutez Cloud Code et le cluster Minikube dans Cloud Shell. Cloud Shell est un environnement de développement en ligne accessible depuis votre navigateur. Il dispose de ressources de calcul, de mémoire, d'un environnement de développement intégré (IDE) et de Cloud Code.
  2. Cloud Build, pour la création et le test de l'application (la partie "CI" du pipeline)

    Cette partie du pipeline comprend les actions suivantes :

    • Cloud Build surveille les modifications apportées au dépôt source à l'aide d'un déclencheur Cloud Build.
    • Lorsqu'une modification est validée dans la branche principale, le déclencheur Cloud Build effectue les opérations suivantes :
      • Recompile le conteneur d'applications.
      • Place des artefacts de build dans un bucket Cloud Storage.
      • Place le conteneur d'applications dans Artifact Registry.
      • Exécute des tests sur le conteneur.
      • Il appelle Cloud Deploy pour déployer le conteneur dans l'environnement de préproduction. Dans cet exemple, l'environnement de préproduction est un cluster Google Kubernetes Engine.
    • Si la compilation et les tests sont réussis, vous pouvez utiliser Cloud Deploy pour promouvoir le conteneur de la préproduction à la production.
  3. Cloud Deploy pour gérer le déploiement : la partie "CD" du pipeline. Dans cette partie du pipeline, Cloud Deploy effectue les opérations suivantes :

    • Enregistre un pipeline de diffusion et des cibles. Les cibles représentent les clusters de préproduction et de production.
    • Crée un bucket Cloud Storage et stocke la source de rendu Skaffold et les fichiers manifestes rendus dans ce bucket.
    • Génère une nouvelle version pour chaque modification du code source.
    • Déploie l'application dans l'environnement de production. Pour ce déploiement en production, un opérateur (ou une autre personne désignée) approuve manuellement le déploiement. Dans cette architecture, l'environnement de production est un cluster Google Kubernetes Engine.

Dans cette architecture, la configuration est partagée entre les environnements de développement, de préproduction et de production via Skaffold, un outil de ligne de commande qui facilite le développement continu pour les applications natives Kubernetes.

Google Cloud stocke le code source de l'application dans GitHub.

Cette architecture utilise les produits Google Cloud pour la plupart des composants du système, et Skaffold pour permettre l'intégration du système. Skaffold étant une solution Open Source, vous pouvez appliquer ces principes pour créer un système similaire en combinant des composants Google Cloud avec des composants tiers ou développés en interne. La modularité de cette solution signifie que vous pouvez l'adopter de manière incrémentielle dans le cadre de votre pipeline de développement et de déploiement.

Cas d'utilisation

Voici les principales fonctionnalités de ce système intégré :

  • Développer et déployer des applications plus rapidement.

    La boucle de développement est efficace, car vous pouvez valider les modifications dans l'espace de travail du développeur. Le déploiement est rapide, car le système CI/CD automatisé et la parité des différents environnements vous permettent de détecter plus de problèmes lorsque vous déployez des modifications en production.

  • Bénéficier d'une parité accrue entre le développement, la préproduction et la production.

    Les composants de ce système utilisent un ensemble commun d'outils Google Cloud.

  • Réutiliser des configurations dans les différents environnements.

    Cette réutilisation est effectuée avec Skaffold, qui permet d'utiliser un format de configuration commun pour différents environnements. Il permet également aux développeurs et aux opérateurs de mettre à jour et d'utiliser la même configuration.

  • Appliquer la gouvernance dès le début du workflow.

    Ce système applique des tests de validation pour la gouvernance en production ainsi que dans le système CI et l'environnement de développement. L'application de la gouvernance dans l'environnement de développement permet d'identifier et de résoudre les problèmes plus tôt.

  • Laissez des outils avisés gérer pour vous la livraison logicielle.

    La livraison continue est entièrement gérée, en séparant les étapes de votre pipeline CD des détails de rendu et de déploiement.

Déploiement

Pour déployer cette architecture, consultez la section Développer et déployer des applications conteneurisées à l'aide d'un pipeline CI/CD.

Étapes suivantes