Exécuter des applications App Engine sur GKE

Ce guide explique comment exécuter une application d'environnement flexible App Engine sur GKE. Pour exécuter votre application sur GKE, vous devez créer un fichier Docker pour celle-ci, créer un conteneur à l'aide de ce fichier Dockerfile, puis exécuter le conteneur dans GKE. Aucun changement de code n'est requis.

Avant de commencer

Avant de suivre les instructions de cette page, procédez comme suit :

  1. Vérifiez que votre application se déploie et s'exécute correctement dans l'environnement flexible App Engine.

  2. Dans ces instructions, vous utiliserez le même projet que pour votre application App Engine. Vous pouvez toujours créer et utiliser un nouveau projet, si vous le souhaitez.

  3. Activer les API GKE, Cloud Build.

    Activer les API

  4. Téléchargez et installez Google Cloud CLI, puis initialisez l'outil gcloud :
    Télécharger le SDK

  5. Téléchargez et installez l'outil Kubernetes kubectl.

  6. Vous avez également la possibilité d'utiliser Google Cloud Shell, qui comprend git, gcloud CLI ainsi que de nombreuses autres fonctionnalités, telles que des éditeurs de code et la compatibilité avec plusieurs langages.

  7. Téléchargez et installez git.

  8. Téléchargez et installez Node.js et npm. NPM (Node Package Manager) est généralement installé avec Node.js, mais vous pouvez installer Yarn Package Manager comme alternative et utiliser Yarn tout au long du tutoriel si vous le souhaitez. Important : Pour une expérience optimale sous Windows, effectuez une mise à niveau vers la dernière version du gestionnaire de packages Node.js (npm) en exécutant npm install -g npm. La dernière version de npm installe des dépendances dans une structure de répertoire horizontale. Il est donc peu probable que les installations entrent en conflit avec la longueur maximale du chemin Windows de 255 caractères. Si vous préférez continuer à utiliser une version plus ancienne de npm, vous pouvez réduire la longueur des chemins en déplaçant votre projet dans le répertoire racine de votre disque, par exemple, C:\.

    Créer un Dockerfile pour une application App Engine

    Créez un fichier Dockerfile pour votre application, comme décrit dans la section Créer un fichier Dockerfile.

    Compiler un conteneur à partir du fichier Dockerfile

    Pour compiler un conteneur :

    1. Assurez-vous que vous vous trouvez dans le répertoire de l'application App Engine contenant le fichier Dockerfile.

    2. Modifiez le projet par défaut utilisé par l'outil gcloud de sorte qu'il pointe vers le projet que vous utilisez pour exécuter votre application dans GKE :

      gcloud config set project [YOUR-PROJECT-ID]
      

      Remplacez [YOUR-PROJECT-ID] par l'ID de votre projet GKE.

    3. Compilez le conteneur en utilisant la commande suivante :

      gcloud builds submit --tag gcr.io/[YOUR-PROJECT-ID]/[YOUR-CONTAINER-NAME] .
      

      Remplacez [YOUR-PROJECT-ID] par l'ID du projet GKE et remplacez [YOUR-CONTAINER-NAME] par le nom du conteneur que vous souhaitez utiliser pour votre conteneur d'applications.

    4. Attendez la fin de la compilation du conteneur : cela peut prendre un certain temps. Une fois la compilation terminée avec succès, un message semblable à celui-ci s'affiche :

      Created [https://cloudbuild.googleapis.com/v1/projects/YOUR-PROJECT-ID/builds/xxxxxxx-xxxx-xxx-xxx-xxxxxxxxxxxx].
      Logs are permanently available at [https://console.developers.google.com/logs/viewer?resource=build&project=YOUR-PROJECT-ID&filters=text:xxxx-xxx-xxx-xxxxxxxxxxxx]].
      
      ID  CREATE_TIME DURATION  SOURCE                                                     IMAGES                               STATUS
      xxxxxxx-xxxx-xxx-xxx-xxxxxxxxxxxx  2017-03-04T00:42:10+00:00  1M32S     gs://YOUR-PROJECT-ID_cloudbuild/source/xxxxxxx.08.tgz  gcr.io/YOUR-PROJECT-ID/YOUR-CONTAINER-NAME  SUCCESS<
      

      Notez le nom du conteneur : vous devez le spécifier lorsque vous l'exécutez dans GKE.

    Exécuter votre application dans GKE

    Pour exécuter le conteneur qui contient votre application :

    1. Créez le cluster (cela peut prendre quelques minutes) :

      gcloud container clusters create [YOUR-CLUSTER-NAME]
      

      Remplacez [YOUR-CLUSTER-NAME] par le nom que vous souhaitez attribuer au cluster.

    2. À partir de la ligne de commande, définissez votre zone de calcul :

      gcloud config set compute/zone us-central1-b
      
    3. Assurez-vous que l'outil GKE kubectl est autorisé :

      gcloud container clusters get-credentials [YOUR-CLUSTER-NAME]
      

      Suivez les instructions pour autoriser l'outil.

    4. Exécutez le conteneur qui contient votre application :

      kubectl create deployment [YOUR-DEPLOYMENT-NAME] --image=gcr.io/[YOUR-PROJECT-ID]/[YOUR-CONTAINER-NAME]
      

      Remplacez [YOUR-DEPLOYMENT-NAME] par le nom que vous souhaitez utiliser pour votre déploiement, remplacez [YOUR-PROJECT-ID] par votre ID de projet GKE, et remplacez [YOUR-CONTAINER-NAME] par le nom du conteneur que vous avez créé pour votre application.

    5. Exposez le conteneur pour le rendre accessible au public :

      kubectl expose deployment [YOUR-DEPLOYMENT-NAME] --type="LoadBalancer" --port=8080
      

      Remplacez [YOUR-DEPLOYMENT-NAME] par le nom que vous avez utilisé lors des étapes précédentes. Vous devrez peut-être attendre plusieurs minutes avant que l'adresse IP externe ne soit visible.

    6. Affichez l'adresse IP externe de votre application :

      kubectl get service [YOUR-DEPLOYMENT-NAME]
      

      Remplacez [YOUR-DEPLOYMENT-NAME] par le nom que vous avez utilisé lors des étapes précédentes. Si le champ EXTERNAL IP est vide, attendez un instant, puis appelez de nouveau la commande.

    7. Regardez l'application s'exécuter dans GKE :

      http://EXTERNAL-IP:8080
      

      Remplacez EXTERNAL-IP par l'adresse IP externe obtenue à l'étape précédente.

    Vous venez de déployer et d'exécuter votre application Node.js App Engine sur GKE.

    Étape suivante

    Vous souhaitez peut-être en savoir plus sur Kubernetes et la commande kubectl. Google Kubernetes Engine utilise Kubernetes pour la gestion, le déploiement et le scaling des conteneurs. De plus amples informations sur Kubernetes sont disponibles sur le site externe de Kubernetes.

    Ce guide utilise kubectl, l'interface de ligne de commande pour la gestion des clusters Kubernetes. Des informations complémentaires sur kubectl sont disponibles dans la référence kubectl.