Configura contenedores para trabajos

En esta página, se describe cómo configurar el comando y los argumentos de punto de entrada para un trabajo de Cloud Run.

Cuando Cloud Run inicia un contenedor, ejecuta el comando entrypoint predeterminado y los argumentos del comando predeterminados de la imagen. Si deseas anular el entrypoint predeterminado y los argumentos del comando de la imagen, puedes usar los campos command y args en la configuración del contenedor. El campo command especifica el comando real que ejecuta el contenedor. El campo args especifica los argumentos que se pasan a ese comando.

Ten en cuenta que puedes tener un máximo de 1,000 argumentos por contenedor para cada trabajo.

En esta página, se muestra cómo configurar el comando, los argumentos y el orden de inicio de los contenedores en tus trabajos de Cloud Run. Puedes configurar estos parámetros a través de la console de Google Cloud, Google Cloud CLI o YAML.

Roles obligatorios

Para obtener los permisos que necesitas para configurar los trabajos de Cloud Run, pídele a tu administrador que te otorgue los siguientes roles de IAM:

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu trabajo de Cloud Run interactúa con las APIs deGoogle Cloud , como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta permisos de implementación y administra el acceso.

Configura un punto de entrada y argumentos

Para configurar el punto de entrada del comando y los argumentos para los trabajos, haz lo siguiente:

Console

  1. En la Google Cloud consola, ve a la página de trabajos de Cloud Run:

    Ir a Cloud Run

  2. Haz clic en Implementar contenedor y selecciona Trabajo para completar la página de configuración de trabajo inicial. Si quieres configurar un trabajo existente, selecciona el trabajo y, luego, haz clic en Editar.

  3. Haz clic en Contenedor, variables y secretos, conexiones y seguridad para expandir la página de propiedades del trabajo.

  4. Haz clic en la pestaña General.

    imagen

    • Especifica el comando que deseas que ejecute el contenedor, si no es el comando definido en tu contenedor y, de manera opcional, especifica los argumentos para el comando del entrypoint.
  5. Haz clic en Crear o Actualizar.

gcloud

  1. A fin de configurar el comando de inicio y los argumentos para un trabajo nuevo, sigue estos pasos:

    gcloud run jobs create JOB_NAME --image IMAGE_URL --command COMMAND --args ARG1,ARG-N

    Reemplazar

    • JOB_NAME por el nombre de tu trabajo.
    • COMMAND por el comando que usará el contenedor si no usas el comando predeterminado
    • ARG1 por el argumento que envías al comando del contenedor. Si hay más de un argumento, usa una lista separada por comas.
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/job:latest

Para actualizar el comando y los argumentos de un trabajo existente, sigue estos pasos:

gcloud run jobs update JOB_NAME --command COMMAND --args ARG1,ARG-N 

YAML

  1. Si creas un trabajo nuevo, omite este paso. Si actualizas un trabajo existente, descarga su configuración de YAML:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Actualiza los atributos args: y command:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - args:
                - 'ARG1'
                - 'ARG-N'
                command:
                - COMMAND
                image: IMAGE

    Reemplazar

    • COMMAND por el comando que usará el contenedor si no usas el comando predeterminado
    • ARG1 por el argumento que envías al comando del contenedor. De manera opcional, especifica argumentos adicionales en una línea separada.

    También puedes especificar más opciones de configuración, como variables de entorno o límites de memoria.

  3. Actualiza la configuración del trabajo existente:

    gcloud run jobs replace job.yaml

Para borrar cualquier comando y argumento de punto de entrada que hayas configurado (restablecer a los valores predeterminados del contenedor), proporciona cadenas vacías de la siguiente manera:

gcloud run jobs update JOB_NAME --command "" --args "" 

Usa signos igual o comas en argumentos

Si usas el signo igual en tus argumentos, proporciónalos con el siguiente formato:

gcloud run deploy  \
  --args="--repo-allowlist=github.com/example/example_demo"

Si se usan comas en los argumentos, consulta Configura variables de entorno para obtener detalles sobre cómo escapar comas.

Visualiza la configuración del contenedor

Para ver la configuración actual del contenedor de tu trabajo de Cloud Run, sigue estos pasos:

