Déployer l'application

Cette page explique comment utiliser Google Cloud Deploy pour déployer votre application dans les environnements d'exécution cibles souhaités.

Google Cloud Deploy déploie votre application via une progression de plusieurs cibles de déploiement, en séquence. Cette page décrit le processus de haut niveau.

Au cours du processus décrit sur cette page, vous créez un pipeline de diffusion et définissez vos cibles à l'aide d'un ou de plusieurs fichiers de configuration YAML. Vous enregistrez ensuite ce pipeline et envoyez votre application en tant que version dont le déploiement est géré par ce pipeline.

Avant de commencer

  • Vous devez disposer d'une image de conteneur à déployer et d'un fichier manifeste Kubernetes qui identifie l'image de conteneur.

    Vous avez besoin d'un pipeline d'intégration continue ou d'un autre processus pour créer et placer des images. Votre outil d'intégration continue peut être Cloud Build, Jenkins ou tout élément générant des images de conteneurs à fournir à votre pipeline de diffusion Google Cloud Deploy.

  • Créez un fichier de configuration skaffold.yaml, si vous n'en possédez pas déjà un, qui indique à Google Cloud Deploy comment afficher et déployer votre application Kubernetes.

    Google Cloud Deploy appelle skaffold render pour afficher les fichiers manifestes Kubernetes à l'aide de ce fichier et skaffold apply pour les déployer dans votre cible.

    Le fichier skaffold.yaml doit référencer l'espace de noms correspondant à une version compatible sur la première ligne, comme dans cet exemple:

    apiVersion: skaffold/v2beta16

    Si vous n'avez pas encore de fichier skaffold.yaml, vous pouvez utiliser skaffold init pour le générer.

    Pour en savoir plus, consultez la page Utiliser Skaffold dans Google Cloud Deploy. Consultez la page Gérer les fichiers manifestes dans Google Cloud Deploy pour en savoir plus sur l'utilisation de Skaffold et de Google Cloud Deploy avec des outils de gestion des fichiers manifestes, tels que Helm, Kustomize et kpt.

  • Assurez-vous que votre compte de service d'exécution dispose des rôles et autorisations IAM nécessaires.

Créer votre pipeline de diffusion

Votre pipeline de diffusion décrit une progression des cibles de déploiement. Vous pouvez définir ces cibles dans le même fichier que le pipeline de diffusion ou dans un ou plusieurs fichiers distincts.

Après avoir créé le pipeline de diffusion et le ou les fichiers de définition cibles, exécutez gcloud deploy apply sur chacun de ces fichiers pour l'enregistrer en tant que ressource de déploiement Google Cloud.

Définir le pipeline de diffusion et les cibles

La structure du fichier de configuration du pipeline de diffusion est décrite ici.

Vous pouvez appeler ce fichier comme vous le souhaitez. Par convention, une configuration de pipeline de livraison qui inclut des définitions cibles est appelée clouddeploy.yaml, et une configuration qui fait référence à des cibles définies dans un ou plusieurs fichiers distincts est nommée delivery-pipeline.yaml.

Enregistrer le pipeline de diffusion et les cibles

Pour enregistrer votre pipeline de diffusion auprès de Google Cloud Deploy, vous devez exécuter gcloud deploy apply une fois pour chaque fichier de définition distinct. Par exemple, si vous définissez trois cibles dans trois fichiers, vous exécutez la commande quatre fois : une fois pour le pipeline de diffusion et une fois pour chaque cible.

La commande suivante enregistre un pipeline de diffusion dans lequel ses cibles sont définies dans le même fichier.

gcloud deploy apply --file=PIPELINE_CONFIG \
                         --region=LOCATION
                         --project=PROJECT

Vous disposez désormais d'un pipeline de diffusion capable de gérer le déploiement de vos versions et de ressources cibles pouvant être utilisées par tout pipeline de diffusion du même projet et de la même région.

Exemple de fichier unique

Dans cet exemple, la commande enregistre un pipeline de diffusion et des cibles qui sont toutes définies dans le même fichier:

