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. Installez PHP 7.2 ou 7.3.

  9. Pour gérer les dépendances, téléchargez Composer et assurez-vous que son exécutable est installé au niveau mondial.

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 PHP 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.