Implementa una app de App Engine en el entorno flexible en 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 existentes en el entorno flexible en Cloud Run.

Los pasos que se describen en esta guía no afectan la funcionalidad ni el flujo de tráfico de tu app de App Engine existente. El servicio de Cloud Run recién creado es una réplica del servicio de App Engine que puedes probar de forma independiente.

El entorno flexible de App Engine y Cloud Run son plataformas de aplicaciones nativas de contenedores completamente administradas, pero difieren estructuralmente. 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 comparaciones.

Para implementar en Cloud Run, usa la configuración local de tu archivo app.yaml. Esto compila una imagen de contenedor a partir de tu código fuente local, por lo que cualquier cambio reciente en tu código o configuración se incluye en la implementación nueva.

Antes de comenzar

  1. Asegúrate de que tu aplicación de App Engine se ejecute sin errores. Necesitas acceso al código fuente de App Engine si eliges implementar con tu configuración local.

  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: Es el ID del proyecto de Google Cloud .
    • REGION: la región en la que deseas implementar tu servicio de Cloud Run.
  4. Verifica si hay funciones incompatibles en tu aplicación y quítalas antes de migrar a Cloud Run. Para verificar si tu aplicación es incompatible sin realizar una migración o implementación, ejecuta el siguiente comando:

    gcloud beta app migrate-to-run --dry-run
    

    Revisa los resultados de la verificación de compatibilidad y realiza los cambios recomendados si es necesario.

  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 para implementar en Cloud Run.

    • Puedes implementar tu código fuente en Cloud Run con la gcloud CLI para configurar y administrar los parámetros de 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 para el entorno flexible. Tú o tu administrador deben otorgar a la cuenta de implementación y a la cuenta de servicio de Cloud Build los siguientes roles de IAM.

Haz clic para ver los roles necesarios para la cuenta de implementación

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 compile 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 proyecto de Google Cloud y PROJECT_ID por el ID del proyecto de Google Cloud. Para obtener instrucciones detalladas sobre cómo encontrar el ID del proyecto y el número del proyecto, consulta Crea y administra proyectos.

El otorgamiento del rol de creador 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 las APIs deGoogle Cloud , 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 la configuración local de un archivo app.yaml

Para implementar tu servicio de Cloud Run con el archivo app.yaml local de una configuración de App Engine existente, sigue estos pasos:

  1. En la terminal, cambia al directorio del código fuente en el que se encuentra el archivo app.yaml.

  2. Ejecuta el siguiente comando para implementar tu servicio en Cloud Run:

    gcloud beta app migrate-to-run
    

    Este comando genera la configuración del archivo service.yaml para Cloud Run y la guarda de forma local en el mismo directorio que el archivo app.yaml. Para obtener más información, consulta gcloud beta app migrate-to-run.

    • Cuando se te solicite Proceed with the deployment?, ingresa Y para compilar una imagen de contenedor a partir de tu código fuente y, luego, implementar el servicio en Cloud Run.
  3. Abre la URL de servicio en un navegador web para visitar el servicio de Cloud Run implementado.

    Opcional:

    • Si tu archivo app.yaml está en un directorio diferente, especifica su ruta de acceso con la marca --appyaml:

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

      Reemplaza PATH por la ruta de acceso a tu archivo app.yaml.

    • Para generar y exportar la configuración de service.yaml de Cloud Run sin implementar el servicio, ejecuta el siguiente comando:

      gcloud beta app migrate-to-run --export-only=EXPORT_PATH
      

      Reemplaza EXPORT_PATH por el directorio o la ruta de acceso en la que deseas guardar el archivo service.yaml.

Funciones incompatibles

El comando de migración falla si el archivo app.yaml contiene la siguiente configuración no admitida:
  • Servicios de entrada:

    inbound_services:
    - warmup
    

    Solución: Borra la sección inbound_services de tu archivo app.yaml. Cloud Run prepara las instancias con el punto de entrada del contenedor, por lo que no necesitas configurar las solicitudes de preparación. Si necesitas ejecutar código de inicialización antes de entregar tráfico, configura tu servicio para que se ejecute al inicio, antes de escuchar solicitudes o usar sondeos de inicio. También puedes configurar instancias mínimas para mantener las instancias preparadas.

¿Qué sigue?