Ejecutar aplicaciones de App Engine en GKE

En esta guía se explica cómo ejecutar una aplicación del entorno flexible de App Engine en GKE. Para ejecutar tu aplicación en GKE, debes crear un Dockerfile, compilar un contenedor con Cloud Build y, a continuación, ejecutar ese contenedor en GKE. No es necesario hacer ningún cambio en el código.

Antes de empezar

Antes de seguir las instrucciones de esta página, haz lo siguiente:

  1. Verifica que tu aplicación se despliega y se ejecuta correctamente en el entorno flexible de App Engine.

  2. En estas instrucciones, usarás el mismo proyecto que usaste para tu aplicación de App Engine. Si quieres, puedes crear y usar un proyecto nuevo.

  3. Enable the GKE, Cloud Build APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  4. Descarga e instala la CLI de Google Cloud y, a continuación, inicializa la herramienta gcloud: Descarga el SDK de Google Cloud.

    También puedes usar Cloud Shell, que incluye la CLI de gcloud, git y otras funciones preinstaladas, como compatibilidad con idiomas, herramientas y editores.

  5. Instala la herramienta de línea de comandos kubectl:

    gcloud components install kubectl
    
  6. Descarga e instala git.

Crear un Dockerfile para una aplicación de App Engine

Crea un Dockerfile para tu aplicación tal como se describe en Crear un Dockerfile.

Crear un contenedor a partir del Dockerfile

Para crear un contenedor, sigue estos pasos:

  1. Asegúrate de que te encuentras en el directorio de la aplicación de App Engine que contiene el archivo Dockerfile.

  2. Cambia el proyecto predeterminado que usa la herramienta gcloud para que apunte al proyecto que usas para ejecutar tu aplicación en GKE:

    gcloud config set project [YOUR-PROJECT-ID]
    

    Sustituye [YOUR-PROJECT-ID] por el ID de tu proyecto de GKE.

  3. Compila el contenedor con el siguiente comando:

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

    Sustituye [YOUR-PROJECT-ID] por el ID del proyecto de GKE y [YOUR-CONTAINER-NAME] por el nombre del contenedor que quieras usar para el contenedor de tu aplicación.

  4. Espera a que se compile el contenedor. Puede tardar un poco. Cuando se complete correctamente, se mostrará un mensaje como este:

    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<
    

    Anota el nombre del contenedor, ya que tendrás que especificarlo cuando lo ejecutes en GKE.

Ejecutar la aplicación en GKE

Para ejecutar el contenedor que contiene tu aplicación, haz lo siguiente:

  1. Crea el clúster (este proceso puede tardar unos minutos):

    gcloud container clusters create [YOUR-CLUSTER-NAME]
    

    Sustituye [YOUR-CLUSTER-NAME] por el nombre que quieras asignar al clúster.

  2. Desde la línea de comandos, define tu zona de cálculo:

    gcloud config set compute/zone us-central1-b
    
  3. Asegúrate de que la herramienta kubectl de GKE esté autorizada:

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

    Sigue las indicaciones para autorizar la herramienta.

  4. Ejecuta el contenedor que contiene tu aplicación:

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

    Sustituye [YOUR-DEPLOYMENT-NAME] por el nombre que quieras usar para tu implementación, [YOUR-PROJECT-ID] por el ID de tu proyecto de GKE y [YOUR-CONTAINER-NAME] por el nombre del contenedor que has creado para tu aplicación.

  5. Expón el contenedor para que se pueda acceder públicamente:

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

    Sustituye [YOUR-DEPLOYMENT-NAME] por el nombre que has usado en los pasos anteriores. Es posible que tengas que esperar varios minutos para que se muestre la IP externa.

  6. Para ver la dirección IP externa de tu aplicación, sigue estos pasos:

    kubectl get service [YOUR-DEPLOYMENT-NAME]
    

    Sustituye [YOUR-DEPLOYMENT-NAME] por el nombre que has usado en los pasos anteriores. Si el campo EXTERNAL IP está vacío, espera un rato y vuelve a invocar el comando.

  7. Ver la aplicación en ejecución en GKE:

    http://EXTERNAL-IP:8080
    

    Sustituye EXTERNAL-IP por la dirección IP externa que has obtenido en el paso anterior.

Has desplegado y ejecutado correctamente tu aplicación de App Engine en GKE.

Siguientes pasos

Te recomendamos que consultes más información sobre Kubernetes y el comando kubectl. Google Kubernetes Engine usa Kubernetes para gestionar, desplegar y escalar contenedores. Puedes consultar más información sobre Kubernetes en el sitio externo de Kubernetes.

En esta guía se usa kubectl, la interfaz de línea de comandos para gestionar clústeres de Kubernetes. Puedes consultar más información sobre kubectl en la referencia de kubectl.