Implementa una app de App Engine en el entorno estándar de Cloud Run

ID de región

REGION_ID es un código abreviado que Google asigna en función de la región que eliges cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.

Obtén más información acerca de los ID de región.

En esta guía, se describe cómo implementar tus apps en el entorno estándar en Cloud Run con Google Cloud CLI. Las instrucciones se aplican a los entornos de ejecución de segunda generación que no usan los servicios agrupados heredados de App Engine.

Cloud Run usa gran parte de la misma infraestructura que el entorno estándar de App Engine, lo que genera muchas similitudes entre las plataformas. Para obtener más información sobre las similitudes y diferencias entre App Engine y Cloud Run, incluidos los beneficios de migrar a Cloud Run, consulta el resumen de comparación.

Para realizar la implementación en Cloud Run con el comando gcloud beta app migrate, elige una de las siguientes estrategias:

Antes de comenzar

  1. Asegúrate de tener acceso al código fuente de App Engine y de que tu aplicación de App Engine se ejecute sin errores.

  2. Habilita la API de Cloud Run Admin y la API de Artifact Registry:

    Habilita las API

  3. Configura tu proyecto y región con el siguiente comando:

    gcloud auth login
    gcloud config set project PROJECT_ID
    gcloud config set run/region REGION
    gcloud components update
    

    Reemplaza lo siguiente:

    • PROJECT_ID por el ID de tu proyecto de Google Cloud .
    • REGION con tu región.
  4. Revisa las funciones incompatibles en tu aplicación y quítalas antes de migrar a Cloud Run. Si hay funciones incompatibles en tu aplicación existente, el proceso de migración se detendrá y se enumerarán las incompatibilidades.

  5. Revisa las siguientes diferencias de Cloud Run:

    • Cloud Run usa el término Revision, en lugar de Version, para representar cada vez que implementas cambios en un servicio específico. Cuando implementas tu app en un servicio en Cloud Run por primera vez, se crea su primera revisión. Cada implementación posterior de un servicio crea otra revisión. Obtén más información sobre la implementación en Cloud Run.

    • Puedes implementar tu código fuente en Cloud Run con gcloud CLI o la Google Cloud consola para configurar y administrar la configuración de tu app. Cloud Run no requiere configuración basada en archivos. Sin embargo, se admite la configuración de YAML.

    • Cada servicio que implementas en Cloud Run usa el dominio run.app en la URL para acceder al servicio públicamente.

    • A diferencia de los servicios de App Engine que son públicos de forma predeterminada, los servicios de Cloud Run son privados de forma predeterminada y requieren que los configures para el acceso público (no autenticado).

Roles obligatorios

Puedes elegir crear una cuenta de servicio nueva o usar la misma cuenta de servicio administrada por el usuario en Cloud Run que usas en App Engine. Tú o tu administrador deben otorgar los siguientes roles de IAM a la cuenta del implementador y a la cuenta de servicio de Cloud Build.

Haz clic para ver los roles necesarios para la cuenta del implementador

Para obtener los permisos que necesitas para compilar e implementar desde la fuente, pídele a tu administrador que te otorgue los siguientes roles de IAM:

Haz clic para ver los roles necesarios para la cuenta de servicio de Cloud Build

Cloud Build usa automáticamente la cuenta de servicio predeterminada de Compute Engine como la cuenta de servicio predeterminada de Cloud Build para compilar tu código fuente y el recurso de Cloud Run, a menos que anules este comportamiento. Para que Cloud Build pueda compilar tus fuentes, pídele a tu administrador que otorgue el rol de Compilador de Cloud Run (roles/run.builder) a la cuenta de servicio predeterminada de Compute Engine en tu proyecto:

  gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/run.builder
  

Reemplaza PROJECT_NUMBER por el número de tu proyecto Google Cloudy PROJECT_ID por el ID del proyecto proyecto Google Cloud. Para obtener instrucciones detalladas sobre cómo encontrar el ID y el número de tu proyecto, consulta Crea y administra proyectos.

El otorgamiento del rol de compilador de Cloud Run a la cuenta de servicio predeterminada de Compute Engine tarda un par de minutos en propagarse.

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu servicio de Cloud Run interactúa con lasGoogle Cloud APIs, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta los permisos de implementación y cómo administrar el acceso.

Usa el archivo app.yaml

Ejecuta el siguiente comando para traducir tu archivo app.yaml de App Engine a un servicio de Cloud Run:

gcloud beta app migrate-to-run --appyaml=PATH --entrypoint=ENTRYPOINT

Reemplaza lo siguiente:

  • PATH con la ruta de acceso a tu archivo app.yaml.
  • ENTRYPOINT con el comando de punto de entrada para tu aplicación.

Si estás en el directorio del proyecto, ambos argumentos PATH y ENTRYPOINT son opcionales.

Para obtener más información sobre los argumentos que puedes usar con el comando gcloud beta app migrate-to-run, consulta gcloud beta app migrate-to-run.

Implementa una aplicación existente de App Engine

Ejecuta el siguiente comando para implementar una app existente de App Engine directamente en Cloud Run:

gcloud beta app migrate-to-run --service=SERVICE --version=VERSION --entrypoint=ENTRYPOINT

Este comando te solicita que especifiques la ruta de acceso relativa a tu directorio de código fuente.

Reemplaza lo siguiente:

  • SERVICE por el nombre de tu servicio de App Engine.
  • VERSION con el ID de la versión de tu servicio.
  • ENTRYPOINT con el comando de punto de entrada para tu aplicación. Si te encuentras en el directorio del proyecto, este argumento es opcional.

Para obtener más información sobre los argumentos que puedes usar con el comando gcloud beta app migrate, consulta gcloud beta app migrate-to-run.

Funciones incompatibles

El comando de migración falla si tu archivo app.yaml contiene alguna de las siguientes configuraciones no admitidas:

  • Servicios de entrada:

    inbound_services:
    - warmup
    
  • Páginas de error personalizadas:

    error_handlers:
    - file: default_error.html
    - error_code: over_quota
      file: over_quota.html
    
  • Servicios agrupados en paquetes para entornos de ejecución de segunda generación:

    app_engine_apis: true
    
  • Variables de entorno de compilación:

    build_env_variables:
      Foo: Bar
    
  • Entornos de ejecución de primera generación:

    runtime: python27
    

¿Qué sigue?