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:

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

  2. Agrega una fuente de migración y crea una migración tal como lo haces hoy con el entorno de ejecución existente.

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

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

    3. Verifica el administrador de servicios mejorado de Linux. La marca v2kServiceManager se configura como true 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 marca v2kServiceManager se establecerá en false. Cuando la marca es false, 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
      
    4. Realiza cualquier otra personalización necesaria para la migración, como se describe en Personaliza el plan de migración.

    5. Cuando tus ediciones estén completas, 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 como lo haces ahora con el entorno de ejecución existente.

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

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

  7. 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 entorno HC_V2K_SERVICE_MANAGER en true 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:

  1. En el paso 3 de Migra la VM, en el que revisas el plan de migración, configura la anotación v2kServiceManager como true en el plan de migración y, luego, guarda el plan:

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