Implementar y probar tu aplicación

Aprende cómo ejecutar una aplicación de manera local, implementarla y probarla en App Engine.

Ejecutar localmente

Para probar la funcionalidad de la aplicación antes de implementarla, ejecútala en tu entorno local con las herramientas para desarrolladores que sueles utilizar.

Por ejemplo, generalmente, para ejecutar una aplicación Flask con el servidor de desarrollo de Flask, puedes usar lo siguiente:

python main.py

Las aplicaciones Django se pueden iniciar de la siguiente manera:

python manage.py runserver

Para simular un entorno de producción de App Engine, puedes ejecutar todo el servidor de la interfaz de puerta de enlace del servidor web (WSGI) de manera local. Para hacerlo, utiliza el mismo comando especificado como entrypoint en tu app.yaml; por ejemplo:

gunicorn -b :$PORT main:app

Implementar la aplicación

Implementa la aplicación en App Engine con el comando gcloud app deploy. Este comando compila, de manera automática, una imagen de contenedor mediante el servicio Cloud Build y, a continuación, implementa esa imagen en el entorno de App Engine Flexible. El contenedor incluirá las modificaciones locales que realizaste en la imagen del entorno de ejecución.

Para implementar tus aplicaciones de manera programática, utiliza la API de Administrador.

Antes de comenzar

Antes de implementar tu aplicación:

Garantizar una implementación exitosa

Si habilitas las verificaciones de estado actualizadas, las implementaciones se revertirán en caso de que tu aplicación no alcance el estado correcto.

Cuando implementas la primera aplicación en el entorno flexible, podría producirse un retraso mientras se configuran la máquina virtual (VM) y otras infraestructuras. Tras la configuración inicial, las verificaciones de estado garantizan que la instancia esté en buen estado y lista para recibir el tráfico. Si la aplicación no alcanza el nivel esperado en un período especificado detallado en el campo initial_delay_sec de la sección liveness_check del archivo app.yaml, la implementación fallará y se revertirá.

Es posible que la aplicación requiera más tiempo para estar lista. Por ejemplo, podrías inicializar la aplicación mediante la descarga de archivos grandes o la precarga de memorias caché. Si utilizas verificaciones de estado actualizadas, puedes aumentar la cantidad de tiempo; para ello, modifica la configuración de app_start_timeout_sec en la sección readiness_check de tu archivo app.yaml.

Implementar un servicio

Para implementar la aplicación en App Engine, debes implementar versiones de los servicios de la aplicación y cada uno de sus archivos de configuración.

Para implementar una versión del servicio de la aplicación, ejecuta el siguiente comando desde el directorio donde está ubicado el archivo app.yaml de tu servicio:

gcloud app deploy

Si no especificas archivos con este comando, se implementa solo el archivo app.yaml ubicado en el directorio actual. De forma predeterminada, el comando deploy genera un ID único para la versión implementada, implementa la versión en el proyecto de GCP que configuraste a fin de que lo utilice la herramienta gcloud y enruta todo el tráfico a la nueva versión.

Para cambiar el comportamiento predeterminado del comando, puedes orientarte a archivos específicos o incluir parámetros adicionales:

  • Para implementar los otros archivos de configuración de tu servicio, debes orientarte a cada archivo y, luego, implementarlo por separado. Por ejemplo:

    gcloud app deploy cron.yaml
    gcloud app deploy dispatch.yaml
    gcloud app deploy index.yaml
    
  • Para especificar un ID de la versión personalizado, utiliza la marca --version.

  • Para impedir que el tráfico se enrute automáticamente a la nueva versión, utiliza la marca --no-promote.

  • Para implementar en un proyecto de GCP específico, utiliza la marca --project.

Por ejemplo, para implementar el servicio definido por app.yaml en un proyecto de GCP específico, asígnale un ID de versión personalizado a fin de impedir que el tráfico se enrute a la nueva versión:

gcloud app deploy --project PROJECT_ID --version VERSION_ID --no-promote

Para obtener más información sobre este comando, consulta la referencia de gcloud app deploy.

Implementar varios servicios

Se utiliza el mismo comando de implementación para implementar o actualizar los servicios múltiples que conforman la aplicación.

Para implementar varios servicios, debes implementar cada archivo app.yaml del servicio por separado. Por ejemplo:

gcloud app deploy service1/app.yaml
gcloud app deploy service2/app.yaml

