Configura contenedores

Aprende a configurar el puerto del contenedor, el comando y los argumentos del punto de entrada del contenedor.

Cuando Knative serving 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.

Configura el puerto del contenedor

Cualquier cambio en la configuración conlleva la creación de una revisión nueva. Las revisiones posteriores también adoptarán esta configuración de manera automática, a menos que realices actualizaciones explícitas para cambiarla.

El contenedor debe escuchar en el puerto que define la variable de entorno PORT en lugar de un puerto codificado específico. Sin embargo, si esto no es posible, puedes configurar desde qué puerto se envían las solicitudes al contenedor:

Console

  1. Ve a Knative serving en la consola de Google Cloud:

    Ir a Knative serving

  2. Haz clic en Crear servicio si quieres configurar un servicio nuevo en el que realizarás la implementación. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, haz clic en IMPLEMENTAR Y EDITAR UNA NUEVA REVISIÓN.

  3. En Configuración avanzada, haz clic en Contenedor.

  4. Especifica el puerto al que deseas que se envíen las solicitudes, si no es el valor predeterminado de 8080. Con esto también se establece la variable de entorno PORT.

  5. Haz clic en Siguiente para pasar a la siguiente sección.

  6. En la sección Configura la forma en que se activa el servicio, selecciona la conectividad que deseas usar para invocar el servicio.

  7. Haz clic en Crear para implementar la imagen en Knative serving y espera a que termine la implementación.

Línea de comandos

  • En servicios existentes, actualiza una configuración de puerto mediante la ejecución del comando gcloud run services update con los siguientes parámetros:

    gcloud run services update SERVICE --port PORT
    

    Reemplaza lo siguiente:

    • SERVICE por el nombre del servicio
    • PORT por el puerto al que se envían las solicitudes. Ten en cuenta que el puerto predeterminado es 8080
  • Para los servicios nuevos, ejecuta el comando gcloud run deploy con el parámetro --port a fin de configurar el puerto:

    gcloud run deploy SERVICE --image=IMAGE_URL --port PORT
    

    Reemplaza lo siguiente:

    • SERVICE por el nombre del servicio
    • IMAGE_URL por una referencia a la imagen del contenedor, como gcr.io/cloudrun/hello
    • PORT por el puerto al que deseas enviar solicitudes. El puerto predeterminado es 8080.

YAML

Puedes descargar la configuración de un servicio existente en un archivo YAML con el comando gcloud run services describe mediante la marca --format=export. Luego, puedes modificar ese archivo YAML e implementar esos cambios con el comando gcloud run services replace. Debes asegurarte de modificar solo los atributos especificados.

  1. Descarga la configuración del servicio en un archivo llamado service.yaml en el lugar de trabajo local:

    gcloud run services describe SERVICE --format export > service.yaml

    Reemplaza SERVICE por el nombre de tu servicio de Knative serving.

  2. En tu archivo local, actualiza el atributo containerPort::

    apiVersion: serving.knative.dev/v1
    kind: Service
    spec:
      template:
        spec:
          containers:
          - image: IMAGE_URL
            ports:
            - containerPort: PORT
    

    Reemplazar

    • IMAGE_URL por una referencia a la imagen del contenedor, como gcr.io/cloudrun/hello
    • PORT por el puerto al que deseas enviar solicitudes.
  3. Reemplaza el servicio por la configuración nueva mediante el comando siguiente:

    gcloud run services replace service.yaml

Configura el comando y los argumentos del entrypoint del contenedor

Cualquier cambio en la configuración conlleva la creación de una revisión nueva. Las revisiones posteriores también adoptarán esta configuración de manera automática, a menos que realices actualizaciones explícitas para cambiarla.

Cuando Knative serving inicia un contenedor, ejecuta el comando entrypoint predeterminado de la imagen. Para especificar o anular el comando y los argumentos de entrypoint existentes que se definen en la imagen del contenedor, puedes establecer la configuración command y args en la configuración del contenedor de Knative serving.

Puedes elegir configurar comandos de entrypoint, argumentos o ambos. El comando que especificas en Knative serving anula cualquier comando de entrypoint que se define en la imagen de contenedor. Si eliges especificar solo los argumentos, se pasan y ejecutan el comando de entrypoint definido en la imagen del contenedor.

