Ce document explique comment configurer et utiliser les déploiements Canary pour déployer vos applications sur Cloud Run (services uniquement, pas les jobs) à l'aide de Cloud Deploy.
Un déploiement Canary est un déploiement progressif d'une nouvelle version de votre application. Vous augmentez progressivement le pourcentage de trafic envoyé vers la nouvelle version, tout en surveillant les performances de l'application. Cela vous permet de détecter rapidement les problèmes potentiels et de minimiser leur impact sur vos utilisateurs.
Fonctionnement des déploiements Canary pour Cloud Run
Lorsque vous déployez sur Cloud Run à l'aide d'une stratégie de déploiement Canary, Cloud Deploy met à jour votre service existant avec une nouvelle révision. La nouvelle révision reçoit un pourcentage spécifié du trafic, et l'ancienne révision continue de recevoir le reste. Vous augmentez progressivement la répartition du trafic vers la nouvelle révision au fil du temps.
Avec Cloud Deploy, vous pouvez configurer des déploiements Canary sur Cloud Run en une ou plusieurs étapes.
Les instructions fournies ici ne concernent que la configuration canary. Le document Déployer un service ou un job Cloud Run contient les instructions générales pour configurer et exécuter votre pipeline de déploiement.
Assurez-vous de disposer des autorisations requises.
En plus des autres autorisations Identity and Access Management dont vous avez besoin pour utiliser Cloud Deploy, vous devez disposer des autorisations suivantes pour effectuer des actions supplémentaires qui peuvent être nécessaires pour un déploiement canary :
clouddeploy.rollouts.advance
clouddeploy.rollouts.ignoreJob
clouddeploy.rollouts.cancel
clouddeploy.rollouts.retryJob
clouddeploy.jobRuns.get
clouddeploy.jobRuns.list
clouddeploy.jobRuns.terminate
Pour en savoir plus sur les rôles disponibles qui incluent ces autorisations, consultez Rôles et autorisations IAM.
Préparer votre skaffold.yaml
Votre fichier skaffold.yaml
définit la façon dont vos définitions de service Cloud Run sont affichées et déployées. Pour un déploiement canary sur Cloud Run, assurez-vous qu'il pointe correctement vers vos fichiers de définition de service et qu'il définit tous les artefacts de compilation nécessaires (comme les images de conteneur). Aucune configuration spéciale spécifique aux versions Canary n'est requise dans skaffold.yaml
au-delà de ce qui est nécessaire pour un déploiement standard. Vous pouvez utiliser des profils Skaffold pour gérer différentes variantes de définition de service pour les phases canary personnalisées.
Préparer la définition de votre service
Votre fichier de définition de service Cloud Run habituel suffit, mais sans section traffic
. Cloud Deploy gère la répartition du trafic entre la dernière révision ayant abouti et la nouvelle révision.
Exemple service.yaml
(sans stanza traffic
) :
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: my-cloudrun-service
spec:
template:
spec:
containers:
- image: gcr.io/my-project/my-cloudrun-app
ports:
- containerPort: 8080
Configurer un déploiement Canary automatisé
Configurez une analyse Canary automatisée directement dans la définition de votre pipeline de livraison pour une étape Cloud Run spécifique. Cloud Deploy demande automatiquement à Cloud Run de répartir le trafic entre la dernière révision stable et la nouvelle révision en fonction des pourcentages spécifiés.
serialPipeline:
stages:
- targetId: prod
profiles: []
strategy:
canary:
runtimeConfig:
cloudRun:
automaticTrafficControl: true
canaryDeployment:
percentages: [PERCENTAGES]
verify: true|false
predeploy:
actions: "PREDEPLOY_ACTION"
postdeploy:
actions: "POSTDEPLOY_ACTION"
Dans cette configuration :
PERCENTAGES est une liste de valeurs de pourcentage séparées par une virgule, représentant vos incréments de canary, par exemple
[25, 50, 75]
. Notez que cela n'inclut pas100
, car un déploiement à 100 % est supposé dans le déploiement Canary et est géré par la phasestable
.Vous pouvez activer la validation du déploiement (
verify: true
). Si vous le faites, un jobverify
est ajouté à chaque phase canary.PREDEPLOY_ACTION
Identique à l'ACTION_NAME que vous avez utilisé dans votre
skaffold.yaml
pour définir l'action personnalisée que vous souhaitez exécuter avant le déploiement.POSTDEPLOY_ACTION
Identique à l'ACTION_NAME que vous avez utilisé dans votre
skaffold.yaml
pour définir l'action personnalisée que vous souhaitez exécuter après le déploiement.
Configurer une analyse Canary automatisée personnalisée
Cela combine la définition de phase personnalisée (noms, pourcentages, profils, validation, hooks) avec la gestion automatique du trafic de Cloud Deploy pour Cloud Run. Vous définissez les phases, mais Cloud Deploy gère les instructions envoyées à Cloud Run pour déplacer le trafic en fonction des pourcentages.
Pour configurer cela, incluez à la fois le paramètre runtimeConfig.cloudRun.automaticTrafficControl: true
et la section customCanaryDeployment
(définissant phaseConfigs
) dans le bloc strategy.canary
. Cloud Deploy utilisera les profils Skaffold spécifiés pour afficher la définition du service (qui ne doit toujours pas comporter de strophe traffic
), mais gérera automatiquement le trafic en fonction des pourcentages de phase.
serialPipeline:
stages:
- targetId: cloudrun-prod
profiles: []
strategy:
canary:
# Include runtimeConfig for automatic traffic management
runtimeConfig:
cloudRun:
automaticTrafficControl: true
# Include customCanaryDeployment for phase customization
customCanaryDeployment:
phaseConfigs:
- phaseId: "warmup-cr"
percentage: 10
profiles: ["base-config"] # Profile rendering service def (no traffic stanza)
verify: true
- phaseId: "scaling-cr"
percentage: 50
profiles: ["base-config"] # Can use the same profile
verify: true
- phaseId: "stable"
percentage: 100
profiles: ["base-config"]
verify: true
Exécuter le canary Cloud Run
Enregistrez le pipeline et les cibles : appliquez vos fichiers de configuration de pipeline de déploiement et de cible Cloud Run.
gcloud deploy apply --file=delivery-pipeline.yaml --region=REGION gcloud deploy apply --file=cloudrun-targets.yaml --region=REGION
Le pipeline de déploiement inclut la configuration Canary automatisée ou personnalisée pour l'environnement d'exécution de votre choix.
Créez une version : lancez le déploiement en fournissant le nom de l'image.
gcloud deploy releases create RELEASE_NAME \ --delivery-pipeline=PIPELINE_NAME \ --region=REGION
Le pipeline de livraison identifié par
PIPELINE_NAME
contient la configuration Canary automatisée ou personnalisée décrite dans ce document.Faites avancer la phase Canary :
CLI gcloud
gcloud deploy rollouts advance ROLLOUT_NAME \ --release=RELEASE_NAME \ --delivery-pipeline=PIPELINE_NAME \ --region=REGION
Où :
ROLLOUT_NAME
est le nom du déploiement en cours que vous faites passer à la phase suivante.RELEASE_NAME
est le nom de la version à laquelle appartient ce déploiement.PIPELINE_NAME
est le nom du pipeline de livraison que vous utilisez pour gérer le déploiement de cette version.REGION
est le nom de la région dans laquelle la version a été créée, par exempleus-central1
. Ce champ est obligatoire.Pour en savoir plus sur la commande
gcloud deploy rollouts advance
, consultez la documentation de référence de Google Cloud SDK.Console Google Cloud
Cliquez sur votre pipeline dans la liste des pipelines de diffusion.
La page "Détails du pipeline de diffusion" affiche une représentation graphique de la progression de votre pipeline de diffusion.
Dans l'onglet Déploiements, sous Détails du pipeline de diffusion, cliquez sur le nom de votre déploiement.
La page de détails du déploiement s'affiche.
Notez que dans cet exemple, le déploiement comporte une phase
canary-50
et une phasestable
. Votre déploiement peut comporter plus de phases ou des phases différentes.Cliquez sur Avancer le déploiement.
Le déploiement passe à la phase suivante.
Phases ignorées
Si vous déployez un canary et que votre application n'a pas encore été déployée sur ce runtime, Cloud Deploy ignore la phase canary et exécute la phase stable. Consultez Ignorer des phases la première fois pour en savoir plus.
Étapes suivantes
Essayez le guide de démarrage rapide du déploiement Canary.
Découvrez comment gérer le cycle de vie des déploiements de votre canary.
En savoir plus sur le déploiement en parallèle
En savoir plus sur les stratégies de déploiement Cloud Deploy
Obtenez plus d'informations sur Cloud Run.