Avec Cloud Deploy, vous pouvez déployer votre application sur une cible configurée pour représenter plusieurs cibles, et votre application est déployée en parallèle (simultanément) sur ces cibles. La cible que vous identifiez en tant qu'étape dans votre pipeline est appelée multi-target, et les cibles comprenant plusieurs cibles sont appelées cibles enfants.
Vous pouvez utiliser le déploiement parallèle avec n'importe quel type de cible compatible avec Cloud Deploy, y compris Google Kubernetes Engine, Cloud Run et GKE Enterprise.
Pourquoi déployer en parallèle
Vous pouvez utiliser le déploiement parallèle, par exemple, pour déployer votre application sur plusieurs cibles de production. Dans ce cas, vous n'avez pas besoin d'effectuer le déploiement sur chaque cible à la suite, car il n'y a pas de progression (par exemple, du développement à la préproduction, puis à la production).
Et ce déploiement parallèle peut faire partie d'une progression normale du pipeline de livraison:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...]
.
Ressources Cloud Deploy utilisées pour le déploiement en parallèle
Le déploiement parallèle utilise les ressources spécialisées Cloud Deploy suivantes:
multicibles
Une cible multicible est une cible configurée avec la propriété
multiTarget
, au niveau supérieur du fichier YAML de configuration cible. Au lieu de référencer le cluster ou le service d'exécution, elle fait référence à une ou plusieurs autres cibles à l'aide demultiTarget.targetIds
.Cibles enfants
Une cible enfant est une cible référencée par un multicible en tant que
multiTarget.targetIds
. L'enfant doit également faire référence à un type de cible compatible (Google Kubernetes Engine, GKE Enterprise ou Cloud Run).Déploiements de contrôleurs
Un déploiement de contrôleur est un déploiement qui correspond à la cible multicible.
Consultez la section Limites pour en savoir plus sur les actions autorisées et non autorisées lors d'un déploiement d'un contrôleur.
-
Pour en savoir plus sur les actions autorisées et non autorisées avec un déploiement enfant, consultez la section Limites.
Configurer un déploiement parallèle
La configuration d'un déploiement parallèle consiste à définir une cible multicible et le nombre de cibles enfants dont vous avez besoin (dans la limite). Les définitions des cibles sont les mêmes que pour toutes les cibles, à l'exception des suivantes:
- Les cibles multiples incluent la propriété
multiTarget
. - Les cibles enfants n'incluent pas la propriété
multiTarget
, mais sont référencées à partir de la cible multicible à l'aide de la propriétémultiTarget.targetIds
. - Vous pouvez configurer la cible multicible pour approbation, mais pas les cibles enfants, qui ne peuvent pas inclure
requireApproval:true
.
Les cibles multiples et les cibles enfants peuvent inclure des configurations d'environnement d'exécution personnalisées. Si une cible enfant ne spécifie pas d'environnement d'exécution, elle hérite de celui défini dans la définition multicible, ou de la cible par défaut. Pour en savoir plus, consultez la section Environnements d'exécution et déploiement en parallèle.
Configurer le ciblage multicible
Une cible multicible est une cible unique identifiée comme une étape de votre pipeline de livraison, mais pointant vers une ou plusieurs cibles enfants.
La configuration multicible inclut la propriété multiTarget
. Un emplacement multicible ne peut pas avoir les propriétés gke
, run
ou anthosCluster
.
La configuration d'une cible multicible est identique, quel que soit l'environnement d'exécution vers lequel vous effectuez le déploiement.
Dans le fichier YAML de votre pipeline de livraison ou dans un fichier YAML distinct, créez la définition de la cible de base, y compris multiTarget
:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: TARGET_NAME
description: TARGET_DESCRIPTION
multiTarget:
targetIds: [ CHILD_TARGET1, CHILD_TARGET2, CHILD_TARGETn ]
Dans ce fichier YAML...
TARGET_NAME est le nom de ce multicible, qui est utilisé dans la propriété
stages.targetId
de la définition du pipeline de livraison.CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn sont les noms des cibles enfants sur lesquelles ce multicible se déploie. Chaque nom correspond à la propriété
name
dans la définition de la cible enfant.
La présence de la propriété multiTarget.targetIds
rend cette cible multicible.
Configurer les cibles enfants
Pour chaque cible identifiée en tant qu'enfant dans votre configuration multicible, configurez une autre cible, en tant que cible enfant:
Dans le fichier YAML de votre pipeline de livraison ou dans un fichier YAML distinct, créez la définition de la cible de base:
GKE
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
gke:
cluster: projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME
Dans ce fichier YAML...
CHILD_TARGET1 est le nom de cette cible enfant. Le nom correspond à un membre de la liste des cibles de la propriété
multiTarget.targetIds
dans la définition multicible.La valeur de la propriété
gke.cluster
correspond au nom de ressource du cluster auquel cette cible fait référence, y compris l'ID du projet, la région et le nom du cluster.
Cette cible est configurée de la même manière qu'une cible GKE standard.
La seule chose qui en fait une cible enfant est qu'elle est référencée par la propriété multiTarget.targetIds
dans le multicible.
Cloud Run
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
run:
location: projects/PROJECT_ID/locations/REGION
Dans ce fichier YAML...
CHILD_TARGET1 est le nom de cette cible enfant. Le nom correspond à un membre de la liste des cibles de la propriété
multiTarget.targetIds
dans la définition multicible.La valeur de la propriété
run.location
correspond au nom de ressource du service Cloud Run auquel cette cible fait référence, y compris l'ID du projet et la région.
Cette cible est configurée de la même manière qu'une cible Cloud Run standard. La seule chose qui en fait une cible enfant est qu'elle est référencée par la propriété multiTarget.targetIds
dans le multicible.
GKE Enterprise
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
anthosCluster:
membership: projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME
Dans ce fichier YAML...
CHILD_TARGET1 est le nom de cette cible enfant. Le nom correspond à un membre de la liste des cibles de la propriété
multiTarget.targetIds
dans la définition multicible.MEMBERSHIP_NAME est le nom que vous avez choisi lorsque vous avez enregistré le cluster d'utilisateur GKE Enterprise dans un parc.
Cette cible est configurée de la même manière qu'une cible GKE Enterprise standard. La seule chose qui en fait une cible enfant est qu'elle est référencée par la propriété multiTarget.targetIds
dans le multicible.
Transmettre des paramètres de déploiement aux cibles
Vous pouvez différencier les cibles enfants en incluant des paramètres dans votre fichier manifeste et des valeurs dans la définition de votre pipeline de livraison. Ces valeurs peuvent être appliquées séparément aux fichiers manifestes distincts, en fonction de la correspondance des étiquettes avec les cibles correspondantes.
Par exemple, vous pouvez souhaiter un nombre différent d'instances répliquées pour chaque cible enfant. Pour ce faire, vous devez inclure les paramètres et les valeurs dans la progression du pipeline de livraison, ainsi que les étiquettes des cibles enfants à mettre en correspondance pour chaque paire paramètre-valeur.
En savoir plus sur les paramètres de déploiement
Créer la version
Une fois que vous avez configuré une cible multicible et des cibles enfants, créez le pipeline de livraison et les ressources cibles, puis créez une version, comme d'habitude.
Le cycle de vie du pipeline de livraison est le même que pour tout pipeline et toute cible Cloud Deploy, à la différence que lorsqu'il atteint l'étape avec la cible multicible, Cloud Deploy crée un déploiement du contrôleur pour la cible multicible et un déploiement enfant pour déployer l'application sur chaque cible enfant.
Les messages Pub/Sub en réponse aux opérations Cloud Deploy font la distinction entre les déploiements de contrôleurs et les déploiements enfants.
Limites
Une cible multicible ne peut pas comporter plus de 50 cibles enfants.
Toutes les cibles enfants d'une même cible multicible doivent avoir le même environnement d'exécution cible (toutes les ressources GKE ou GKE Enterprise, par exemple).
Dans un pipeline de livraison, une cible enfant ne peut avoir qu'un seul parent multicible.
Une cible multicible ne peut pas être sans enfant, et ne peut pas faire référence à elle-même ni à une autre multicible en tant que cibles enfants.
Vous ne pouvez pas utiliser une cible enfant plusieurs fois dans un même pipeline de livraison, mais vous pouvez les réutiliser dans un autre pipeline.
Les pools par défaut ont des limites de simultanéité, contrairement aux pools privés.
Lorsque vous effectuez un déploiement sur une cible multicible, tous les déploiements enfants sont déployés en même temps, jusqu'à la limite de simultanéité de Cloud Build. Si le nombre de cibles enfants dépasse cette limite, les tâches de déploiement de certaines cibles ne s'exécuteront que lorsque d'autres seront terminées. Dans ce cas, Cloud Deploy ne déploiera pas toutes les cibles enfants en même temps.
En outre, si les cibles incluent des tâches de vérification, il est possible qu'une ou plusieurs d'entre elles puissent démarrer avant que l'application n'ait été déployée sur toutes les cibles enfants.
Si vous devez pouvoir effectuer un déploiement simultané sur un nombre de cibles supérieur à la limite spécifiée dans la documentation Cloud Build, deux options s'offrent à vous:
Demandez à augmenter le nombre de compilations simultanées que vous pouvez exécuter.
Configurez un pool privé et configurez vos cibles pour qu'elles utilisent ce pool.
Environnements d'exécution et déploiement parallèle
Chaque cible peut être configurée pour utiliser un environnement d'exécution différent de celui par défaut.
Si l'environnement d'exécution multicible possède un environnement d'exécution autre que celui par défaut, toutes les cibles enfants utilisant l'environnement d'exécution par défaut héritent de celle de l'environnement multicible.
Si la cible multicible utilise l'environnement d'exécution par défaut, toute cible enfant configurée avec un environnement d'exécution autre que celui par défaut utilise cet environnement autre que celui par défaut.
Ces règles facilitent la propagation des environnements d'exécution aux cibles enfants à partir d'une cible multicible. Vous n'avez donc pas besoin de définir ni de modifier l'environnement d'exécution pour chaque cible enfant, tout en vous permettant de personnaliser l'environnement d'exécution pour une ou plusieurs cibles enfants si nécessaire.
Pour en savoir plus sur les environnements d'exécution dans Cloud Deploy, consultez la page Utiliser les environnements d'exécution Google Cloud Deploy.
Effectuer un rollback d'un déploiement parallèle
Si vous devez effectuer un rollback d'un déploiement à partir de plusieurs cibles parallèles, effectuez un rollback de la cible multicible, comme décrit dans la section Effectuer un rollback d'une cible.
Approbations pour le déploiement en parallèle
Comme pour toutes les cibles, vous pouvez configurer votre déploiement parallèle pour qu'il exige des approbations. Toutefois, avec le déploiement parallèle, vous ne pouvez configurer l'approbation que sur le groupe multicible. L'approbation ou le refus affecte toutes les cibles enfants ensemble.
Afficher le déploiement parallèle dans la console Google Cloud
Vous pouvez afficher les détails de vos cibles multicibles et enfants, du déploiement du contrôleur et des déploiements enfants dans la console Google Cloud.
Lorsque vous affichez la liste des cibles d'un pipeline de livraison donné, dans la section "Détails du pipeline de livraison", la cible multicible est indiquée, mais pas les cibles enfants. Toutefois, lorsque vous affichez les détails de la version, vous pouvez voir le déploiement du contrôleur et les déploiements enfants. Vous pouvez également voir les déploiements du contrôleur et des enfants dans l'onglet Déploiements de la page d'informations du pipeline de livraison.
Dans l'inspecteur de versions, vous pouvez afficher les fichiers manifestes affichés pour les déploiements enfants et afficher leurs différences entre les déploiements enfants.
Utiliser le déploiement parallèle avec une stratégie de déploiement
Vous pouvez procéder au déploiement en parallèle si vous utilisez une stratégie de déploiement Canary. Pour en savoir plus, consultez la section Utiliser le déploiement parallèle avec une stratégie de déploiement Canary.
Étapes suivantes
Consultez le guide de démarrage rapide: déployer une application sur plusieurs cibles en même temps.
En savoir plus sur l'utilisation des paramètres de déploiement
Consultez le schéma de configuration cible.
Consultez l'article Architecture du service Cloud Deploy.