Développer et déployer des applications conteneurisées à l'aide d'un pipeline CI/CD

Last reviewed 2022-11-18 UTC

Ce déploiement explique comment configurer et utiliser un système de développement, d'intégration continue (CI) et de livraison continue (CD) grâce à un ensemble intégré d'outils Google Cloud. Vous pouvez utiliser ce système pour développer et déployer des applications sur Google Kubernetes Engine (GKE).

Ce guide explique comment créer l'architecture décrite dans la section Pipeline de déploiement pour le développement et la livraison d'applications en conteneur.

Ce guide de déploiement est destiné à la fois aux développeurs logiciels et aux opérateurs, et vous jouez les rôles suivants au fur et à mesure que vous le terminez:

  • Vous agirez d'abord en tant qu'opérateur pour configurer le pipeline CI/CD. Les principaux composants de ce pipeline sont Cloud Build, Artifact Registry et Cloud Deploy.
  • Vous agirez ensuite en tant que développeur pour modifier une application en utilisant Cloud Code. En agissant en tant que développeur, vous pourrez témoigner de l'expérience intégrée fournie par ce pipeline.
  • Enfin, vous agirez à nouveau en tant qu'opérateur afin de suivre les étapes permettant de déployer une application en production.

Dans ce déploiement, 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 ce guide de déploiement :

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

Pour en savoir plus sur les composants utilisés dans cette architecture, consultez la page Pipeline de déploiement pour le développement et la livraison d'applications en conteneur.

Objectifs

En tant qu'opérateur, vous devez effectuer les actions suivantes :

  • Configurer le pipeline CI et le pipeline CD. Cette configuration comprend les éléments suivants :
    • Configurer les autorisations requises.
    • Créer les clusters GKE pour les environnements de préproduction et de production.
    • Créer un dépôt dans Cloud Source Repositories pour le code source.
    • Créer un dépôt dans Artifact Registry pour le conteneur d'applications.
    • Créer un déclencheur Cloud Build sur le dépôt GitHub principal.
    • Créer un pipeline de diffusion et des cibles Cloud Deploy Les cibles sont l'environnement de préproduction et l'environnement de production.
  • Démarrer le processus CI/CD pour le déployer en préproduction, puis passez-le en production.

En tant que développeur, vous apportez des modifications à l'application. Pour ce faire, vous devrez effectuer les actions suivantes :

  • Cloner le dépôt pour travailler avec un environnement de développement préconfiguré.
  • Apporter une modification à l'application dans votre espace de travail de développement.
  • Compiler et tester la modification. Les tests incluent un test de validation de gouvernance.
  • Afficher et valider la modification dans un cluster de développement. Ce cluster s'exécute sur Minikube.
  • Effectuer un commit de la modification dans le dépôt principal.

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.

Avant de commencer

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  3. Enable the Artifact Registry, Cloud Build, Cloud Deploy, Cloud Source Repositories, Google Kubernetes Engine, Resource Manager, and Service Networking APIs.

    Enable the APIs

  4. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

Préparer votre environnement

Dans cette section, vous agissez en tant qu'opérateur d'application et effectuez les opérations suivantes :

  • Configurer les autorisations requises.
  • Créer les clusters GKE pour les environnements de préproduction et de production.
  • Cloner le dépôt source.
  • Créer un dépôt dans Cloud Source Repositories pour le code source.
  • Créer un dépôt dans Artifact Registry pour l'application de conteneurs.

Configurer les autorisations

Dans cette section, vous accordez les autorisations nécessaires pour configurer le pipeline CI/CD.

  1. Si vous utilisez une nouvelle instance de l'éditeur Cloud Shell, spécifiez le projet à utiliser pour ce guide de déploiement :

    gcloud config set project PROJECT_ID
    

    Remplacez PROJECT_ID par l'ID du projet que vous avez sélectionné ou créé pour ce guide de déploiement.

    Si une boîte de dialogue s'affiche, cliquez sur Autoriser.

  2. Assurez-vous que le compte de service Compute Engine par défaut dispose des autorisations suffisantes pour exécuter des tâches dans Cloud Deploy et extraire des conteneurs à partir d'Artifact Registry. Cloud Build et Cloud Deploy utilisent ce compte de service par défaut.

    Ce compte de service dispose peut-être déjà des autorisations nécessaires. Cette étape garantit que les autorisations nécessaires sont accordées pour les projets qui désactivent l'attribution automatique de rôles pour les comptes de service par défaut.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
        --role="roles/clouddeploy.jobRunner"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
        --role="roles/artifactregistry.reader"
    
  3. Accordez au compte de service Cloud Build le droit d'appeler les déploiements avec Cloud Deploy, et de mettre à jour le pipeline de diffusion et les définitions cibles :

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
        --format="value(