Cette page explique comment déployer une application sur Kubernetes à l'aide de Cloud Build.
Cloud Build fournit un compilateur gke-deploy
qui vous permet de déployer une application en conteneur vers un
cluster GKE.
gke-deploy
est un wrapper autour de kubectl
, l'interface de ligne de commande de
Kubernetes. Il applique les pratiques recommandées par Google pour le déploiement d'applications
sur Kubernetes :
en modifiant le fichier de ressources Kubernetes de l'application pour utiliser le condensé d'une image de conteneur au lieu d'un tag ;
en ajoutant des libellés recommandés au fichier de ressources Kubernetes ;
en récupérant des identifiants pour les clusters GKE dans lesquels vous déployez l'image ;
en attendant que le fichier de ressources Kubernetes envoyé soit prêt.
Si vous souhaitez déployer directement vos applications à l'aide de kubectl
sans
ajouter de fonctionnalités, Cloud Build fournit également un compilateur kubectl
, qui vous permet de déployer une application sur un
cluster GKE.
Avant de commencer
Créez un cluster GKE, si vous n'en avez pas déjà un.
Gardez le code source de votre application en conteneur à disposition, ainsi qu'un fichier
Dockerfile
opérationnel. Votre code source doit être stocké dans un dépôt tel que Cloud Source Repositories, GitHub ou Bitbucket.Vous devez disposer d'au moins un fichier de ressources Kubernetes décrivant les ressources Kubernetes qui permettent d'exécuter votre application. Si vous ne disposez pas de fichiers de ressources Kubernetes, procédez comme suit pour en générer un pour votre application :
- Ouvrez la page Clusters Kubernetes Engine dans Google Cloud Console.
- Sur la page "Clusters Kubernetes Engine", cliquez sur Déployer.
- Sélectionnez votre conteneur, puis cliquez sur Continuer. La section "Configuration" s'affiche.
- Sous "Configuration YAML", cliquez sur Afficher YAML pour obtenir un exemple de fichier de ressources Kubernetes.
Autorisations IAM requises
Ajoutez le rôle "Développeur Google Kubernetes Engine" à votre compte :
Accédez à la page "Paramètres" de Cloud Build.
Accéder à la page Paramètres de Cloud Build
La page "Autorisations de compte de service" s'affiche alors :
Définissez le rôle Kubernetes Engine Developer (Développeur sur Kubernetes Engine) sur l'état Activé.
Déployer une image de conteneur préconfigurée
Pour déployer une version spécifique de votre application avec gke-deploy
, procédez comme suit :
Assurez-vous que votre fichier de ressources Kubernetes fait référence au tag de l'image de conteneur ou au condensé appropriés.
Ajoutez l'étape
gke-deploy
à votre fichier de configuration de compilation :YAML
steps: ... # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --location=location - --cluster=cluster
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--location=location", "--cluster=cluster" ] } ] }
Où :
- kubernetes-resource-file est le chemin d'accès du fichier de ressources Kubernetes ou le chemin d'accès du répertoire contenant vos fichiers de ressources Kubernetes.
- cluster est le nom du cluster GKE dans lequel l'application sera déployée.
- location est la région/zone du cluster.
Pour en savoir plus sur les options disponibles, consultez la section sur les options
gke-deploy run
.Démarrez votre compilation :
gcloud builds submit --region=REGION --project=project-id --config build-config
Où :
- project-id est l'ID de votre projet.
- build-config est le nom de votre fichier de configuration de compilation.
REGION
est l'une des régions de compilation compatibles.
Créer et déployer une image de conteneur
Pour créer et déployer une image de conteneur, procédez comme suit :
Mettez à jour le fichier de ressources Kubernetes avec la nouvelle image de conteneur à l'aide de l'attribut
--image
:YAML
steps: # build the container image - name: "gcr.io/cloud-builders/docker" args: ["build", "-t", "gcr.io/project-id/image:tag", "."] # push container image - name: "gcr.io/cloud-builders/docker" args: ["push", "gcr.io/project-id/image:tag"] # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --image=gcr.io/project-id/image:tag - --location=location - --cluster=cluster
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/project-id/image:tag", "." ] }, { "name": "gcr.io/cloud-builders/docker", "args": [ "push", "gcr.io/project-id/image:tag" ] }, { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--image=gcr.io/project-id/image:tag", "--location=location", "--cluster=cluster" ] } ] }
Où :
- project-id est l'ID de votre projet.
- image est le nom que vous souhaitez donner à l'image de conteneur, généralement le nom de l'application.
- tag est le tag de l'image du conteneur.
- Si vous créez une image de conteneur avec chaque commit, il est recommandé
d'utiliser le SHA court du commit en tant que tag. Cloud Build propose cette
option en tant que substitution par défaut,
$SHORT_SHA
.
- Si vous créez une image de conteneur avec chaque commit, il est recommandé
d'utiliser le SHA court du commit en tant que tag. Cloud Build propose cette
option en tant que substitution par défaut,
- kubernetes-resource-file est le chemin d'accès du fichier de ressources Kubernetes ou le chemin d'accès du répertoire contenant vos fichiers de ressources Kubernetes.
- cluster est le nom du cluster GKE dans lequel l'application sera déployée.
- location est la région/zone du cluster sur laquelle le déploiement sera effectué.
Démarrez votre compilation :
gcloud builds submit --region=REGION --project=project-id --config build-config
Où :
- project-id est l'ID de votre projet.
- build-config est le nom de votre fichier de configuration de compilation.
REGION
est l'une des régions de compilation disponibles.
Automatiser les déploiements
Vous pouvez automatiser le déploiement de votre application sur GKE en créant un déclencheur dans Cloud Build. Vous pouvez configurer des déclencheurs pour créer et déployer des images chaque fois que vous apportez des modifications à votre code.
Pour créer un déclencheur de compilation, procédez comme suit :
Ouvrez la page Déclencheurs dans la console Google Cloud:
Sélectionnez votre projet dans le menu déroulant du sélecteur de projet, en haut de la page.
Cliquez sur Ouvrir.
Cliquez sur Créer un déclencheur.
Sur la page Créer un déclencheur, saisissez les paramètres suivants :
Nommez votre déclencheur.
Sélectionnez l'événement de dépôt pour démarrer le déclencheur.
Sélectionnez le dépôt contenant le code source et le fichier de configuration de compilation.
Indiquez l'expression régulière correspondant au nom de la branche ou du tag qui démarrera votre déclencheur.
Choisissez une Configuration pour votre déclencheur.
Si vous choisissez un fichier de configuration Cloud Build, vous pouvez spécifier des Variables de substitution en fournissant un nom de variable et la valeur que vous souhaitez lui associer. Dans l'exemple ci-dessous, la variable de substitution définie par l'utilisateur
_CLOUDSDK_CONTAINER_CLUSTER
spécifie le cluster vers lequel déployer et la variable de substitution définie par l'utilisateur_CLOUDSDK_COMPUTE_ZONE
spécifie son emplacement. Si vous souhaitez effectuer un déploiement sur un autre cluster, vous pouvez utiliser la même configuration de compilation et ne modifier que les valeurs des variables de substitution :YAML
steps: ... # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --image=gcr.io/project-id/image:tag - --location=${_CLOUDSDK_COMPUTE_ZONE} - --cluster=${_CLOUDSDK_CONTAINER_CLUSTER}
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--image=gcr.io/project-id/image:tag", "--location=${_CLOUDSDK_COMPUTE_ZONE}", "--cluster=${_CLOUDSDK_CONTAINER_CLUSTER}" ] } ] }
Où :
- kubernetes-resource-file est le chemin d'accès du fichier de configuration Kubernetes ou le chemin d'accès du répertoire contenant vos fichiers de ressources Kubernetes.
- project-id est l'ID de votre projet.
- image est le nom que vous souhaitez donner à l'image de conteneur, généralement le nom de l'application.
- tag est le tag de l'image du conteneur.
Pour en savoir plus sur la façon de définir des substitutions pour les fichiers de configuration de compilation, consultez la section Utiliser des substitutions définies par l'utilisateur.
Cliquez sur Créer pour enregistrer le déclencheur de compilation.
Lorsque vous transférez du code vers votre dépôt, Cloud Build déclenche automatiquement une compilation. Pour en savoir plus sur les déclencheurs de compilation, consultez la pageCréer et gérer des déclencheurs de compilation.
Étape suivante
- Découvrez comment configurer des déploiements automatisés pour vos charges de travail sur GKE.
- Découvrez comment créer un pipeline CI/CD de type GitOps en effectuant un déploiement sur GKE à l'aide de Cloud Build.
- Découvrez les options
gke-deploy
supplémentaires. - Découvrez comment effectuer des déploiements bleu-vert sur Compute Engine.
- Découvrez les compilateurs Cloud supplémentaires.
- Découvrez comment résoudre les erreurs de compilation.