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:

  1. Instala la versión 1.15.0 de Migrate to Containers.

  2. Añade un origen de migración y crea una migración como lo haces actualmente con el tiempo de ejecución.

  3. Personaliza el plan de migración según sea necesario.

    1. 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
    2. Abre el plan de migración descargado, my-migration.yaml, en un editor de texto.

    3. Verifica el gestor de servicios de Linux mejorado. La marca v2kServiceManager tiene el valor true 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 marca v2kServiceManager se establecerá en false. Cuando la marca sea false, 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
    4. Realiza las personalizaciones necesarias para tu migración, tal como se describe en el artículo Personalizar el plan de migración.

    5. Cuando hayas terminado de hacer los cambios, guarda el archivo editado.

    6. Sube el plan de migración editado:

      migctl migration update my-migration --main-config my-migration.yaml
  4. Genera y revisa los artefactos de migración de la misma forma que lo haces actualmente con el tiempo de ejecución.

  5. 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.

  6. 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.

  7. 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 valor true a la variable de entorno HC_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:

  1. En el paso 3 de Migrar la VM, donde revisas el plan de migración, define v2kServiceManager como true en el plan de migración y, a continuación, guarda el plan:

    v2kServiceManager: true
  2. 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
  3. 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
  4. 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