Cette page explique comment utiliser Cloud Deploy pour intégrer votre application dans les environnements d'exécution cibles souhaités. Avant de commencer, vous devez créer votre pipeline de livraison et vos cibles.
Avant de commencer
Cette section décrit les éléments que vous devez mettre en place avant de pouvoir déployer votre application à l'aide de Cloud Deploy.
Assurez-vous que votre compte de service d'exécution dispose des rôles et autorisations IAM nécessaires.
Créez votre pipeline de livraison et vos cibles.
Cloud Deploy peut être déployé sur Google Kubernetes Engine, Cloud Run, les clusters associés à GKE et les cibles personnalisées. La configuration cible diffère selon l'environnement dans lequel vous effectuez le déploiement.
Disposez de vos images de conteneur et de vos fichiers manifestes.
Vous avez besoin d'une ou de plusieurs images de conteneur à déployer, ainsi que d'un ou de plusieurs fichiers manifestes Kubernetes (pour le déploiement sur GKE) ou de fichiers YAML de service (pour le déploiement sur Cloud Run).
Vous avez besoin d'un pipeline d'intégration continue ou d'un autre processus pour créer et placer vos images. Votre outil CI peut être Cloud Build, Jenkins ou tout autre outil générant des images de conteneur que vous pouvez fournir à votre pipeline de livraison Cloud Deploy.
Disposez d'un fichier de configuration
skaffold.yaml.Cloud Deploy calls
skaffold renderpour afficher les fichiers manifestes Kubernetes à l'aide de ce fichier etskaffold applypour les déployer dans votre cible. Pour ce faire, Skaffold nécessite au moins un fichierskaffold.yamlminimal. Vous pouvez en obtenir un de deux manières :Créez le vôtre.
Notez que le fichier
skaffold.yamldoit référencer l'apiVersioncompatible avec Skaffold sur la première ligne, comme dans cet exemple :`apiVersion: skaffold/v4beta7`Faites-le générer pour vous.
Si vous n'avez pas encore de fichier
skaffold.yaml, vous pouvez demander à Cloud Deploy d'en créer un pour vous. Ce fichier est adapté à l'intégration, à l'apprentissage ou à la démonstration de Cloud Deploy, et ne doit pas être utilisé pour les charges de travail de production.
Pour en savoir plus, consultez la page Utiliser Skaffold avec Cloud Deploy. De plus, la page Gérer les fichiers manifestes dans Cloud Deploy fournit plus d'informations sur l'utilisation de Skaffold et de Cloud Deploy avec des outils de gestion des fichiers manifestes, tels que Helm, Kustomize et kpt.
Configurer Cloud Deploy pour l'environnement d'exécution de votre choix
Cloud Deploy peut déployer votre application dans l'un des environnements d'exécution suivants :
Appeler votre pipeline de livraison pour créer une version
Une fois que vous avez configuré Cloud Deploy pour qu'il soit déployé dans votre environnement d'exécution, vous pouvez envoyer votre application pour qu'elle soit déployée conformément au pipeline de livraison que vous avez créé.
Exécutez votre processus d'intégration continue (CI) habituel, en créant le ou les artefacts déployables.
Lancez le pipeline de livraison en appelant 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 --region=REGIONÉtant donné que cette commande crée un fichier tar de l'ensemble du contenu du répertoire et de tous les sous-répertoires, vous ne souhaiterez peut-être pas l'exécuter à partir de votre répertoire d'accueil ou racine. Exécutez la commande à partir du répertoire contenant votre configuration Skaffold ou incluez l'option
--source=, décrite plus loin.Dans cette commande :
RELEASE_NAMEest le nom à attribuer à cette version. Le nom doit être unique parmi toutes les versions de ce pipeline de livraison.Vous pouvez spécifier des noms de version dynamiques en incluant
'$DATE'ou'$TIME'ou les deux. Par exemple, si vous appelez cette commande à 15h07 UTC,'rel-$TIME'est résolu enrel-1507.'$DATE'et'$TIME'doivent être entre guillemets simples, et l'heure correspond à l'heure UTC sur la machine où vous appelez la commande.PIPELINE_NAMEest le nom du pipeline de livraison qui gérera le déploiement de cette version tout au long de la progression des cibles. Ce nom doit correspondre au champnamede la définition du pipeline.REGIONest le nom de la région dans laquelle vous créez la version, par exempleus-central1. Ce champ est obligatoire.
Cette commande importe un fichier tar contenant vos configurations dans un bucket Cloud Storage et crée la version. Cloud Deploy crée également automatiquement un déploiement et déploie votre image sur la première cible définie dans le pipeline de livraison.
En plus des paramètres affichés 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.
Vous pouvez également inclure l'un des indicateurs suivants pour que Cloud Deploy génère un fichier skaffold.yaml pour vous :
--from-k8s-manifest=K8S_MANIFESTLa configuration Skaffold générée est basée sur le fichier manifeste Kubernetes que vous transmettez à cet indicateur. L'utilisation de cet indicateur avec l'indicateur
--skaffold-fileou--sourcegénère une erreur. Pour en savoir plus, consultez la section Générer votreskaffold.yaml.--from-run-manifest=RUN_MANIFESTLa configuration Skaffold générée est basée sur le fichier YAML du service Cloud Run que vous transmettez à cet indicateur. L'utilisation de cet indicateur avec l'indicateur
--skaffold-fileou--sourcegénère une erreur. Pour en savoir plus, consultez la section Générer votreskaffold.yaml.
Ces deux options s'excluent mutuellement.
Vous pouvez également inclure un fichier .gcloudignore si certains fichiers du répertoire ne doivent pas être inclus dans le fichier tar.
Créer une version depuis la Google Cloud console
Vous pouvez utiliser la Google Cloud console pour créer une version pour un pipeline de livraison. Cette méthode est utile pour tester Cloud Deploy, mais n'est pas adaptée aux charges de travail de production.
La procédure suivante suppose que vous avez déjà créé un pipeline de livraison et une ou plusieurs cibles. (Vous pouvez également utiliser la Google Cloud console) pour créer votre pipeline de livraison.)
Sur la page Détails du pipeline de livraison, pour un pipeline de livraison spécifique, cliquez sur Créer une version.

