Présentation de Cloud Deploy

Cloud Deploy est un service géré qui automatise la diffusion de vos applications dans une série d'environnements cibles selon une séquence de promotions définie. Lorsque vous souhaitez déployer votre application mise à jour, vous devez créer une version, dont le cycle de vie est géré par un pipeline de diffusion.

Fonctionnement d'un pipeline Cloud Deploy

Le pipeline de diffusion Cloud Deploy contient les informations suivantes :

  • Un nom, que vous utilisez lorsque vous faites référence au pipeline de diffusion, et une description.

  • La séquence de promotion, qui décrit l'ordre dans lequel effectuer le déploiement sur les cibles configurées.

  • Des libellés et des annotations (facultatif).

  • Les définitions de cibles elles-mêmes (facultatif).

Les cibles peuvent être définies dans le même fichier de configuration du pipeline de diffusion, ou dans un ou plusieurs fichiers distincts. Plusieurs pipelines de diffusion peuvent utiliser la même cible ou les mêmes cibles, mais une cible donnée ne peut être utilisée qu'une seule fois dans un pipeline de diffusion donné.

Processus de diffusion Cloud Deploy

Vous trouverez ci-dessous une description d'un scénario de diffusion continue Cloud Deploy.

  1. Vous définissez votre pipeline de diffusion dans un fichier de configuration YAML.

    Ce fichier de configuration définit la séquence de promotion dans laquelle déployer votre application vers une série de cibles.

    Vous avez également besoin d'une configuration pour Skaffold, dont Cloud Deploy a besoin pour effectuer des opérations de rendu et de déploiement.

  2. Vous définissez vos cibles dans le fichier de configuration du pipeline ou dans un ou plusieurs fichiers distincts.

  3. Vous enregistrez votre pipeline auprès du service Cloud Deploy.

    Maintenant que le service connaît votre application, il gère le déploiement vers des cibles en fonction de votre séquence de promotion définie.

  4. La sortie de votre processus CI inclut un appel à Cloud Deploy pour lancer votre pipeline de diffusion.

    Cet appel crée une ressource release, représentant le fichier manifeste généré pour chaque cible, chacune étant générée à l'aide de la source de rendu fournie, skaffold.yaml, et des références aux images de conteneur spécifiques à déployer. Pour ce premier appel visant à créer une version, Cloud Deploy crée automatiquement une ressource rollout, qui associe la version au premier environnement cible. En fonction de ce déploiement, votre application est déployée sur la première cible.

    Vous pouvez utiliser n'importe quel outil CI, à condition qu'il génère une ou plusieurs images de conteneur à fournir à votre pipeline de diffusion Cloud Deploy.

    De plus, l'appel de création d'une version et d'invocation d'un pipeline de diffusion ne doit pas nécessairement provenir de l'outil de CI. Il peut provenir d'un script ou de tout système répondant à l'achèvement du processus CI.

  5. Lorsque vous êtes prêt à déployer votre application sur la cible suivante, vous appelez Cloud Deploy pour la promouvoir.

    Dans chaque cas, l'appel à invoquer la promotion entraîne la création d'un déploiement par Cloud Deploy.

  6. La promotion se poursuit sur toutes les cibles de votre séquence de promotion, dont la dernière est prod (ou le nom que vous utilisez pour votre cible finale afin de mettre l'application en production).

    Le processus de création et de promotion de versions est décrit plus en détail dans Architecture du service Cloud Deploy.

Tout au long de l'exécution du pipeline, Cloud Deploy collecte des métriques et des informations d'audit.

Promotion

Promouvoir une version consiste à la déployer sur la cible suivante de la séquence de promotion définie dans votre pipeline. Le premier appel à Cloud Deploy crée une release, puis une ressource rollout qui est utilisée pour effectuer le déploiement sur la première cible de la séquence de promotion. Chaque appel suivant visant à promouvoir la version entraîne un déploiement sur la cible suivante.

Approbations

Vous pouvez spécifier qu'une approbation est requise pour la promotion vers n'importe quelle cible. Par exemple, vous pouvez exiger une approbation pour la promotion vers une cible de production. Pour exiger une approbation pour une cible, définissez la propriété requireApproval dans la définition de la cible.

Lorsqu'une cible nécessite une approbation, Cloud Deploy génère un message Pub/Sub qui peut être consommé par un système intégré. Par exemple, un système de gestion des tickets peut s'abonner au message pour lancer un workflow d'approbation.

Consultez Exiger une approbation pour en savoir plus sur les promotions et la gestion des approbations pour les promotions.

Notifications

Cloud Deploy fournit des notifications Pub/Sub pour les événements suivants :

  • Rendu : démarrage, réussite et échec
  • Déploiement : démarrage, réussite et échec
  • Approbation requise
  • Approbation acceptée
  • Approbation refusée

Cloud Deploy utilise un sujet Pub/Sub pour envoyer ces notifications.

Pour en savoir plus, consultez Utiliser les notifications Cloud Deploy.

Rollbacks

Cloud Deploy permet d'effectuer un rollback de votre application déployée dans n'importe quelle cible. Un rollback dans Cloud Deploy consiste à déclencher un déploiement par rapport à la dernière version déployée avec succès. Le nouveau déploiement utilise les mêmes paramètres que ceux utilisés lors de ce déploiement réussi.

Pour en savoir plus, consultez Effectuer un rollback d'un déploiement.

À propos de Skaffold et Cloud Deploy

Cloud Deploy utilise Skaffold pour le rendu, le déploiement, et la validation. Avec Skaffold, vous pouvez également connecter votre boucle de développement local à un pipeline de diffusion continue Cloud Deploy.

Pour en savoir plus sur l'intégration de Cloud Deploy à Skaffold, consultez la présentation de Skaffold.

Cloud Deploy avec d'autres Google Cloud outils

Cloud Deploy est compatible avec presque tous les outils en amont d'un pipeline CI/CD. Autrement dit, vous pouvez utiliser n'importe quel environnement de développement et dépôt de code source, n'importe quel système d'intégration continue (CI) et n'importe quel dépôt d'artefacts.

En aval, Cloud Deploy effectue le déploiement sur Cloud Run et Google Kubernetes Engine, y compris les clusters GKE associés.

Si vous avez principalement utilisé des Google Cloud outils, votre flux source-production se présenterait comme suit :

  1. Utilisez Cloud Code pour créer la source de votre application.

    Cloud Code étend plusieurs IDE populaires (VS Code, IntelliJ, Cloud Shell) pour faciliter la création d'applications à déployer et à exécuter sur Google Cloud.

  2. Utilisez Skaffold pour gérer votre boucle de développement local.

    Cloud Deploy utilise Skaffold, via Cloud Build, pour générer et déployer vos fichiers manifestes. Cette intégration signifie que vous devez conserver un fichier skaffold.yaml, mais ne signifie pas que vous devez intégrer Skaffold à votre flux de développement local. Vous pouvez toutefois en profiter pour le développement continu.

  3. Créez votre application à l'aide de Cloud Build.

    Cloud Build vous permet de configurer un pipeline d'intégration continue qui peut être déclenché à partir d'un commit dans votre dépôt de code source. La sortie de Cloud Build sera des artefacts, y compris des images de conteneur déployables. Vous pouvez ajouter un appel à Cloud Deploy pour créer une version et appeler votre pipeline de diffusion.

  4. Stockez vos artefacts dans Artifact Registry.

    Cloud Deploy récupère l'image ou les images de conteneur à partir de Artifact Registry, ce qui vous permet de stocker de manière centralisée les artefacts et les dépendances.

  5. Configurez votre pipeline de diffusion dans Cloud Deploy pour qu'il prenne l'image de conteneur et la déploie dans une progression de n cibles.

    Les cibles identifiées dans votre pipeline de diffusion représentent des clusters GKE, des services ou des tâches Cloud Run, ou des clusters GKE associés dans lesquels votre application est finalement déployée.

  6. Gérez votre application sur GKE ou Cloud Run.

    GKE est l' Google Cloud environnement géré permettant d'exécuter des applications conteneurisées sur Kubernetes.

    Avec Cloud Run, vous pouvez exécuter des conteneurs dans un environnement sans serveur.

    Les clusters GKE associés offrent une expérience de développement et d'exploitation cohérente pour les environnements cloud et sur site.

  7. Surveillez les performances de votre application à l'aide de Google Cloud Observability.

    Google Cloud Observability propose une surveillance et une journalisation intégrées pour votre application.

Étape suivante