Ce document explique comment configurer et utiliser des déploiements canary personnalisés pour déployer vos applications sur tous les types de cibles à l'aide de Cloud Deploy.
Fonctionnement des déploiements canary personnalisés
Lorsque vous effectuez un déploiement à l'aide d'une stratégie de déploiement Canary personnalisée, Cloud Deploy ne modifie pas vos fichiers manifestes afin de faciliter la configuration d'équilibrage du trafic choisie. Vous êtes responsable de la fourniture des fichiers manifestes qui sont appliqués à votre environnement d'exécution cible pour chaque phase canary.
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 fichiers manifestes sont affichés et déployés.
Pour un déploiement canary personnalisé, vous êtes responsable de la définition des profils associés à chaque phase canary afin de faciliter la configuration d'équilibrage du trafic choisie. Ces profils sont mappés aux phases de la configuration de la stratégie de pipeline de livraison.
Voici un exemple de configuration skaffold.yaml
utilisée par un canary personnalisé :
apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: canary-25
manifests:
rawYaml:
- canary-25-resources.yaml
- name: canary-50
manifests:
rawYaml:
- canary-50-resources.yaml
- name: stable
manifests:
rawYaml:
- stable-resources.yaml
Configurer un canary personnalisé
Avec la configuration canary personnalisée, vous spécifiez les éléments suivants dans la définition de votre pipeline de déploiement :
Noms des phases de déploiement
Dans un déploiement canary entièrement automatisé, Cloud Deploy nomme les phases pour vous (
canary-25
,canary-75
,stable
, par exemple). Toutefois, avec un canary personnalisé, vous pouvez attribuer n'importe quel nom à chaque phase, à condition qu'il soit unique parmi toutes les phases de cette étape canary et qu'il respecte les restrictions concernant les ID de ressources. Toutefois, le nom de la phase finale (100 %) doit êtrestable
.Objectifs de pourcentage pour chaque phase
Spécifiez les pourcentages séparément, pour chaque phase.
Profils Skaffold à utiliser pour la phase
Vous pouvez utiliser un profil Skaffold distinct pour chaque phase, le même profil ou n'importe quelle combinaison. Chaque profil peut utiliser une définition de service Cloud Run différente. Vous pouvez également utiliser plusieurs profils pour une phase donnée. Cloud Deploy les combine.
Indique s'il existe un job de validation pour la phase.
N'oubliez pas que si vous activez la validation, vous devez également configurer votre
skaffold.yaml
pour la validation.Indique si des jobs de pré-déploiement ou de post-déploiement sont associés à la phase.
Si vous activez des jobs de pré-déploiement ou de post-déploiement, vous devez configurer votre
skaffold.yaml
pour ces jobs.
Éléments de configuration Canary personnalisés
Le code YAML suivant montre la configuration des phases du déploiement canary entièrement personnalisé :
strategy:
canary:
# Custom configuration for each canary phase
customCanaryDeployment:
phaseConfigs:
- phaseId: "PHASE1_NAME"
percentage: PERCENTAGE1
profiles: [ "PROFILE_NAME" ]
verify: true | false
predeploy:
actions: "PREDEPLOY_ACTION"
postdeploy:
actions: "POSTDEPLOY_ACTION"
- …
- phaseId: "stable"
percentage: 100
profiles: [ "LAST_PROFILE_NAME" ]
verify: true|false
predeploy:
actions: "PREDEPLOY_ACTION"
postdeploy:
actions: "POSTDEPLOY_ACTION"
Dans ce fichier YAML
PHASE1_NAME
Nom de la phase. Chaque nom de phase doit être unique.
[ "PROFILE_NAME" ]
Nom du profil à utiliser pour la phase. Vous pouvez utiliser le même profil pour chaque phase, un profil différent pour chacune d'elles ou une combinaison des deux. Vous pouvez également spécifier plusieurs profils. Cloud Deploy utilise tous les profils que vous spécifiez, ainsi que le profil ou le fichier manifeste utilisé par l'ensemble de l'étape.
stable
La phase finale doit être nommée
stable
.PERCENTAGE1
Il s'agit du pourcentage à déployer pour la première phase. Chaque phase doit avoir une valeur de pourcentage unique, qui doit être un pourcentage entier (par exemple, pas
10.5
). Les phases doivent être dans l'ordre croissant.verify: true|false
Indique à Cloud Deploy s'il faut inclure un job de validation pour la phase. Notez que pour que chaque phase utilise la validation, Skaffold utilise le même profil de validation que celui spécifié pour le rendu et le déploiement de cette phase.
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
Il s'agit du même ACTION_NAME que celui 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.
Le pourcentage de la dernière phase doit être de 100
. Les phases sont exécutées dans l'ordre dans lequel vous les configurez dans cette strophe customCanaryDeployment
. Toutefois, si les valeurs de pourcentage ne sont pas dans l'ordre croissant, la commande permettant d'enregistrer le pipeline de déploiement échoue et génère une erreur.
Notez que la configuration d'un canary personnalisé n'inclut pas de strophe runtimeConfig
. Si vous incluez runtimeConfig
, il s'agit d'une mise à niveau Canary automatisée personnalisée.
É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