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 Dockerfile pour celle-ci, créer un conteneur avec Cloud Build, puis exécuter ce conteneur dans GKE. Aucune modification de code n'est requise.

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. Enable the GKE, Cloud Build APIs.

    Enable the APIs

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

    Vous pouvez également utiliser Cloud Shell, qui comprend la CLI gcloud, git et d'autres fonctionnalités préinstallées comme les langages acceptés, les outils et les éditeurs.

  5. Installer l'outil de ligne de commande kubectl :

    gcloud components install kubectl
    
  6. Télécharger et installer Git.

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. Vérifiez que vous êtes bien 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 App Engine sur GKE.

Étapes suivantes

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.