Répondant parfaitement à l’objectif d’agilité dans la conception d’application, le processus d’intégration et de livraison continues prend de plus en plus d’ampleur. Mais si le principe CI/CD a démontré son efficacité au fil du temps, c’est en partie grâce aux outils qui rendent possible ce déploiement continu. Parmi ces outils, on retrouve GCP Cloud Deploy. Découvrez son fonctionnement.
Tout savoir de GCP Cloud Deploy
GCP Cloud Deploy est l’un des nombreux services de la Google Cloud Platform. L’objectif est alors de déployer automatiquement un nouveau code en production. Ainsi, l’ensemble des tâches liées au cycle de publication d’une application ou d’un logiciel dans l’environnement de production sont automatisées selon des séquences définies. Et ce, sans intervention humaine. Ce service s’inscrit pleinement dans le mouvement DevOps qui implique une intégration et un déploiement continus (CI/CD).
Bon à savoir : Cloud Deploy permet de créer des pipelines de déploiement pour GKE, Anthos et Cloud Run.
Comment déployer une application avec Cloud Deploy ?
Dès lors qu’un DevOps apporte des modifications à une application, il doit transférer le nouveau code au sein du Cloud Source Repositories. Pour que ces modifications soient prises en compte dans la version finale de l’application, il doit d’abord créer une première version de cette mise à jour. C’est à cet instant qu’intervient Google Cloud Deploy qui va gérer son cycle de vie par un pipeline de diffusion.
La définition du pipeline de livraison et des cibles
Le pipeline de diffusion contient plusieurs éléments indispensables pour le déploiement d’une application. À savoir :
- Le nom et la description: c’est indispensable pour faire référence au pipeline.
- La séquence de promotion: il s’agit de définir l’ordre dans lequel toutes les actions de déploiement seront effectuées.
- Les cibles: ce sont les environnements dans lesquels l’application va se déployer. Par exemple, développement (Dev), contrôle qualité (QA) et production (Prod). Ces cibles sont associées à un cluster Anthos, GKE ou Cloud Run.
Bon à savoir : Plusieurs pipelines peuvent utiliser la même cible. Mais une même cible ne peut être intégrée qu’une seule fois dans chaque pipeline. Par ailleurs, un pipeline peut générer plusieurs versions et utiliser plusieurs cibles.
La définition du pipeline de diffusion s’effectue dans le fichier de configuration YAML. Il détermine alors l’ensemble des éléments du pipeline. Il faut également une configuration pour Scaffold. Ce fichier permet au service GCP Cloud Deploy d’effectuer des opérations de rendu et de déploiement.
À ce stade, vous ne travaillez pas encore sur Google Cloud Deploy, mais sur Cloud Build. C’est pourquoi, il convient de l’enregistrer auprès du service Cloud Deploy. Cela permettra ainsi de gérer le déploiement vers les environnements cibles, selon la séquence définie.
L’appel au release
Dans un premier temps, l’objectif est de créer une version des modifications apportées à l’application ou au logiciel. Pour cela, vous devez appeler Cloud Deploy via la console GCP ou l’API, et lui transmettre les artefacts de compilation ainsi que les références à des images de conteneurs spécifiques.
Dès lors, GCP Cloud Deploy stocke une instance de pipeline dans le cadre de la version. Ensuite, il appelle les fichiers de configuration YALM et Skaffold stockés dans le cloud storage. C’est ce qui lui permet alors de créer une ressource release. Il s’agit d’un fichier manifeste pour chaque environnement.
L’appel au rollout
- Des phases: c’est un sous-message du déploiement. Il existe donc plusieurs phases au sein même du pipeline de livraison.
- Des tâches: ce sont les opérations spécifiques pour garantir le déploiement de l’application. Au sein d’une phase, il existe une ou plusieurs tâches.
- Des exécutions de tâches: ce sont les instances des tâches. Par exemple, une tentative de déploiement, un déploiement, une validation, une tentative de validation, etc.
Tous ces éléments ont été préalablement définis dans la séquence de promotion.
L’objectif du rollout est d’associer la version au premier environnement cible. Ce faisant, l’application modifiée est déployée sur cette première cible.
Pour effectuer ces différentes opérations, il est possible d’utiliser n’importe quel outil CI capable de générer des images Docker.
La promotion de l’application
Le déploiement de l’application sur les autres environnements cibles implique un appel à promotion. C’est-à-dire, la réalisation de toutes les séquences définies en amont.
Pour chaque nouvelle promotion, l’application est déployée sur l’environnement suivant. Et ce, jusqu’au dernier environnement cible (prod). Autrement dit, la mise en production de l’application finale.
Les autres tâches exécutées par GCP Cloud Deploy
- Les approbations: pour promouvoir un pipeline dans une nouvelle cible, il est possible d’exiger certaines autorisations. Pour cela, il faut généralement passer par la plateforme IAM (Identify and Access Management).
- Les notifications: afin de faciliter le travail des DevOps, Cloud Deploy envoie plusieurs notifications aux DevOps dès lors que certains événements se réalisent, comme le rendu, le déploiement, les approbations (requises, approuvées ou refusées). Pour transmettre ces notifications, le service Pub/Sub est utilisé.
- Les rollback: l’idée est alors de déclencher un déploiement sur la dernière version
Il s’agit là d’une explication simplifiée du déploiement d’applications dans GCP Cloud Deploy. Si vous souhaitez aller plus loin dans la maîtrise de cet outil, il est indispensable de se former. Pour cela, il y a DataScientest. À travers notre formation DevOps, vous apprendrez tout ce qu’il faut savoir sur le processus CI/CD et l’utilisation de ces outils.
Ce qu’il faut retenir :
- GCP Deploy gère entièrement le processus de déploiement, favorisant ainsi l’intégration et la livraison continues.
- Pour utiliser cet outil, les DevOps doivent d’abord définir le pipeline de diffusion en spécifiant son nom, sa description, la séquence de promotion et les environnements cibles.
- Dès lors, le processus de déploiement pourra être enclenché en trois phases : le release, le rollout et la promotion.