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 estándar en Cloud Run. Las instrucciones se aplican a los entornos de ejecución de segunda generación que no usan los servicios agrupados en paquetes heredados de App Engine.
Los pasos que se describen en esta guía no afectan la funcionalidad ni el flujo de tráfico de tu app existente de App Engine. El servicio de Cloud Run recién creado es una réplica del servicio de App Engine que puedes probar de forma independiente.
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 comparaciones.Para implementar en Cloud Run, elige una de las siguientes estrategias:
Usa la configuración local de un archivo
app.yaml(recomendado): Elige esta opción para compilar una imagen de contenedor directamente desde tu código fuente local y, luego, implementarla en Cloud Run. Esto garantiza que las modificaciones locales recientes en tu código o configuración se incluyan en la nueva implementación.Usa una imagen compilada anteriormente: Esta opción es útil si no tienes acceso al código fuente. Elige esta opción para implementar una copia exacta de una versión que ya se ejecuta en App Engine, sin volver a compilar la imagen de contenedor. Esto es útil si deseas verificar el comportamiento de la implementación activa sin cambios de código.
Antes de comenzar
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.
Habilita la API de Cloud Run Admin y la API de Artifact Registry:
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 updateReemplaza lo siguiente:
- PROJECT_ID: Es el ID del Google Cloud proyecto de.
- REGION: Es la región en la que deseas implementar tu servicio de Cloud Run.
Busca funciones incompatibles en tu aplicación y quítalas antes de migrar a Cloud Run. Para verificar la incompatibilidad de tu aplicación sin realizar una migración o implementación, ejecuta el siguiente comando:
gcloud beta app migrate-to-run --dry-runRevisa los resultados de la verificación de compatibilidad y realiza los cambios recomendados si es necesario.
Revisa las siguientes diferencias de Cloud Run:
Cloud Run usa el término
Revision, en lugar deVersion, 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 la 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, la configuración de YAML es compatible.
Cada servicio que implementas en Cloud Run usa el
run.appdominio 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 el entorno estándar. Tú o tu administrador deben otorgar a la cuenta del implementador y a la cuenta de servicio de Cloud Build los siguientes roles de IAM.
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 roles:
- Desarrollador de fuentes de Cloud Run (
roles/run.sourceDeveloper) en tu proyecto - Consumidor de Service Usage (
roles/serviceusage.serviceUsageConsumer) en tu proyecto - Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser) en la identidad del servicio de Cloud Run
Haz clic para ver los roles necesarios para la cuenta de servicio de Cloud Build
Cloud Build uses automáticamente la
cuenta de servicio predeterminada de Compute Enginecomo 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 tu Google Cloud
proyecto y PROJECT_ID por el ID de tu Google Cloud
proyecto. Para obtener instrucciones detalladas sobre cómo encontrar el ID del proyecto 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 Google Cloud las 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 permisos de implementación y administra el acceso.
Usa la configuración local de un archivo app.yaml
Implementa tu configuración local de App Engine en Cloud Run con
la Google Cloud consola o gcloud CLI.
Console
En la Google Cloud consola, ve a la páginaApp Engine.
En el menú de navegación, haz clic en Migration hub para implementar tu app de App Engine en Cloud Run. El Migration hub también te permite verificar los ahorros estimados en Cloud Run para la estimación de costos y las recomendaciones.
Selecciona el servicio que deseas migrar y haz clic en Check compatibility.
Selecciona tu Service y Version para ver los resultados de compatibilidad. El centro de migración ejecuta un verificador de compatibilidad para identificar funciones incompatibles.
Revisa los resultados para verificar que tu app sea completamente compatible con Cloud Run y haz clic en Continue para continuar con la sección Review &Deploy.
Copia el comando en la sección Deploy through gcloud y ejecútalo en el directorio de tu proyecto.
Haz clic en View deployed versions para ver tus servicios de App Engine implementados en Cloud Run.
gcloud
Para implementar tu servicio de Cloud Run con el archivo app.yaml local de una configuración existente de App Engine, sigue estos pasos:
En tu terminal, cambia al directorio del código fuente en el que existe el archivo
app.yaml.Ejecuta el comando siguiente para implementar tu servicio en Cloud Run:
gcloud beta app migrate-to-runEste comando genera la configuración del archivo
service.yamlpara Cloud Run y la guarda de forma local en el mismo directorio que el archivoapp.yaml. Para obtener más información, consultagcloud beta app migrate-to-run.- Cuando se te solicite
Proceed with the deployment?, ingresaYpara compilar una imagen de contenedor desde tu código fuente y, luego, implementar el servicio en Cloud Run.
- Cuando se te solicite
Abre la URL de servicio en un navegador web para visitar el servicio de Cloud Run implementado.
Opcional:
Si tu archivo
app.yamlestá en un directorio diferente, especifica su ruta de acceso con la marca--appyaml:gcloud beta app migrate-to-run --appyaml=PATHReemplaza PATH por la ruta de acceso a tu archivo
app.yaml.Para generar y exportar la configuración
service.yamlde Cloud Run sin implementar el servicio, usa la marca--export-only:gcloud beta app migrate-to-run --export-only=EXPORT_PATHReemplaza EXPORT_PATH por el directorio o la ruta de acceso en la que deseas guardar el
service.yamlarchivo.
Usa una imagen compilada anteriormente
Para implementar con una imagen de contenedor compilada anteriormente desde una versión implementada de App Engine en lugar de volver a compilar la imagen de contenedor desde un archivo app.yaml local, sigue estos pasos:
No necesitas el código fuente de tu aplicación para esta implementación.
Ejecuta el comando siguiente para implementar tu servicio en Cloud Run. Este comando usa la imagen de contenedor de una implementación activa de App Engine y no captura los cambios recientes de tu archivo
app.yamllocal, lo que podría generar una implementación desactualizada:gcloud beta app migrate-to-run --service=SERVICE --version=VERSION --from-imageReemplaza lo siguiente:
- SERVICE: Es el nombre de tu servicio de App Engine.
- VERSION: Es el ID de versión de tu servicio.
Este comando recupera la configuración del servicio y la versión especificados para generar el archivo
service.yamlpara Cloud Run. Para obtener más información, consultagcloud beta app migrate-to-run.- Cuando se te solicite
Proceed with the deployment?, ingresaYpara exportar tu imagen de contenedor existente de App Engine y, luego, implementar el servicio en Cloud Run.
Abre la URL de servicio en un navegador web para visitar el servicio de Cloud Run implementado.
Opcional:
Para generar la configuración
service.yamlde Cloud Run sin implementar el servicio, ejecuta el siguiente comando:gcloud beta app migrate-to-run --service=SERVICE \ --version=VERSION \ --from-image \ --export-only=EXPORT_PATHReemplaza 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 tu archivoapp.yaml contiene alguna de las siguientes configuraciones no compatibles:
Servicios de entrada:
inbound_services: - warmupSolución: Borra la sección
inbound_servicesde tu archivoapp.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 lo ejecute al inicio, antes de escuchar las solicitudes o usar sondeos de inicio. También puedes configurar instancias mínimas para mantener las instancias preparadas.
Páginas de error personalizadas:
error_handlers: - file: default_error.html - error_code: over_quota file: over_quota.htmlSolución: Borra la sección
error_handlersde tu archivoapp.yaml, y sigue una o ambas de estas estrategias:- Implementa el manejo de errores directamente en el código de tu aplicación. Captura códigos de error HTTP estándar, como
404o500, y entrega tus páginas de error HTML personalizadas desde la lógica de tu aplicación. - Si usas Cloud Load Balancing con Cloud Run, configura respuestas de error personalizadas en el nivel del balanceador de cargas. Esto te permite entregar páginas de error personalizadas desde Cloud Storage en función del código de respuesta de tu servicio de Cloud Run.
- Implementa el manejo de errores directamente en el código de tu aplicación. Captura códigos de error HTTP estándar, como
Servicios agrupados en paquetes para entornos de ejecución de segunda generación:
app_engine_apis: trueSolución: Borra la configuración
app_engine_apisde tuapp.yamlarchivo y migra a las Google Cloud APIs o alternativas de terceros. Para obtener más información, consulta Migra desde servicios en paquetes.Entornos de ejecución de primera generación:
runtime: python27Solución: Actualiza tu aplicación a un entorno de ejecución de segunda generación compatible. Para obtener más información, consulta la descripción general de la migración a entornos de ejecución de segunda generación.
¿Qué sigue?
- Obtén información sobre cómo administrar tus servicios de Cloud Run.
- Consulta el contrato del entorno de ejecución de contenedores de Cloud Run para comprender los requisitos y el comportamiento de los contenedores en Cloud Run.
- Obtén información para almacenar las dependencias de tu servicio que requieren claves de API, contraseñas o cualquier otra información sensible mediante un administrador de secretos.