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.
En esta guía, se da por sentado que tu app se ejecuta sin errores.
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.
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 mediante Google Cloud CLI o la consola de Google Cloud 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).
Migra tu app a Cloud Run
En un nivel alto, el proceso para migrar tu app de App Engine a Cloud Run consta de los siguientes pasos:
- Habilite las API necesarias
- Configura la cuenta de servicio de Cloud Run
- Implementa tu app en Cloud Run
Habilite las API necesarias
Antes de implementar la app en Cloud Run, primero debes habilitar las APIs de Cloud Run y Artifact Registry.
Usa la consola de Google Cloud para habilitar las APIs:
Configura la cuenta de servicio de Cloud Run
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. En la cuenta de servicio, debes asegurarte de que se configuren los siguientes roles de Identity and Access Management (IAM) o los permisos equivalentes:
Para implementar en Cloud Run, debes tener uno de los siguientes roles:
- Propietario
- Editor
- Los roles Administrador de Cloud Run y Usuario de cuenta de servicio
- Permisos de Cloud Run equivalentes
Para las conexiones IP públicas a Cloud SQL, debes contar con uno de los siguientes roles:
- Cliente de Cloud SQL (recomendado)
- Administrador de Cloud SQL
- Permisos de Cloud SQL equivalentes
Implementa tu app en 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 de Descripción general de tu instancia en la consola de Google 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 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 lo siguiente:
- SOURCE por la ruta de acceso al directorio del código fuente de App Engine
- 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.