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 livraison Cloud Deploy contient les informations suivantes :

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

  • Séquence de promotion décrivant l'ordre dans lequel effectuer le déploiement vers les cibles configurées.

  • Libellés et annotations (facultatif)

  • Également, 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 livraison 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 livraison donné.

Processus de diffusion Cloud Deploy

Vous trouverez ci-dessous une description de ce qui se passe dans un scénario de diffusion 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. La sortie de votre processus CI inclut un appel à Cloud Deploy pour lancer votre pipeline de diffusion.

    Cet appel crée une ressource release, qui représente le fichier manifeste rendu pour chaque cible. Chacune d'elles est générée à l'aide de la source de rendu fournie, skaffold.yaml, et des références à des 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 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, 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 des 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 détails d'audit.

Promotion

Promouvoir une version signifie 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 ressource release, puis une ressource rollout qui est utilisée pour le déploiement sur la première cible de la séquence de promotion. Chaque appel suivant pour 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 billetterie peut s'abonner au message pour lancer un workflow d'approbation.

Pour en savoir plus sur les promotions et la gestion de leur approbation, consultez Demander une approbation.

Notifications

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

  • Rendu : début, réussite et échec
  • Déploiement : début, 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 Utiliser les notifications Cloud Deploy.

Rollbacks

Cloud Deploy permet d'annuler le déploiement de votre application dans n'importe quelle cible. Dans Cloud Deploy, un rollback 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 du déploiement réussi.

Pour en savoir plus, consultez Restaurer 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 locale à 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-to-prod se présente 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 surGoogle 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 gérer un fichier skaffold.yaml, mais ne signifie pas que vous devez intégrer Skaffold à votre workflow de développement local. Toutefois, vous pouvez en profiter pour le développement continu.

  3. Compilez 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. La sortie de Cloud Build sera constituée d'artefacts, y compris des 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, 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.

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

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

    GKE est l'environnementGoogle Cloud géré pour exécuter des applications en conteneur sur Kubernetes.

    Cloud Run vous permet d'exécuter des conteneurs dans un environnement sans serveur.

    GKE Enterprise offre 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.

Étapes suivantes