Puedes especificar varios archivos con un mismo comando de implementación:

gcloud app deploy service1/app.yaml service2/app.yaml

Requisitos para implementar varios servicios

  • Inicialmente, debes implementar una versión de la aplicación en el servicio default antes de poder crear y luego implementar los servicios posteriores.

  • El ID de cada uno de los servicios debe especificarse en los archivos de configuración app.yaml correspondientes. Para especificar el ID del servicio, incluye la definición del elemento service en cada archivo de configuración. De forma predeterminada, excluir esta definición del elemento de tu archivo de configuración implementará la versión en el servicio default.

Ignorar archivos

Puedes utilizar un archivo .gcloudignore para especificar que los archivos y directorios no se suban a GCP cuando implementes tus servicios. Esto es útil con el fin de ignorar artefactos de compilación y otros archivos que no es necesario subir con la implementación.

Obtén más información sobre la sintaxis del archivo .gcloudignore en la referencia de gcloud.

Compilar manualmente un contenedor para la implementación

Para compilar las imágenes del contenedor fuera de Google Cloud Platform, primero debes subirlas a un repositorio de imágenes de contenedor antes de poder implementar las imágenes en App Engine con el comando gcloud app deploy.

Por ejemplo, si compilas las imágenes en el contenedor de manera local con Docker, puedes enviar esas imágenes a Google Container Registry y, luego, especificar la URL de tu imagen en la marca --image-url del comando:

gcloud app deploy --image-url gcr.io/YOUR_PROJECT_ID/YOUR_CONTAINER_IMAGE

Usar las canalizaciones de implementación automática continua

Puedes usar Cloud Build para automatizar las implementaciones en canalizaciones de implementaciones continuas. Si deseas obtener más información, consulta Artefactos de implementación y Automatizar compilaciones mediante activadores de compilación en la documentación de Cloud Build.

Imágenes base de Docker para Python

Si deseas compilar una aplicación con un entorno de ejecución personalizado de Python desde cero, utiliza una imagen base proporcionada en tu Dockerfile:

Entorno de ejecución Comando Docker runtime de Google equivalente
Python (2.7, 3.6 se lo puede especificar en el Dockerfile) FROM gcr.io/google-appengine/python runtime: python

Ver la aplicación

Después de implementar la aplicación en App Engine, puedes ejecutar el siguiente comando para iniciar el navegador y verlo en http://YOUR_PROJECT_ID.appspot.com:

gcloud app browse

Realizar pruebas en App Engine

Antes de configurar una nueva versión para recibir tráfico, puedes probarla en App Engine. Por ejemplo, si deseas probar una nueva versión de tu servicio default, puedes hacer lo siguiente:

  1. Implementa la nueva versión y, además, incluye la marca --no-promote:

    gcloud app deploy --no-promote
  2. Navega a la siguiente URL para acceder a tu nueva versión:

    http://VERSION_ID.default.YOUR_PROJECT_ID.appspot.com
    

    Ahora puedes probar tu nueva versión en el entorno de ejecución de App Engine. Puedes ver los registros de tu aplicación a fin de depurarla. Para obtener más información, consulta Escribir registros de aplicaciones.

    Las solicitudes enviadas a http://YOUR_PROJECT_ID.appspot.com se enrutarán a la versión configurada previamente para recibir el tráfico.

  3. Cuando desees enviar tráfico a la nueva versión, usa GCP Console para migrar el tráfico:

    Gestionar versiones

    Selecciona la versión que acabas de implementar y haz clic en Migrar tráfico.

Puedes usar el mismo proceso si quieres probar nuevas versiones de otros servicios; para ello, reemplaza default en la URL con el nombre del servicio:

http://VERSION_ID.SERVICE_ID.YOUR_PROJECT_ID.appspot.com

Para obtener más información sobre cómo orientarse a servicios y versiones específicos, consulta: Cómo se enrutan las solicitudes.

Solucionar problemas

El siguiente es un mensaje de error común que puedes encontrar cuando implementas aplicaciones:

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Si el proyecto de GCP no incluye la aplicación de App Engine requerida, el comando gcloud app deploy puede fallar cuando intente ejecutar el comando gcloud app create. Solo las cuentas con la función de propietario tienen los permisos necesarios para crear aplicaciones de App Engine.
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación del entorno de App Engine Flexible para Python