Implementa la app para subirla y ejecutarla en App Engine. Cuando implementas tus aplicaciones, creas versiones de esas aplicaciones y los servicios correspondientes en App Engine. Puedes implementar apps completas, incluidos todos los archivos de configuración y de código fuente, o bien puedes implementar y actualizar versiones o archivos de configuración individuales.
Para implementar las apps de manera programática, usa la API de Administrador.
Si usas la herramienta obsoleta appcfg
para implementar apps, consulta la referencia de appcfg a fin de obtener información sobre el uso de la herramienta.
Antes de comenzar
Antes de que implementes la app, ten en cuenta lo siguiente:
El propietario del proyecto de Cloud debe crear la aplicación de App Engine.
Asegúrate de que tu cuenta de usuario tenga los privilegios necesarios.
Otorga a Cloud Build permiso para implementar apps en tu proyecto. Cuando implementas tu app, App Engine usa Cloud Build para compilar la app en un contenedor e implementar el contenedor en el entorno de ejecución. Cloud Build no tiene permiso para implementar apps de Phyton 2 de forma predeterminada, por lo que debes otorgarle permiso antes de poder implementarlas.
Instala la herramienta de línea de comandos de gcloud
Para implementar la app con la herramienta de gcloud
, debes descargar, instalar y, luego, inicializar el SDK de Cloud.
Si ya tienes la herramienta de gcloud
instalada y deseas configurarla para usar un ID del proyecto de Cloud distinto del que usaste en su inicialización, consulta Administra las opciones de configuración del SDK de Cloud.
Usa un proxy
Si ejecutas el comando de implementación desde un sistema que usa un proxy HTTP o HTTPS, debes configurar la herramienta para que pueda comunicarse a través del proxy.
Ejecuta los siguientes comandos para configurar la herramienta de gcloud
:
gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]
También puedes establecer un username
y una password
para el proxy. Para obtener más información, consulta el archivo de configuración de gcloud.
Implementa una app
Para implementar la app en App Engine, usa el comando gcloud app deploy
desde la ubicación en la que se encuentran tus archivos de configuración, por ejemplo, app.yaml
.
Elige ID de versión únicos
El ID de versión de las instancias escaladas de forma manual debe comenzar con una letra para distinguirlo de los ID numéricos de las instancias. De esta manera, te aseguras de que las solicitudes se enruten al destino correcto y evitas la ambigüedad en los patrones de URL como123-dot-my-service.[REGION_ID].r.appspot.com
, que pueden interpretarse de dos maneras:
- Si existe la versión
123
, la solicitud se enruta a la versión123
del serviciomy-service
. - Si la versión
123
no existe, la solicitud se enruta al ID de instancia123
en el que se ejecutan las versiones del serviciomy-service
.
Puedes nombrar de la manera que quieras las versiones de las instancias configuradas con ajuste de escala automático o básico, ya que no se admite la orientación hacia esas instancias.
gcloud app deploy [CONFIGURATION_FILES]
De forma predeterminada, el comando implementa el archivo de configuración app.yaml
desde el directorio actual. Si ejecutas el comando desde un directorio que no contiene el archivo app.yaml
de tu app o si deseas implementar varias apps, reemplaza [CONFIGURATION_FILES]
por la ruta de acceso de uno o más archivos de configuración.
Usa un solo espacio en blanco para separar los nombres de las rutas.
Marcas opcionales:
--version
: Especifica un ID de versión personalizado. De forma predeterminada, App Engine genera un ID de versión.--no-promote
: Implementa la app sin enrutar de forma automática todo el tráfico a esa versión. De forma predeterminada, cada versión que implementas se configura de forma automática para recibir la totalidad del tráfico.--project
: Especifica un ID del proyecto de Cloud alternativo al que inicializaste como predeterminado en la herramienta degcloud
.
Para obtener más información, consulta la referencia de gcloud app deploy
o ejecuta gcloud help
desde la línea de comandos.
Ejemplos:
gcloud app deploy
gcloud app deploy app.yaml dos.yaml index.yaml
gcloud app deploy --version [YOUR_VERSION_ID] --no-promote --project [YOUR_PROJECT_ID]
Si implementas una versión que especifica el mismo ID de versión que una versión que ya existe en App Engine, los archivos que implementes reemplazarán la versión existente. Esto puede generar problemas si la versión está entregando tráfico, ya que podría interrumpirse el tráfico hacia tu aplicación. Puedes evitar los posibles problemas si implementas tu versión nueva con un ID de versión distinto y luego llevas el tráfico a esa versión.
Cómo implementar aplicaciones de servicios varios
Cuando tu aplicación incluye varios servicios, puedes implementar y actualizar servicios determinados de manera individual o todos los servicios en simultáneo. La implementación de actualizaciones en los servicios puede incluir la actualización de archivos de configuración individuales o del código fuente en las versiones correspondientes.
Por ejemplo, puedes implementar y crear dos versiones en App Engine, de modo que cada versión se ejecute en su propio servicio. La primera versión actúa como el servicio de frontend de la app y la otra como su backend. Luego, puedes implementar archivos de configuración individuales para actualizar solo la configuración de un servicio. También puedes optar por implementar una versión nueva en un servicio para actualizar el código fuente del frontend, del backend o de ambos de manera simultánea.
Requisitos para servicios varios
Para implementar y actualizar los servicios múltiples de tu aplicación, debes usar los mismos comandos de implementación y cumplir los siguientes requisitos:
Primero debes implementar una versión de la app en el servicio
default
, antes de poder crear e implementar los servicios posteriores.Debes especificar el ID del servicio en el archivo de configuración
app.yaml
de la versión correspondiente. Para especificar el ID del servicio, incluye la definición del elementoservice: [YOUR_SERVICE_ID]
en cada archivo de configuración. De forma predeterminada, si se excluye la definición de este elemento del archivo de configuración, se implementa la versión en el serviciodefault
.Debes especificar todos los archivos de configuración
app.yaml
correspondientes en tu comando de implementación para implementar varios servicios en simultáneo.
Implementa varios servicios
Desde el directorio raíz de la aplicación, en el que se ubican los archivos de configuración, ejecuta el comando de implementación y especifica las rutas de acceso y los nombres de archivo relacionados para el archivo app.yaml
de cada servicio.
gcloud app deploy [CONFIGURATION_FILES]
En el comando anterior, [CONFIGURATION_FILES]
es la ruta de acceso y el nombre de uno o más archivos de configuración, separados por un espacio en blanco.
Ejemplo
gcloud app deploy main/app.yaml service1/app.yaml service2/app.yaml
A medida que los distintos servicios se implementen de forma correcta, recibirás la verificación a través de la línea de comandos.
Actualiza índices
Para crear o actualizar los índices que usan tus apps, sube el archivo de configuración index.yaml
a Datastore. Los índices que todavía no existen se crean luego de subir el archivo de configuración.
Es posible que le lleve un tiempo considerable a Datastore crear todos los índices, por lo que estos no estarán disponibles de inmediato para App Engine. Si tu app ya está configurada para recibir tráfico, pueden generarse excepciones ante consultas que requieran un índice que aún se encuentra en proceso de creación.
A fin de evitar las excepciones, tienes que destinar el tiempo necesario para que se creen todos los índices, por ejemplo, de las siguientes maneras:
Sube el archivo de configuración
index.yaml
a Datastore antes de implementar tu versión:Sube el archivo
index.yaml
a Datastore:<pre class="prettyprint lang-sh">gcloud datastore indexes create index.yaml</pre> For information, see the <a href="/sdk/gcloud/reference/datastore/"><code>gcloud datastore</code> reference</a>.
Usa Cloud Console para supervisar el estado de todos los índices:
Una vez que se hayan creado todos los índices, implementa la versión nueva en App Engine.
Crea los índices antes de dividir el tráfico o de migrarlo a tu versión:
-
Implementa la versión nueva sin enrutar el tráfico a esa versión. Para hacerlo, debes especificar los archivos
app.yaml
yindex.yaml
, y también incluir la marca--no-promote
para que no se enrute el tráfico a la versión:gcloud app deploy app.yaml index.yaml --no-promote
- Usa Cloud Console para supervisar el estado de todos los índices:
- Una vez que se hayan creado todos los índices, usa Cloud Console para dividir el tráfico o migrarlo a la versión:
-
Implementa la versión nueva sin enrutar el tráfico a esa versión. Para hacerlo, debes especificar los archivos
Si quieres obtener más información sobre índices, consulta Cómo configurar los índices en Datastore.
Solución de problemas
A continuación, se muestran algunos mensajes de error comunes que puedes encontrar:
PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
- Si el proyecto de Cloud no incluye la aplicación de App Engine obligatoria, es posible que el comando
gcloud app deploy
falle cuando intente ejecutar el comandogcloud app create
. Solo las cuentas con función de propietario tienen los permisos necesarios para crear aplicaciones de App Engine. Command not found
- Si no creaste symlinks para las herramientas de
dev_appserver.sh
cuando instalaste el SDK de App Engine (obsoleto), es posible que debas especificar la ruta de acceso al directorio completa para ejecutar la herramienta, ejemplo:[PATH_TO_CLOUD_SDK]/bin/dev_appserver.py
. Import Error
- Si instalaste el SDK de Cloud y el SDK original de App Engine, es posible que las entradas a tu RUTA DE ACCESO entren en conflicto unas con otras y causen errores de importación. Si surgieron errores cuando ejecutaste los comandos del SDK de Cloud, intenta usar de forma explícita el SDK original de App Engine. Puedes mover la entrada del SDK original de App Engine a una posición más adelante en tu RUTA DE ACCESO para que esos comandos tengan prioridad. Como alternativa, puedes ejecutar el comando si especificas la ruta de acceso completa del directorio:
[PATH_TO_APP_ENGINE_SDK]/dev_appserver.py
.
[400] The first service (module) you upload to a new application must be the 'default' service (module)
- Antes de que puedas implementar y crear los varios servicios de la aplicación, debes implementar y crear el servicio
default
. Para obtener detalles sobre cómo implementar una versión en el serviciodefault
, consulta la sección Implementa aplicaciones de varios servicios. Too Many Versions (403)
- App Engine tiene un límite en cuanto a la cantidad de versiones implementadas de la aplicación. Existen diferencias entre el límite de las aplicaciones gratuitas y el de las implementadas. Puedes usar Cloud Console para borrar una versión anterior y, luego, subir tu código más reciente.
- Otro error de implementación
- Si la implementación falla, asegúrate de que la API de Cloud Build esté habilitada en el proyecto. App Engine habilita esta API de forma automática la primera vez que implementas una app, pero si alguien inhabilitó la API luego, las implementaciones fallarán.
Próximos pasos
- Utiliza servicios para crear una aplicación grande.
- Divide el tráfico o mígralo para enrutarlo hacia las versiones que implementes.
- Revisa las marcas y los argumentos de línea de comandos de
gcloud app deploy
.