gcloud deploy apply --file=clouddeploy.yaml --region=us-central1

Exemple utilisant des fichiers distincts

Pour cet exemple, trois cibles sont définies dans trois fichiers distincts. Vous exécutez donc quatre commandes:

gcloud deploy apply --file=delivery-pipeline.yaml --region=us-central1 && \
gcloud deploy apply --file=target_dev.yaml --region=us-central1 && \
gcloud deploy apply --file=target_staging.yaml --region=us-central1 && \
gcloud deploy apply --file=target_prod.yaml --region=us-central1

L'option --region est obligatoire, sauf si vous avez défini une valeur par défaut (à l'aide de gcloud config set deploy/region [REGION]). La région doit être identique pour le pipeline de diffusion et toutes les cibles auxquelles le pipeline fait référence.

Modifier des pipelines et des cibles existants

Vous pouvez modifier ultérieurement un pipeline de diffusion ou une configuration cible, puis exécuter gcloud deploy apply pour mettre à jour le pipeline ou la ressource cible. Toutefois, ces modifications n'affectent pas les versions existantes, car elles sont gérées par le pipeline de diffusion d'origine.

Exiger une approbation manuelle pour un déploiement

Pour exiger une approbation manuelle pour une cible donnée, incluez la propriété suivante dans la définition de la cible:

requireApproval: true

La valeur par défaut est false. Si vous omettez cette propriété de la configuration du pipeline de diffusion ou si vous ne fournissez aucune valeur, le déploiement sur cette cible ne nécessite pas d'approbation. (Toutefois, l'appelant qui tente de promouvoir l'application sur la cible doit toujours disposer de l'autorisation IAM clouddeploy.rollouts.create.)

Vous pouvez même exiger une approbation manuelle sur la première cible. Lorsqu'une version est créée, à l'aide de la CLI, pour la première cible, le rollout est créé automatiquement. Si une approbation est requise, Google Cloud Deploy crée l'objet rollout, mais dans un état de version en attente jusqu'à ce que l'approbation soit accordée.

Appeler le pipeline de diffusion pour déployer votre application

Vous pouvez maintenant envoyer votre application en fonction du pipeline de diffusion que vous avez créé.

  1. Exécutez votre processus d'intégration continue (CI) standard pour créer le ou les artefacts déployables.

  2. Lancer le pipeline de livraison en appelant Google Cloud Deploy pour créer une version.

    Exécutez la commande suivante à partir du répertoire contenant votre configuration Skaffold:

    gcloud deploy releases create RELEASE_NAME --delivery-pipeline=PIPELINE_NAME
    

    Où :

    RELEASE_NAME est un nom à attribuer à cette version. Le nom doit être unique parmi toutes les versions de ce pipeline de diffusion.

    PIPELINE_NAME est le nom du pipeline de diffusion qui gérera le déploiement de cette version tout au long de la progression des cibles. Ce nom doit correspondre au champ name dans la définition du pipeline.

Cette commande importe un package tarball contenant vos configurations dans un bucket Cloud Storage et crée la version. En outre, Google Cloud Deploy crée automatiquement un déploiement et déploie votre image sur la première cible définie dans le pipeline de diffusion.

En plus des paramètres fournis avec cette commande, vous pouvez inclure l'une des options suivantes:

  • --images=<name=path/name:$IMAGE_SHA>,<name=path/name:$IMAGE_SHA>

    Ensemble de remplacements de nom d'image par un chemin d'accès complet d'image.

  • --build_artifacts=<path/file>

    Référence à un fichier de sortie d'artefacts de compilation Skaffold, qui peut être transmis pour représenter les remplacements de chemin d'accès complet d'image

Ces deux options s'excluent mutuellement.

Promouvoir une version

Lorsque votre version est déployée dans une cible définie dans votre pipeline de diffusion, vous pouvez la promouvoir dans la cible suivante:

gcloud

gcloud deploy releases promote --release=RELEASE_NAME --delivery-pipeline=PIPELINE_NAME

Où :

RELEASE_NAME est le nom de la version dont vous faites la promotion.

