Cómo implementar y probar tu aplicación

Aprende cómo ejecutar, implementar y probar tu aplicación de manera local en App Engine.

Cómo ejecutar de manera local

Para probar la funcionalidad antes de la implementación, ejecuta tu aplicación en un entorno local con las herramientas para desarrolladores que sueles usar.

Por ejemplo, el comando go run.

Cómo implementar tu aplicación

Implementa tu aplicación en App Engine con el comando gcloud app deploy, que ensamblará de manera correcta las dependencias de tu aplicación de la misma manera en que lo hace la herramienta go. Este comando compila de manera automática una imagen de contenedor mediante el servicio de Cloud Build y, luego, implementa esa imagen en el entorno flexible de App Engine. 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:

Cómo garantizar una implementación exitosa

Si habilitas las verificaciones de estado actualizadas, las implementaciones se revierten en caso de que tu aplicación no alcance un buen estado.

Cuando implementas tu primera aplicación en el entorno flexible, es posible que se produzca una demora por la configuración de tu máquina virtual (VM) y otra infraestructura. Después de la configuración inicial, las verificaciones de estado se aseguran de que tu instancia esté en buen estado y lista para recibir el tráfico. Si tu aplicación no alcanza un estado apto en un período específico, que indica el campo initial_delay_sec en la sección liveness_check de tu archivo app.yaml, entonces tu implementación fallará y se revertirá.

Tu aplicación puede necesitar más tiempo para estar lista. Por ejemplo, puedes inicializar tu aplicación si descargas archivos grandes o precargas cachés. Si usas las verificaciones de estado actualizadas, puedes aumentar la cantidad de tiempo cuando modificas la configuración de app_start_timeout_sec en la sección readiness_check en tu archivo app.yaml.

Cómo implementar un servicio

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

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

gcloud app deploy

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

Puedes cambiar el comportamiento predeterminado del comando si orientas los archivos específicos o incluyes parámetros adicionales.

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

    gcloud app deploy cron.yaml
    gcloud app deploy dispatch.yaml
    gcloud app deploy index.yaml
    
  • Para especificar un ID de versión personalizada, utiliza el marcador --version.

  • Para evitar que el tráfico se enrute de manera automática a la nueva versión, utiliza el marcador --no-promote.

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

Por ejemplo, para implementar el servicio definido por app.yaml en un proyecto de GCP, debes asignarle un ID de versión personalizada para evita que el tráfico se enrute a la versión nueva.

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.

Cómo implementar varios servicios

Puedes usar el mismo comando de implementación para implementar o actualizar varios de los servicios que conforman tu aplicación.

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

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

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

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

Requisitos para implementar varios servicios

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

  • El ID de cada uno de tus servicios se debe especificar en sus archivos de configuración app.yaml correspondientes. Para especificar el ID de servicio, incluye la definición del elemento service en cada archivo de configuración. De manera predeterminada, excluir esta definición del elemento de tu archivo de configuración implementa la versión en el servicio default.

Cómo omitir archivos

Puedes usar un archivo .gcloudignore para especificar que los archivos y directorios no se suban a GCP cuando implementas tus servicios. Esto es útil para ignorar artefactos de compilación y otros archivos que no necesitan subirse con tu implementación.

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

Cómo compilar manualmente un contenedor para la implementación

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

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

gcloud app deploy --image-url gcr.io/YOUR_PROJECT_ID/YOUR_CONTAINER_IMAGE
Para obtener más información sobre cómo compilar tu propia imagen de contenedor, consulta la sección Ampliación del entorno de ejecución.

Cómo usar las canalizaciones de implementación continua y automática

Puedes utilizar Cloud Build para automatizar las implementaciones en las canalizaciones continuas. Para obtener más información, consulta Implementa artefactos y Automatiza compilaciones mediante activadores de compilación en la documentación de Cloud Build.

Cómo visualizar tu aplicación

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

gcloud app browse

Cómo 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 para tu servicio default, realiza los siguientes pasos:

  1. Implementa tu nueva versión y, además, incluye el marcador --no-promote:

    gcloud app deploy --no-promote
  2. Ingresa a la nueva versión desde la siguiente URL:

    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 depurar tu aplicación si observas sus registros en el visor de registros de Stackdriver de Google Cloud Platform Console. Para obtener más información, consulta Escritura de registros de aplicaciones.

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

  3. Cuando desees enviar tráfico a la nueva versión, utiliza GCP Console para migrarlo:

    Cómo administrar versiones

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

Puedes usar el mismo proceso para probar las versiones nuevas de otros servicios si reemplazas default en la URL por el nombre de tu servicio:

http://VERSION_ID.SERVICE_ID.YOUR_PROJECT_ID.appspot.com
Para obtener más información sobre cómo orientar versiones y servicios específicos, consulta Cómo enrutar solicitudes.

Solución de 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 obligatoria, el comando gcloud app deploy puede fallar cuando intenta ejecutar el comando gcloud app create. Solo las cuentas con función de Propietario tienen los permisos necesarios para crear aplicaciones de App Engine.