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 dans une séquence de promotion définie. Lorsque vous souhaitez déployer votre application mise à jour, vous devez créer une version, dont le lifecycle est géré par un pipeline de diffusion.

Fonctionnement d'un pipeline Cloud Deploy

Le pipeline de livraison Cloud Deploy contient les informations suivantes:

  • Un nom, que vous utiliserez en référence au pipeline de livraison, et une description.

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

  • Libellés et annotations (facultatif)

  • De plus, les définitions de cible elles-mêmes (facultatif)

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

Processus de diffusion de Cloud Deploy

Vous trouverez ci-dessous une description de ce qui se passe dans un scénario de livraison continue Cloud Deploy simple.

  1. Vous définissez votre pipeline de livraison 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. Le résultat de votre processus d'intégration continue inclut un appel à Cloud Deploy pour lancer votre pipeline de livraison.

    Cet appel crée une ressource release représentant le fichier manifeste affiché pour chaque cible. Chacune d'elles est générée à l'aide de la source de rendu fournie, du fichier skaffold.yaml et des références à des images de conteneurs spécifiques à déployer. Pour ce premier appel afin de 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 d'intégration continue, à condition qu'il génère une ou plusieurs images de conteneur à fournir à votre pipeline de livraison 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, appelez Cloud Deploy pour la promouvoir.

    Dans chaque cas, l'appel pour appeler la promotion force Cloud Deploy à créer un déploiement.

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

    Le processus de création et de promotion d'une version est décrit plus en détail dans la section Architecture du service Cloud Deploy.

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

Promotion

La promotion d'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 un objet release, puis une ressource rollout qui est utilisé pour le déploiement sur la première cible de la séquence de promotion. Chaque appel ultérieur pour promouvoir la version entraîne un déploiement vers la cible suivante.

Approbations

Vous pouvez spécifier qu'une approbation est nécessaire pour diffuser une promotion auprès de n'importe quelle cible. Par exemple, vous pouvez souhaiter exiger une approbation pour la promotion d'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 utilisé par un système intégré. Par exemple, un système de tickets peut s'abonner au message pour lancer un flux de travail d'approbation.

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

Notifications

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

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

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

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

Rollbacks

Cloud Deploy est compatible avec le rollback de votre application déployée dans n'importe quelle cible. Dans Cloud Deploy, un rollback consiste à déclencher un déploiement sur 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 la réussite du déploiement.

Pour en savoir plus, consultez la section Effectuer le 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 facilement votre boucle de développement local à un pipeline de livraison 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 outils Google Cloud

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 Google Kubernetes Engine, Cloud Run et GKE Enterprise.

Si vous avez principalement utilisé des outils Google Cloud, votre flux source à production ressemblerait à ceci:

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

    Cloud Code étend plusieurs IDE courants (VS Code, IntelliJ, Cloud Shell) afin de 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 afficher et déployer vos fichiers manifestes. Cette intégration signifie que vous devez conserver un fichier skaffold.yaml, mais cela ne signifie pas que vous devez intégrer Skaffold à votre flux de développement local. Mais vous pouvez en profiter pour le développement continu.

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

    Cloud Build vous permet de configurer un pipeline CI qui peut être déclenché à partir d'un commit dans votre dépôt de code source. Le résultat de Cloud Build sera constitué d'artefacts, y compris d'images de conteneurs déployables. Vous pouvez ajouter un appel à Cloud Deploy pour créer une version et appeler votre pipeline de livraison.

  4. Stockez vos artefacts dans Artifact Registry.

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

  5. Configurez votre pipeline de livraison dans Cloud Deploy pour prendre l'image de conteneur et la déployer avec une progression de n cibles.

    Chacune des cibles identifiées dans votre pipeline de livraison représente un cluster GKE, Cloud Run ou un cluster GKE dans lequel votre application est déployée.

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

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

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

    GKE Enterprise offre une expérience de développement et d'exploitation cohérente dans les environnements cloud et sur site.

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

    L'observabilité Google Cloud offre des fonctionnalités de surveillance et de journalisation intégrées pour votre application.

Étapes suivantes