Console

  1. En la Google Cloud consola, ve a la página de trabajos de Cloud Run:

    Ir a Trabajos de Cloud Run

  2. Haz clic en el trabajo que te interesa para abrir la página Detalles del trabajo.

  3. Haz clic en la pestaña Configuración.

  4. Ubica la configuración del contenedor en los detalles de configuración.

gcloud

  1. Usa el siguiente comando:

    gcloud run jobs describe JOB_NAME
  2. Busca la configuración de contenedores en la configuración mostrada.

Configura el orden de inicio del contenedor para implementaciones de sidecar

Para especificar el orden de inicio del contenedor en una implementación de sidecar, se usa la función de dependencias de contenedores. Especifica cualquier contenedor que tenga dependencias y enumera los contenedores de los que dependen. Los contenedores que no tienen dependencias siempre se inician primero y de forma simultánea.

Puedes usar la consola de Google Cloud, Google Cloud CLI o YAML para especificar el orden de inicio:

Console

  1. En la consola de Google Cloud, ve a la página Cloud Run:

    Ir a Cloud Run

    • Para un trabajo existente, haz clic en Trabajos. Luego, haz clic en el trabajo de la lista y selecciona Ver y editar la configuración del trabajo para mostrar el formulario Editar trabajo.
    • En el caso de un trabajo nuevo, haz clic en Implementar contenedor y selecciona Trabajo para mostrar el formulario Crear trabajo.
  2. Para un trabajo nuevo, especifica el nombre del trabajo, la URL del contenedor del trabajo, la región y la cantidad de tareas. En la pestaña Contenedores, volúmenes, herramientas de redes y seguridad, haz lo siguiente:

    1. Configura el contenedor de trabajo principal.
    2. Para agregar cada contenedor de archivo adicional que implementes, haz clic en Agregar contenedor.
    3. Si un contenedor depende de otros contenedores, usa el menú Orden de inicio del contenedor para seleccionar los contenedores que Cloud Run debe iniciar antes del contenedor actual.
  3. Para un trabajo existente, sigue estos pasos para cada contenedor:

    1. Examina los contenedores que se enumeran en el menú Orden de inicio del contenedor.
    2. Si un contenedor depende de otros contenedores, usa el menú Orden de inicio del contenedor para seleccionarlos.
  4. Finaliza cualquier otra configuración necesaria y, luego, haz clic en Crear para un trabajo nuevo o en Actualizar para un trabajo existente. Espera a que finalice la implementación.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para implementar varios contenedores en un trabajo con un orden de inicio especificado, ejecuta el siguiente comando:

    gcloud beta run create JOB \
       --container CONTAINER_1_NAME --image='JOB_IMAGE' \
       --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \
       --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAMECONTAINER_2_NAME

    Reemplaza lo siguiente:

    • Reemplaza JOB por el nombre del trabajo en el que realizas la implementación. Puedes omitir este parámetro por completo, pero se te solicitará el nombre del trabajo si lo haces.
    • CONTAINER_1_NAME con un nombre para el contenedor de trabajo principal.
    • JOB_IMAGE por una referencia a la imagen del contenedor de trabajo principal, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • CONTAINER_2_NAME por un nombre para el contenedor de sidecar, por ejemplo, sidecar.
    • SIDECAR_IMAGE por una referencia a la imagen del contenedor del sidecar.

    Si deseas configurar cada contenedor en el comando de implementación, proporciona la configuración de cada contenedor después de los parámetros de container.

YAML

  1. Si creas un trabajo nuevo, omite este paso. Si actualizas un trabajo existente, descarga su configuración de YAML:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Actualiza el atributo container-dependencies:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: JOB
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'
    

    Reemplazar

    • CONTAINER1 por el nombre del primer contenedor que depende de uno o más contenedores. Ten en cuenta que puedes configurar el nombre del contenedor en el YAML: Cloud Run generará un nombre de forma automática si no se especifica uno.
    • CONTAINER2 por el nombre del contenedor que se debe iniciar antes de CONTAINER1.
    • CONTAINER3 por el nombre del segundo contenedor que depende de uno o más contenedores.

    En el ejemplo que se muestra en el fragmento YAML, CONTAINER2 se inicia primero, CONTAINER1 se inicia en segundo lugar y CONTAINER3 se inicia en último lugar.

  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run jobs replace job.yaml