Configurar contenedores

Consulta cómo configurar el puerto del contenedor y el comando y los argumentos del punto de entrada del contenedor.

Cuando Knative Serving inicia un contenedor, ejecuta el comando de punto de entrada predeterminado de la imagen y los argumentos de comando predeterminados. Si quieres anular el punto de entrada y los argumentos de comando predeterminados 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 transferidos a ese comando.

Configurar el puerto del contenedor

Cualquier cambio en la configuración conlleva la creación de una nueva revisión. Las revisiones posteriores también recibirán automáticamente este ajuste de configuración, a menos que hagas cambios explícitos para modificarlo.

El contenedor debe usar el puerto definido por la variable de entorno PORT en lugar de un puerto específico codificado. Sin embargo, si no es posible, puedes configurar el puerto al que se envían las solicitudes al contenedor:

Consola

  1. Ve a Knative Serving en la Google Cloud consola:

    Ir a Knative serving

  2. Haga clic en Crear servicio si va a configurar un servicio nuevo que va a implementar. Si va a configurar un servicio que ya tiene, haga clic en él y, a continuación, en Editar y desplegar nueva revisión.

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

  4. Especifique el puerto al que quiere que se envíen las solicitudes, si no es el valor predeterminado 8080. También se define la variable de entorno PORT.

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

  6. En la sección Configurar la activación del servicio, selecciona la conectividad que quieras usar para invocar el servicio.

  7. Haz clic en Crear para desplegar la imagen en Knative Serving y espera a que se complete el despliegue.

Línea de comandos

  • En el caso de los servicios que ya tengas, actualiza la configuración de un puerto ejecutando el comando gcloud run services update con los siguientes parámetros:

    gcloud run services update SERVICE --port PORT

    Sustituye:

    • SERVICE con el nombre del servicio.
    • PORT con el puerto al que enviar las solicitudes. Ten en cuenta que el puerto predeterminado es 8080.
  • En el caso de los servicios nuevos, define el puerto ejecutando el comando gcloud run deploy con el parámetro --port:

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

    Sustituye:

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

YAML

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

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

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

    Sustituye SERVICE por el nombre de tu servicio de Knative.

  2. En su archivo local, actualice el atributo containerPort::

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

    Sustituir

    • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, gcr.io/cloudrun/hello.
    • PORT con el puerto al que quieras enviar solicitudes.
  3. Sustituye el servicio por su nueva configuración con el siguiente comando:

    gcloud run services replace service.yaml

Configurar el comando y los argumentos del punto de entrada del contenedor

Cualquier cambio en la configuración conlleva la creación de una nueva revisión. Las revisiones posteriores también recibirán automáticamente este ajuste de configuración, a menos que hagas cambios explícitos para modificarlo.

Cuando Knative Serving inicia un contenedor, ejecuta el comando de punto de entrada predeterminado de la imagen. Para especificar o anular el comando y los argumentos de punto de entrada que se definen en la imagen del contenedor, puedes configurar los ajustes command y args en la configuración del contenedor de servicio de Knative.

Puedes configurar comandos de punto de entrada, argumentos o ambos. El comando que especifiques en Knative Serving anula cualquier comando de punto de entrada que se haya definido en la imagen de contenedor. Si solo especificas argumentos, estos se transfieren y se ejecutan mediante el comando de punto de entrada definido en la imagen del contenedor.

En Knative Serving, puedes configurar comandos y argumentos de punto de entrada mediante la Google Cloud consola, la CLI de Google Cloud o un archivo YAML cuando implementes un servicio nuevo, actualices un servicio ya implementado o implementes una revisión:

Consola

  1. Ve a Knative Serving en la Google Cloud consola:

    Ir a Knative serving

  2. Haga clic en Crear servicio si va a configurar un servicio nuevo que va a implementar. Si va a configurar un servicio que ya tiene, haga clic en él y, a continuación, en Editar y desplegar nueva revisión.

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

  4. Especifica el comando y los argumentos del punto de entrada que quieres que ejecute el contenedor durante el inicio.

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

  6. En la sección Configurar la activación del servicio, selecciona la conectividad que quieras usar para invocar el servicio.

  7. Haz clic en Crear para desplegar la imagen en Knative Serving y espera a que se complete el despliegue.

Línea de comandos

Opciones de parámetros de comandos

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

  • En el caso de los servicios que ya tengas, actualiza el comando de punto de entrada ejecutando el comando gcloud run services update con los siguientes parámetros:

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

    Sustituye:

    • SERVICE con el nombre del servicio.
    • Opcional: COMMAND con el comando que quieras que ejecute el contenedor durante el inicio.
    • Opcional: ARG1 con uno o varios argumentos para el comando que se ejecuta durante el inicio. Usa una lista delimitada por comas para incluir varios argumentos. Cómo dar formato a los argumentos.
  • En el caso de los servicios nuevos, define el comando de punto de entrada ejecutando el comando gcloud run deploy con el parámetro --command:

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

    Sustituye:

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

YAML

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

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

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

    Sustituye SERVICE por el nombre de tu servicio de Knative.

  2. En el archivo local, actualice 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"
    

    Sustituye:

    • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, gcr.io/cloudrun/hello.
    • Opcional: COMMAND con el comando que quieras que ejecute el contenedor durante el inicio.
    • Opcional: ARG1 con uno o varios argumentos para el comando que se ejecuta durante el inicio. Si hay más de un argumento, usa una lista delimitada por comas.
  3. Sustituye el servicio por su nueva configuración con el siguiente comando:

    gcloud run services replace service.yaml