Implementa contenedores en Cloud Run
Si usas el administrador de servicios de Linux mejorado que se ofrece de forma predeterminada para migrar tus cargas de trabajo de contenedor, puedes implementar el contenedor en Cloud Run sin tener que realizar ninguna acción adicional. cambios en el contenedor.
Para implementar tu contenedor en Cloud Run, debes hacer lo siguiente:
Agrega una fuente de migración y crea una migración tal como lo haces hoy con el entorno de ejecución existente.
Personaliza tu plan de migración según sea necesario.
Descarga el plan de migración. AppXGenerateArtifactsFlow representa el plan de migración.
Por ejemplo, en una migración llamada “my-migration”, haz lo siguiente:
migctl migration get my-migration
Edita el plan de migración descargado,
my-migration.yaml
, en un editor de texto.Verifica el administrador de servicios mejorado de Linux. La marca
v2kServiceManager
se configura comotrue
de forma predeterminada. Sin embargo, si Migrate to Containers detecta un servicio del sistema que no es compatible con el administrador de servicios, recibirás una alerta y la marcav2kServiceManager
se establecerá enfalse
. Cuando la marca esfalse
, la migración usará un entorno de ejecución heredado que admita el servicio.La siguiente alerta se proporciona junto con el servicio no compatible:
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.
Cuando se encuentra un servicio no compatible, también puedes configurar de forma manual la marca como
true
. En esta instancia, puedes optar por mantener el servicio no compatible en la imagen generada en la que no se ejecuta o puedes excluir el servicio si lo quitas del plan de migración.Para habilitar el administrador de servicios nuevo, restablece la marca a
true
:v2kServiceManager: true
Realiza cualquier otra personalización necesaria para la migración, como se describe en Personaliza el plan de migración.
Cuando tus ediciones estén completas, 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 como lo haces ahora con el entorno de ejecución existente.
Edita el archivo
services-config.yaml
nuevo para configurar las propiedades de inicialización del contenedor. Guarda el archivo y vuelve a compilar tu imagen de contenedor para aplicar los cambios.Consulta Usa services-config.yaml para obtener más información sobre cómo editar tu 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 del contenedor. Por ejemplo, deberías ver algo similar a lo siguiente:spec: containers: - image: gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
En el ejemplo anterior,
gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
especifica la ubicación de la imagen de contenedor.Usa el siguiente comando para implementar 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
configura la variable de entornoHC_V2K_SERVICE_MANAGER
entrue
para habilitar el administrador de servicios de Linux mejorado.La propiedad
--port
especifica el puerto al que se envían las solicitudes en el contenedor. El puerto predeterminado es 8080.
Ejemplo: Implementa 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 contiene un servidor web simple y, luego, implementarlo en Cloud Run. Los únicos cambios que debes realizar en el proceso de la guía de inicio rápido son los siguientes:
En el paso 3 de Migra la VM, en el que revisas el plan de migración, configura la anotación
v2kServiceManager
comotrue
en el plan de migración y, luego, guarda el plan:v2kServiceManager: true
Una vez que se complete la migración, abre el archivo
deployment_spec.yaml
en un editor para determinar la ubicación del contenedor. Por ejemplo, deberías ver algo similar a lo siguiente:spec: containers: - image: gcr.io/PROJECT_NAME/quickstart-instance:LABEL
En la sección Implementa la carga de trabajo migrada, implementa la imagen de contenedor en Cloud Run mediante 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 escucha las solicitudes en el puerto 80, así que asegúrate de especificar ese puerto cuando implementes el contenedor.
Debería 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, realiza una solicitud al contenedor mediante la URL de servicio y pasa las credenciales:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://my-runtime-s5ahdq-uc.a.run.app
Debería ver la página "Hello World!".
¿Qué sigue?
- Obtén más información sobre cómo usar services-config.yaml.