Dans le champ Choisir un conteneur, collez ou saisissez le chemin d'accès à l'image de conteneur que vous souhaitez déployer. Vous pouvez également utiliser le conteneur par défaut prérempli dans ce champ à des fins d'évaluation.
Vous pouvez également cliquer sur Sélectionner pour choisir une image de conteneur dans Artifact Registry.
Dans le champ Nom de la version , saisissez un nom unique pour cette version ou utilisez le nom par défaut fourni.
Dans le champ Nom du déploiement , saisissez un nom pour le déploiement ou utilisez le nom par défaut fourni.
Ce nom est utilisé pour le déploiement sur la première cible de cette version. Pour les cibles suivantes, vous pouvez nommer le déploiement dans la boîte de dialogue Promouvoir ou dans la commande
gcloud deploy releases promote.Vous pouvez également inclure une description pour cette version dans le champ Description.
Sous Détails du déploiement, saisissez un nom pour votre déploiement GKE ou votre service Cloud Run, ou utilisez le nom par défaut fourni.
Pour GKE, Cloud Deploy génère le fichier manifeste pour vous. Pour Cloud Run, Cloud Deploy génère la définition de service, qui est utilisée pour créer le service.
Cliquez sur Créer.

Cloud Deploy utilise le fichier manifeste généré ou la définition de service Cloud Run, ainsi que le fichier skaffold.yaml généré, pour créer la version.
Modifier le délai avant expiration du déploiement
Pour les déploiements sur GKE et les clusters associés à GKE, trois délais avant expiration distincts affectent la durée pendant laquelle le système attend que Kubernetes signale un déploiement stable :
Cloud Build dispose d'un délai avant expiration d'une heure pour les opérations qu'il effectue pour Cloud Deploy.
Vous pouvez modifier ce délai avant expiration dans la configuration de votre environnement d'exécution.
Skaffold dispose d'un délai avant expiration de la vérification de l'état (
deploy.statusCheckDeadlineSeconds), qui correspond au délai, en secondes, avant que les déploiements ne se stabilisent.La valeur par défaut est de 600 secondes (10 minutes). Pour utiliser ce délai avant expiration,
deploy.statusCheckdoit être défini surtrue. Par défaut, c'est le cas. SistatusCheckestfalse, aucune vérification de l'état n'est effectuée, et le déploiement est marqué comme réussi une fois quekubectl applys'est terminé correctement.Pour les ressources Kubernetes de
kind: Deployment, il existeDeployment.spec.progressDeadlineSeconds, qui correspond au délai pendant lequel Kubernetes attend que le déploiement soit signalé comme stable.Ce délai avant expiration ne s'applique qu'aux ressources
Deployment. Voici comment ces deux premiers délais avant expiration fonctionnent ensemble :Si
Deployment.spec.progressDeadlineSecondsn'est pas défini dans Kubernetes, le délai avant expiration effectif est celui de la vérification de l'état Skaffold, qu'il s'agisse de la valeur par défaut ou d'une valeur définie explicitement.Si
Deployment.spec.progressDeadlineSecondsest défini dans Kubernetes, Skaffold ignore son propre délai avant expiration de la vérification de l'état, et le délai avant expiration effectif est celui de la progression Kubernetes. Toutefois, si le délai avant expiration Kubernetes est explicitement défini sur600(10 minutes), Skaffold suppose qu'il s'agit de la valeur par défaut (non définie) et l'ignore. Le délai avant expiration Skaffold est alors utilisé (s'il est défini).Si aucun délai avant expiration n'est défini, le délai avant expiration effectif est la valeur par défaut de Skaffold, à savoir
600(10 minutes).
Outre les
Deployments, d'autres ressources Kubernetes peuvent avoir des délais avant expiration, qui n'influencent pas le délai avant expiration de la stabilité. Si l'un de ces délais est présent, vérifiez qu'il n'est pas en conflit avec le délai avant expiration de la stabilité.Si Skaffold (ou Cloud Build) expire, le déploiement GKE continue de s'exécuter. Cloud Deploy affiche un échec, mais il peut toujours réussir ou échouer sur le cluster GKE.
Pour modifier le délai avant expiration de la stabilité de votre déploiement :
Assurez-vous que
deploy.statusCheckest défini surtruedansskaffold.yaml.trueest la valeur par défaut. Lorsque la valeur esttrue, Skaffold attend que les vérifications de l'état signalent un déploiement stable, sous réserve de la valeur du délai avant expiration à l'étape suivante.Dans
skaffold.yaml, définissezstatusCheckDeadlineSecondssur le nombre de secondes que vous souhaitez attendre.deploy: ... statusCheck: true statusCheckDeadlineSeconds: 600 ...La valeur par défaut est
600(10 minutes). Skaffold attend ce délai pour un déploiement stable. Si ce délai est dépassé avant que le déploiement ne soit stable, le déploiement échoue.Vous pouvez également ajouter
tolerateFailuresUntilDeadline: trueaprèsstatusCheckDeadlineSeconds.Ce paramètre indique à Skaffold de ne pas quitter si un seul déploiement échoue, mais de tolérer les échecs jusqu'à l'expiration de
statusCheckDeadlineSeconds. Ce paramètre peut être utile dans les cas où vous disposez de ressources qui peuvent nécessiter plus de temps (jusqu'au délai avant expiration de la vérification de l'état) pour atteindre un état stable.Par exemple, si vous utilisez Istio ou Cloud Service Mesh, vous pouvez avoir un déploiement ayant échoué avec un message semblable à celui-ci :
error iptables validation failed; workload is not ready for Istio. When using Istio CNI, this can occur if a pod is scheduled before the node is ready.Dans votre fichier manifeste Kubernetes, pour les ressources de
kind: Deployment, définissezDeployment.spec.progressDeadlineSecondssur la même valeur que celle que vous avez définie pourstatusCheckDeadlineSeconds.
Étape suivante
En savoir plus sur le déploiement sur GKE
En savoir plus sur le déploiement sur Cloud Run
En savoir plus sur le déploiement sur les clusters associés à GKE
Découvrez comment créer votre pipeline de livraison et vos cibles
Découvrez comment promouvoir une version