PIPELINE_NAME est le nom du pipeline de diffusion que vous utilisez pour gérer le déploiement de cette version.

Console

  1. Ouvrez la page des pipelines de diffusion.

  2. 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 du pipeline de diffusion.

    Visualisation du pipeline de diffusion dans Google Cloud Console

  3. Sur la première cible de la visualisation du pipeline de diffusion, cliquez sur Promouvoir.

    La boîte de dialogue Promouvoir la version s'affiche. Elle affiche les détails de la cible vers laquelle vous effectuez la promotion.

  4. Cliquez sur Promouvoir.

Si le pipeline de diffusion ou la cible a été modifié depuis la création de la version, Google Cloud Deploy renvoie un message indiquant une divergence possible et vous invite à confirmer la promotion. Vous pouvez répondre à l'invite n et examiner les différences entre les versions du pipeline avant de continuer. Si vous optez pour une promotion, la version est déployée en fonction du pipeline de diffusion tel qu'il a été défini lors de sa création. Pour en savoir plus sur les divergences dans les pipelines, consultez la section Instances de pipeline par version.

Google Cloud Deploy crée un rollout pour la version dans la cible de destination, et la version est mise en file d'attente pour le déploiement. Lors du déploiement, la visualisation du pipeline de livraison le prouve:

Visualisation du pipeline de diffusion dans Google Cloud Console

Approuver une promotion

Chaque cible peut exiger une approbation avant le déploiement d'une version vers elle.

Lorsque vous promouvez une cible nécessitant une approbation, Google Cloud Deploy publie un message Pub/Sub dans le sujet cd-approvals.

Pour en savoir plus sur le fonctionnement des approbations, consultez la page Approuver ou refuser un déploiement.

Déployer manuellement

Utilisé normalement, Google Cloud Deploy déploie votre application sur chaque cible dans la progression, de façon séquentielle. Toutefois, vous pouvez également déployer manuellement votre application sur n'importe quelle cible définie.

Vous pouvez déployer manuellement une version nouvelle ou existante.

Déployer manuellement une version existante

Si une version est déjà créée, vous pouvez simplement la promouvoir vers la cible voulue :

gcloud deploy releases promote --release=RELEASE_NAME --delivery-pipeline=PIPELINE_NAME --to-target=TARGET_NAME

Où :

  • RELEASE_NAME est le nom de la version que vous promouvez manuellement vers la cible prévue.

  • PIPELINE_NAME est le nom du pipeline de diffusion qui décrit la progression du déploiement automatisé que vous remplacez.

  • TARGET_NAME est le nom de la cible vers laquelle vous effectuez le déploiement manuellement.

Déployer manuellement une nouvelle version

Par défaut, lorsque vous créez une version, Google Cloud Deploy la déploie automatiquement vers la première cible de la séquence de promotion. Toutefois, vous pouvez spécifier une cible autre que la première.

Comme pour la première cible par défaut dans la progression, Google Cloud Deploy crée automatiquement rollout pour la cible spécifiée et y déploie la version.

Pour déployer manuellement une nouvelle version, exécutez la commande suivante:

gcloud deploy releases create --release=RELEASE_NAME --delivery-pipeline=PIPELINE_NAME --to-target=TARGET_NAME

Où :

  • RELEASE_NAME est le nom de la version que vous promouvez manuellement vers la cible prévue.

  • PIPELINE_NAME est le nom du pipeline de diffusion qui décrit la progression du déploiement automatisé que vous remplacez.

  • TARGET_NAME est le nom de la cible vers laquelle vous effectuez le déploiement manuellement.

Effet du déploiement manuel sur la progression

Lorsque vous effectuez un déploiement manuel vers une cible spécifique, puis promouvez la version sans spécifier de cible, Google Cloud Deploy fait la promotion de cette version vers la cible suivante appropriée dans la progression. En effet, le service suit la cible la plus éloignée vers laquelle une version a été déployée. Si la version est déjà dans la dernière cible de la progression, Google Cloud Deploy renvoie un message indiquant qu'il n'y a plus de cible vers laquelle promouvoir.

Étape suivante