En Knative serving, puedes configurar comandos y argumentos de punto de entrada mediante la consola de Google Cloud, Google Cloud CLI o un archivo YAML cuando implementas un nuevo elemento.servicio, actualizas un servicio existente o implementas una revisión:

Console

  1. Ve a Knative serving en la consola de Google Cloud:

    Ir a Knative serving

  2. Haz clic en Crear servicio si quieres configurar un servicio nuevo en el que realizarás la implementación. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, haz clic en IMPLEMENTAR Y EDITAR UNA NUEVA REVISIÓN.

  3. En Configuración avanzada, haz clic en Contenedor.

  4. Especifica el comando y los argumentos de entrypoint que deseas que el contenedor ejecute durante el inicio.

  5. Haz clic en Siguiente para pasar a la siguiente sección.

  6. En la sección Configura la forma en que se activa el servicio, selecciona la conectividad que deseas usar para invocar el servicio.

  7. Haz clic en Crear para implementar la imagen en Knative serving y espera a que termine la implementación.

Línea de comandos

Opciones de parámetros de comando

  • Para especificar un argumento que contenga una coma (,), debes escapar cada ARG con un delimitador diferente. Por ejemplo, si usas @:
    --args "^@^arg,with,commas@anotherarg@ARG3..."
    
  • A fin de especificar varios conjuntos de pares clave-valor, puedes especificar varios parámetros para facilitar la lectura. Ejemplo:
    [...]
    --args "ARG1" \
    --args "ARG2" \
    --args "ARG3"
    
  • Para usar el signo igual (=) en tus argumentos, debes especificar cada uno con el siguiente formato:
    gcloud run services ...  \
      --args "--repo-allowlist=github.com/example/example_demo" \
      --args "--gh-webhook-secret=XX"
    

  • Para los servicios existentes, actualiza el comando entrypoint mediante la ejecución del comando gcloud run services update con los siguientes parámetros:

    gcloud run services update SERVICE --command COMMAND --args ARG1,ARG2,ARG-N
    

    Reemplaza lo siguiente:

    • SERVICE por el nombre del servicio
    • Opcional: COMMAND por el comando que deseas que ejecute el contenedor durante el inicio.
    • Opcional: ARG1 por uno o más argumentos para el comando que se ejecuta durante el inicio. Usa una lista delimitada por comas para varios argumentos. Cómo dar formato a tus argumentos.
  • Para los servicios nuevos, ejecuta el comando gcloud run deploy con el parámetro --command a fin de configurar el comando entrypoint:

    gcloud run deploy SERVICE --image=IMAGE_URL --command COMMAND --args ARG1,ARG2,ARG-N
    

    Reemplaza lo siguiente:

    • SERVICE por el nombre del servicio
    • IMAGE_URL por una referencia a la imagen del contenedor, como gcr.io/cloudrun/hello
    • Opcional: COMMAND por el comando que deseas que ejecute el contenedor durante el inicio.
    • Opcional: ARG1 por uno o más argumentos para el comando que se ejecuta durante el inicio. Usa una lista delimitada por comas para varios argumentos. Cómo dar formato a tus argumentos.

YAML

Puedes descargar la configuración de un servicio existente en un archivo YAML con el comando gcloud run services describe mediante la marca --format=export. Luego, puedes modificar ese archivo YAML e implementar esos cambios con el comando gcloud run services replace. Debes asegurarte de modificar solo los atributos especificados.

  1. Descarga la configuración del servicio en un archivo llamado service.yaml en el lugar de trabajo local:

    gcloud run services describe SERVICE --format export > service.yaml

    Reemplaza SERVICE por el nombre de tu servicio de Knative serving.

  2. En el archivo local, actualiza los atributos command y args:

    apiVersion: serving.knative.dev/v1
    kind: Service
    spec:
      template:
        spec:
          containers:
          - image: IMAGE_URL
            command:
            - COMMAND
            args:
            - "ARG1"
            - "ARG-N"
    

    Reemplaza lo siguiente:

    • IMAGE_URL por una referencia a la imagen del contenedor, como gcr.io/cloudrun/hello
    • Opcional: COMMAND por el comando que deseas que ejecute el contenedor durante el inicio.
    • Opcional: ARG1 por uno o más argumentos para el comando que se ejecuta durante el inicio. Usa una lista delimitada por comas para más de un argumento.
  3. Reemplaza el servicio por la configuración nueva mediante el comando siguiente:

    gcloud run services replace service.yaml