Desplegar contenedores en Cloud Run
Si usas el gestor de servicios de Linux mejorado que se ofrece de forma predeterminada para migrar tus cargas de trabajo de contenedores, puedes desplegar el contenedor en Cloud Run sin tener que hacer ningún cambio adicional en el contenedor.
Para desplegar tu contenedor en Cloud Run, sigue estos pasos:
Añade un origen de migración y crea una migración como lo haces actualmente con el tiempo de ejecución.
Personaliza el plan de migración según sea necesario.
Descarga el plan de migración. El plan de migración se representa mediante AppXGenerateArtifactsFlow.
Por ejemplo, para una migración llamada "my-migration":
migctl migration get my-migration
Abre el plan de migración descargado,
my-migration.yaml
, en un editor de texto.Verifica el gestor de servicios de Linux mejorado. La marca
v2kServiceManager
tiene el valortrue
de forma predeterminada. Sin embargo, si Migrate to Containers detecta un servicio del sistema que no es compatible con el gestor de servicios, se te avisará y la marcav2kServiceManager
se establecerá enfalse
. Cuando la marca seafalse
, la migración usará un tiempo de ejecución antiguo compatible con tu servicio.La siguiente alerta se proporciona junto con el servicio no admitido:
Service is not supported by v2k service manager, therefore legacy runtime will be used instead of v2k service manager, and migrated workload would not fit running on Autopilot clusters of Cloudrun.
Si se detecta un servicio no admitido, también puedes definir manualmente la marca como
true
. En este caso, puedes mantener el servicio no compatible en la imagen generada, aunque es posible que no funcione, o excluirlo quitándolo del plan de migración.Para habilitar el nuevo gestor de servicios, restablece la marca a
true
:v2kServiceManager: true
Realiza las personalizaciones necesarias para tu migración, tal como se describe en el artículo Personalizar el plan de migración.
Cuando hayas terminado de hacer los cambios, guarda el archivo editado.
Sube el plan de migración editado:
migctl migration update my-migration --main-config my-migration.yaml
Genera y revisa los artefactos de migración de la misma forma que lo haces actualmente con el tiempo de ejecución.
Edita el nuevo archivo
services-config.yaml
para configurar las propiedades de inicialización del contenedor. Guarda el archivo y vuelve a compilar la imagen del contenedor para aplicar los cambios.Consulta Usar services-config.yaml para obtener más información sobre cómo editar el archivo
services.yaml
.Después de generar los artefactos de migración, abre el archivo
deployment_spec.yaml
en un editor para determinar la ubicación de la imagen de contenedor. Por ejemplo, debería ver algo similar a lo siguiente:spec: containers: - image: gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
Donde
gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
especifica la ubicación de la imagen del contenedor.Usa el siguiente comando para desplegar el contenedor en Cloud Run:
gcloud run deploy my-runtime --image gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL --region REGION --platform managed --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port PORT
La propiedad
--set-env-vars
asigna el valortrue
a la variable de entornoHC_V2K_SERVICE_MANAGER
para habilitar el gestor de servicios de Linux mejorado.La propiedad
--port
especifica el puerto al que se envían las solicitudes al contenedor. El puerto predeterminado es 8080.
Ejemplo: desplegar el contenedor de la guía de inicio rápido en Cloud Run
Usa la guía de inicio rápido actual para migrar un contenedor que incluya un servidor web sencillo y, a continuación, desplegarlo en Cloud Run. Los únicos cambios que tienes que hacer en el proceso de Inicio rápido son los siguientes:
En el paso 3 de Migrar la VM, donde revisas el plan de migración, define
v2kServiceManager
comotrue
en el plan de migración y, a continuación, guarda el plan:v2kServiceManager: true
Una vez completada la migración, abra el archivo
deployment_spec.yaml
en un editor para determinar la ubicación del contenedor. Por ejemplo, debería ver algo similar a lo siguiente:spec: containers: - image: gcr.io/PROJECT_NAME/quickstart-instance:LABEL
En la sección Desplegar la carga de trabajo migrada, despliega la imagen de contenedor en Cloud Run con el siguiente comando:
gcloud run deploy my-runtime --image gcr.io/PROJECT_NAME/quickstart-instance:LABEL --region REGION --platform managed --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port 80
El servidor web del contenedor migrado recibe solicitudes en el puerto 80, así que asegúrate de especificar ese puerto al implementar el contenedor.
Deberías ver la siguiente respuesta, que incluye la URL del servicio de Cloud Run:
Allow unauthenticated invocations to [my-runtime] (y/N)? y Deploying container to Cloud Run service [my-runtime] in project [PROJECT_NAME] region [REGION] Deploying new service... Done. ✓ Creating Revision… ✓ Routing traffic… Setting IAM Policy… Done. Service [my-runtime] revision [my-runtime-00001-sas] has been deployed and is serving 100 percent of traffic. Service URL: https://my-runtime-s5ahdq-uc.a.run.app
Desde Cloud Shell, haz una solicitud al contenedor mediante su URL de servicio e introduce tus credenciales:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://my-runtime-s5ahdq-uc.a.run.app
Debería aparecer la página "Hello World".
Siguientes pasos
- Consulta cómo usar services-config.yaml.