ID de región
El REGION_ID
es un código abreviado que Google asigna en función de la región que selecciones al crear tu aplicación. El código no corresponde a un país o provincia, aunque algunos IDs de región pueden parecerse a los códigos de país y provincia que se usan habitualmente. En las aplicaciones creadas después de febrero del 2020, REGION_ID.r
se incluye en las URLs de App Engine. En las aplicaciones creadas antes de esa fecha, el ID de región es opcional en la URL.
En esta guía se describe cómo migrar una aplicación de App Engine que se conecta a una instancia de Cloud SQL con una IP pública.
En general, los pasos de esta guía muestran cómo puedes desplegar el mismo código fuente de la aplicación en Cloud Run y, a continuación, configurarlo para que use el mismo usuario de la base de datos de Cloud SQL para conectar tu instancia y tu base de datos.
En los pasos de esta guía no se explica cómo usar una conexión IP privada interna, ya que primero debes modificar el código de tu aplicación. Sin embargo, después de desplegar tu aplicación en Cloud Run, puedes seguir los pasos que se indican en Conectarse a Cloud SQL desde Cloud Run para consultar los requisitos y cómo usar las IPs privadas.
Para obtener más información sobre las similitudes y diferencias entre App Engine y Cloud Run, incluidas las ventajas de migrar a Cloud Run, consulta el resumen de la comparación.
Antes de empezar
- Asegúrate de que Cloud Run cumpla los requisitos de tu aplicación. Consulta la comparación entre App Engine y Cloud Run para determinar si los recursos de Cloud Run, como la CPU y la memoria, se ajustan a tus necesidades.
En esta guía se da por hecho que tu aplicación 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 aplicación. Cloud Run usa el cifrado y se conecta a través del proxy de autenticación de Cloud SQL mediante sockets Unix o conectores de Cloud SQL.
Consulta las siguientes diferencias de Cloud Run:
Cloud Run usa el término
Revision
en lugar deVersion
para representar cada vez que despliegas cambios en un servicio específico. Cuando despliegas tu aplicación en un servicio de Cloud Run por primera vez, se crea su primera revisión. Cada despliegue posterior de un servicio crea otra revisión. Más información sobre cómo desplegar en Cloud RunPuedes desplegar tu código fuente en Cloud Run mediante la interfaz de línea de comandos de Google Cloud o la consola para configurar y gestionar los ajustes de tus aplicaciones. Google Cloud Cloud Run no requiere una configuración basada en archivos, pero admite la configuración YAML y puedes usar la herramienta
app2run
para traducir tu archivo de App Engine a Cloud Run.Todos los servicios que despliegues en Cloud Run usan 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 que tengan acceso público (sin autenticar).
Migrar tu aplicación a Cloud Run
A grandes rasgos, el proceso para migrar tu aplicación de App Engine a Cloud Run consta de los siguientes pasos:
- Habilita las APIs necesarias.
- Configurar la cuenta de servicio de Cloud Run
- Desplegar una aplicación en Cloud Run
Habilitar las APIs necesarias
Antes de desplegar tu aplicación en Cloud Run, debes habilitar las APIs de Cloud Run y Artifact Registry.
Usa la Google Cloud consola para habilitar las APIs:
Configurar la cuenta de servicio de Cloud Run
Puedes crear una cuenta de servicio o seguir usando la misma cuenta de servicio gestionada por el usuario en Cloud Run que usas en App Engine. En la cuenta de servicio, debes asegurarte de que estén configurados los siguientes roles de Gestión de Identidades y Accesos (IAM) o los permisos equivalentes:
Para desplegar en Cloud Run, debes tener una de las siguientes opciones:
- Propietario
- Editor
- Los roles Administrador de Cloud Run y Usuario de cuenta de servicio
- Permisos de Cloud Run equivalentes
Para las conexiones de IP pública a Cloud SQL, debe tener una de las siguientes opciones:
- Cliente de Cloud SQL (opción preferida)
- Administrador de Cloud SQL
- Permisos de Cloud SQL equivalentes
Desplegar una aplicación en Cloud Run
No es necesario modificar el código para desplegar tu aplicación de App Engine en Cloud Run.
En los siguientes pasos, desplegarás tu aplicación en un nuevo servicio de Cloud Run y, al mismo tiempo, configurarás ese servicio para que se conecte a Cloud SQL.
Al igual que el entorno estándar de App Engine, Cloud Run admite implementaciones basadas en código fuente. Necesitas acceso a tu repositorio de código fuente.
Cloud Run usa internamente paquetes de compilación y Cloud Build para compilar automáticamente imágenes de contenedor a partir de tu código fuente, por lo que no es necesario que compiles manualmente un contenedor ni que especifiques un Dockerfile. Sin embargo, si hay un Dockerfile, se usará.
Para desplegar un servicio de Cloud Run desde el código fuente, se usa Artifact Registry, por lo que esta función solo está disponible en las regiones admitidas por Artifact Registry.
Para desplegar el mismo código fuente que desplegaste anteriormente en App Engine, sigue estos pasos:
Cambia al directorio de origen donde se encuentra el código fuente de tu aplicación.
cd YOUR_APPENGINE_CODE_DIR
Despliega en Cloud Run.
Para compilar el código fuente y desplegar la aplicación, ejecuta el comando deploy con la marca
--source
. Debes definir marcas de configuración para incluir las mismas variables de entorno de conexión SQL que se definen en el archivoapp.yaml
de tu aplicación 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"
Sustituye:
- SOURCE con la ruta al directorio de origen de App Engine
- INSTANCE_CONNECTION_NAME con el nombre de conexión de la instancia de Cloud SQL o una lista de nombres de conexión separados por comas. Puedes encontrar el
INSTANCE_CONNECTION_NAME
ejecutando el siguiente comando:
gcloud instances describe INSTANCE_NAME
- DB_NAME con el nombre de tu base de datos.
- DB_USER con el nombre de usuario de tu base de datos.
- DB_PASS con la contraseña de tu usuario de base de datos.
Introduce el nombre del SERVICIO cuando se te pida.
Responde
y
cuando se te pida que instales las APIs necesarias. Solo tienes que hacerlo una vez por proyecto. Espera a que se complete la compilación y la implementación. Cuando termine, 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 cómo desplegar código fuente en Cloud Run, consulta Desplegar desde código fuente.
Pasos siguientes
- Consulta las prácticas recomendadas de Cloud SQL para conectar tu instancia de Cloud SQL desde Cloud Run.
- Consulta cómo almacenar las dependencias de tu servicio que requieran claves de API, contraseñas u otra información sensible mediante un gestor de secretos.
- Consulta cómo gestionar tus servicios de Cloud Run.
- Consulta el contrato de tiempo de ejecución de contenedores de Cloud Run para conocer los requisitos y los comportamientos de los contenedores en Cloud Run.