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 migrar una app existente de App Engine que se conecta a una instancia de Cloud SQL con una IP pública.
En general, en los pasos de esta guía se demuestra cómo puedes implementar el mismo código fuente de la aplicación en Cloud Run y, luego, configurarlo para que use el mismo usuario de la base de datos de Cloud SQL a fin de conectar tu instancia y tu base de datos existentes.
En los pasos de esta guía, no se incluye cómo usar una conexión IP privada interna porque eso requiere que primero modifiques el código de la aplicación. Sin embargo, después de implementar tu app en Cloud Run, puedes seguir los pasos de Conéctate a Cloud SQL desde Cloud Run para conocer los requisitos y cómo usar IP privadas.
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.
Antes de comenzar
Asegúrate de que Cloud Run cumpla con los requisitos de la aplicación. Revisa la comparación de App Engine y Cloud Run para determinar si los recursos de Cloud Run, como la CPU y la memoria, satisfacen tus necesidades.
Necesitas acceso a tu instancia de Cloud SQL, incluido el nombre de usuario y la contraseña de la base de datos para conectar tu app. Cloud Run usa encriptación y se conecta a través del proxy de autenticación de Cloud SQL mediante Sockets Unix o conectores de Cloud SQL.
Habilita la API de Cloud Run Admin y la API de Artifact Registry.
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 Google Cloud CLI o la Google Cloud consola para configurar y administrar la configuración de tus apps. Cloud Run no requiere configuración basada en archivos. Sin embargo, la configuración de YAML es compatible y puedes usar la herramienta
app2run
para traducir tu archivo existente de App Engine para Cloud Run.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).
Cloud Run no admite los servicios heredados en paquetes de App Engine.
En esta guía, se da por sentado que tu aplicación de App Engine se ejecuta sin errores.
Roles requeridos
Puedes elegir crear una cuenta de servicio nueva o seguir usando 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:
- Desarrollador de origen 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 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 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 permisos de implementación y administra el acceso.
Para las conexiones IP públicas a Cloud SQL, debes tener uno de los siguientes roles:
- Cliente de Cloud SQL (recomendado)
- Administrador de Cloud SQL
- Permisos de Cloud SQL equivalentes
Migra tu app a Cloud Run
No es necesario realizar cambios en el código para implementar tu app de App Engine en Cloud Run.
En los siguientes pasos, implementarás la app en un servicio nuevo de Cloud Run y configurarás ese servicio de forma simultánea para que se conecte a Cloud SQL.
Al igual que el entorno flexible de App Engine, Cloud Run admite implementaciones basadas en contenedores y en código fuente. Necesitas acceso a la imagen de contenedor o al repositorio de código fuente, según el método de implementación que sigas.
Implementar imágenes de contenedor
Si tus servicios de App Engine se implementan mediante un contenedor compilado de forma manual, puedes usar la misma imagen de contenedor para implementar tu servicio en Cloud Run. Para implementar tu imagen de contenedor de App Engine en Cloud Run, debes hacer lo siguiente:
Toma nota de la URL del registro en la que se encuentra la imagen de contenedor. Esta es la misma URL que proporcionas en la marca
--image-url
cuando implementas en App Engine.Implementa la imagen de contenedor:
Console
En la consola de Google Cloud , ve a la página Cloud Run.
Haz clic en Crear servicio.
Haz clic en el botón Seleccionar en el campo URL de imagen de contenedor y elige la imagen de contenedor que implementaste para App Engine.
Ingresa un nombre para tu servicio. Elige un nombre único que represente la aplicación que estás implementando.
En la sección Autenticación, selecciona Permitir invocaciones no autenticadas.
Debes crear las mismas variables de entorno para Cloud Run que definiste en el archivo
app.yaml
de tu app de App Engine. Expande la sección Contenedor, Herramientas de redes, Seguridad y crea las siguientes variables de entorno mediante un clic en Agregar variable en Variables de entorno:Para los sockets Unix, agrega lo siguiente:
INSTANCE_UNIX_SOCKET: /cloudsql/INSTANCE_CONNECTION_NAME
Para los conectores de Cloud SQL, agrega lo siguiente:
INSTANCE_CONNECTION_NAME:INSTANCE_CONNECTION_NAME
Reemplaza INSTANCE_CONNECTION_NAME por el ID del proyecto, la región y la instancia con el formato de
project:region:instance-id
. Puedes encontrarlo en la página Descripción general de tu instancia en la consola deGoogle Cloud .Estas conexiones se encriptan de forma automática sin ninguna configuración adicional.
DB_NAME
: el nombre de tu base de datos.DB_USER
: tu nombre de usuario de la base de datos.DB_PASS
: la contraseña que especificaste cuando creaste la base de datos.
En la sección Conexiones de Cloud SQL, haz clic en el botón Agregar conexión y selecciona la instancia que creaste antes para App Engine.
Haz clic en Implementar. Una vez implementado el servicio de Cloud Run, en la página Detalles del servicio, se mostrará una URL en la parte superior de la página. Haz clic en el vínculo URL para ver la aplicación implementada en Cloud Run conectada a Cloud SQL.
gcloud
Ejecuta el siguiente comando para crear un servicio nuevo en Cloud Run. Debes establecer marcas de configuración a fin de incluir las mismas variables de entorno de conexión de SQL definidas en el archivo
app.yaml
de tu app de App Engine:gcloud run deploy run-sql --image IMAGE \ --allow-unauthenticated \ --add-cloudsql-instances INSTANCE_CONNECTION_NAME\ --set-env-vars INSTANCE_UNIX_SOCKET="/cloudsql/INSTANCE_CONNECTION_NAME" \ --set-env-vars INSTANCE_CONNECTION_NAME="INSTANCE_CONNECTION_NAME" \ --set-env-vars DB_NAME="DB_NAME" \ --set-env-vars DB_USER="DB_USER" \ --set-env-vars DB_PASS="DB_PASS"
Reemplaza lo siguiente:
- IMAGE por la imagen que implementas
INSTANCE_CONNECTION_NAME por el nombre de conexión de la instancia de Cloud SQL o por una lista delimitada por comas de nombres de conexión. Para buscar el
INSTANCE_CONNECTION_NAME
, ejecuta lo siguiente:gcloud instances describe INSTANCE_NAME
DB_NAME por el nombre de tu base de datos.
DB_USER por el nombre de usuario de tu base de datos.
DB_PASS por la contraseña del usuario de tu base de datos.
Implementa código fuente
Cloud Run usa buildpacks y Cloud Build de forma interna para compilar imágenes de contenedor automáticamente a partir del código fuente y no requiere que compiles un contenedor de forma manual ni especifiques un Dockerfile. Sin embargo, si hay un Dockerfile, se usará. En la implementación de un servicio de Cloud Run desde la fuente, se usa Artifact Registry, por lo que esta función solo está disponible en regiones compatibles con Artifact Registry.
Para implementar el mismo código fuente que implementaste antes en App Engine, haz lo siguiente:
Cambia al directorio del código fuente donde reside el código fuente de tu aplicación.
cd YOUR_APPENGINE_CODE_DIR
Implementa en Cloud Run.
Para compilar el código fuente e implementar la aplicación, ejecuta el comando de implementación con la marca
--source
. Debes establecer marcas de configuración para incluir las mismas variables de entorno de conexión de SQL definidas en el archivoapp.yaml
de tu app de App Engine:gcloud run deploy run-sql --source . \ --allow-unauthenticated \ --add-cloudsql-instances INSTANCE_CONNECTION_NAME\ --set-env-vars INSTANCE_UNIX_SOCKET="/cloudsql/INSTANCE_CONNECTION_NAME" \ --set-env-vars INSTANCE_CONNECTION_NAME="INSTANCE_CONNECTION_NAME" \ --set-env-vars DB_NAME="DB_NAME" \ --set-env-vars DB_USER="DB_USER" \ --set-env-vars DB_PASS="DB_PASS"
Reemplaza INSTANCE_CONNECTION_NAME por el nombre de conexión de la instancia de Cloud SQL o por una lista delimitada por comas de nombres de conexión. Para buscar el
INSTANCE_CONNECTION_NAME
, ejecuta lo siguiente:gcloud instances describe INSTANCE_NAME
- DB_NAME por el nombre de tu base de datos.
- DB_USER por el nombre de usuario de tu base de datos.
- DB_PASS por la contraseña del usuario de tu base de datos.
Ingresa el nombre del SERVICE cuando se te solicite.
Responde a cualquier solicitud para instalar las API obligatorias. Para ello, responde
y
cuando se te solicite. Solo debes hacer esto una vez en un proyecto. Espera a que se completen la compilación y la implementación. Cuando termines, se mostrará un mensaje similar a este:Service [my-app] revision [my-app-00000-xxx] has been deployed and is serving 100 percent of traffic. Service URL: https://sample.run.app
Para obtener más información sobre la implementación del código fuente en Cloud Run, consulta Implementa desde el código fuente.
Próximos pasos
- Revisa las prácticas recomendadas de Cloud SQL para conectar tu instancia de Cloud SQL desde 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.
- 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.