En esta página se describe cómo configurar el puerto del contenedor, el comando de punto de entrada y los argumentos de un servicio de Cloud Run.
Cuando Cloud Run inicia un contenedor, ejecuta el comando de punto de entrada predeterminado y los argumentos de comando predeterminados de la imagen. 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.
Ten en cuenta que puedes tener un máximo de 1000 argumentos por contenedor para cada servicio.
Roles obligatorios
Para obtener los permisos que necesitas para configurar e implementar servicios de Cloud Run, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Desarrollador de Cloud Run (
roles/run.developer
) en el servicio Cloud Run -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la identidad de servicio
Si vas a desplegar un servicio o una función a partir de código fuente, también debes tener otros roles concedidos en tu proyecto y en la cuenta de servicio de Cloud Build.
Para ver una lista de los roles y permisos de gestión de identidades y accesos asociados a Cloud Run, consulta los artículos sobre roles de gestión de identidades y accesos de Cloud Run y permisos de gestión de identidades y accesos de Cloud Run. Si tu servicio de Cloud Run interactúa con APIs, como las bibliotecas de cliente de Cloud, consulta la guía de configuración de la identidad del servicio.Google Cloud Para obtener más información sobre cómo conceder roles, consulta los artículos sobre permisos de implementación y gestión del acceso.
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.
En el caso de los servicios de Cloud Run, Cloud Run inserta la variable de entorno PORT
en el contenedor. Si despliegas varios contenedores en un servicio, este es el contenedor de entrada. El contenedor escucha en el puerto definido por la variable de entorno PORT
, en lugar de en un puerto específico codificado. Si no es posible, configura la escucha en el puerto que envía solicitudes al contenedor. Ten en cuenta que los ajustes de puerto no se aplican a los trabajos de Cloud Run.
Consola
En la Google Cloud consola, ve a Cloud Run:
Seleccione Servicios en el menú y haga clic en Implementar contenedor para configurar un nuevo servicio. Si vas a configurar un servicio que ya tienes, haz clic en él y, a continuación, en Editar y desplegar nueva revisión.
Si vas a configurar un servicio nuevo, rellena la página de configuración inicial del servicio y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del servicio.
Haz clic en la pestaña Contenedor.
- 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 dePORT
entorno.
- Especifique el puerto al que quiere que se envíen las solicitudes, si no es el valor predeterminado
Haz clic en Crear o en Implementar.
gcloud
Puedes actualizar la configuración del puerto de un servicio con el siguiente comando:
gcloud run services update SERVICE --port PORT
Haz los cambios siguientes:
- SERVICE: el nombre del servicio.
- PORT: el puerto al que se envían las solicitudes. Ten en cuenta que el puerto predeterminado es
8080
.
También puedes configurar los puertos durante la implementación con el siguiente comando:
gcloud run deploy --image IMAGE_URL --port PORT
Sustituye IMAGE_URL por una referencia a la imagen de contenedor. Por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
YAML
Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración YAML:
gcloud run services describe SERVICE --format export > service.yaml
Actualice el atributo
containerPort:
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: name: REVISION spec: containers: - image: IMAGE_URL ports: - containerPort: PORT
Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio de Cloud Run.
- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - PORT: el puerto al que se envían las solicitudes.
- REVISION con un nuevo nombre de revisión o elimínelo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir los siguientes criterios:
- Empieza por
SERVICE-
- Contiene solo letras minúsculas, números y
-
- No termina con
-
- No supera los 63 caracteres
- Empieza por
Sustituye el servicio por su nueva configuración con el siguiente comando:
gcloud run services replace service.yaml
Terraform
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Añade lo siguiente a un recursogoogle_cloud_run_v2_service
en tu configuración de Terraform:resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
containers {
name = "hello-1"
ports {
container_port = PORT
}
image = "IMAGE_URL"
}
}
}
Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio de Cloud Run.
- REGION: la Google Cloud región. Por ejemplo,
europe-west1
. - IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - PORT: el puerto al que se envían las solicitudes.
Configurar el punto de entrada y los argumentos
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 comando y los argumentos del contenedor especificados anulan los valores predeterminados de la imagen ENTRYPOINT
y CMD
.
Puedes definir el comando y los argumentos del punto de entrada mediante la Google Cloud consola, la CLI de Google Cloud o un archivo YAML cuando creas un servicio o despliegas una revisión:
Consola
En la Google Cloud consola, ve a Cloud Run:
Seleccione Servicios en el menú y haga clic en Implementar contenedor para configurar un nuevo servicio. Si vas a configurar un servicio que ya tienes, haz clic en él y, a continuación, en Editar y desplegar nueva revisión.
Si vas a configurar un servicio nuevo, rellena la página de configuración inicial del servicio y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del servicio.
Haz clic en la pestaña Contenedor.
- Especifica el comando que quieres que ejecute el contenedor (si no es el comando definido en el contenedor) y, de forma opcional, los argumentos del comando de punto de entrada.
Haz clic en Crear o en Implementar.
gcloud
Para actualizar el comando de inicio y los argumentos de un servicio, sigue estos pasos:
gcloud run services update SERVICE --command COMMAND --args ARG1,ARG-N
Haz los cambios siguientes:
- COMMAND: el comando con el que se debe iniciar el contenedor si no usas el comando predeterminado.
- ARG1: el argumento que envías al comando del contenedor. Si quieres enviar más de un argumento, usa una lista delimitada por comas.
Para especificar el punto de entrada y los argumentos durante la implementación de un servicio nuevo o ya creado, sigue estos pasos:
gcloud run deploy --image IMAGE_URL --command COMMAND --args ARG1,ARG-N
Sustituye IMAGE_URL por una referencia a la imagen de contenedor. Por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Para borrar los comandos y argumentos de punto de entrada que hayas definido (restaurar los valores predeterminados del contenedor), proporciona cadenas vacías de la siguiente manera:
gcloud run deploy --image IMAGE_URL --command "" --args ""
YAML
Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración YAML:
gcloud run services describe SERVICE --format export > service.yaml
Actualiza los atributos
command
yargs
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE_URL command: - COMMAND args: - ARG1 - ARG-N
Haz los cambios siguientes:
- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - COMMAND: el comando con el que se debe iniciar el contenedor si no usas el comando predeterminado.
- ARG1: el argumento que envías al contenedor comando. Si usas varios argumentos, especifica cada uno en una línea independiente (por ejemplo, como se muestra en ARG-N).
- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
Sustituye el servicio por su nueva configuración con el siguiente comando:
gcloud run services replace service.yaml
Terraform
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Añade lo siguiente a un recursogoogle_cloud_run_v2_service
en tu configuración de Terraform:El recurso google_cloud_run_v2_service
anterior especifica un comando y
argumentos. Sustituye /server
por el comando que se usa para iniciar el contenedor y añade los argumentos necesarios a la matriz args
.
Usar signos de igual o comas en los argumentos
Si usas signos igual en los argumentos, debes proporcionarlos con el siguiente formato:
gcloud run deploy \
--args="--repo-allowlist=github.com/example/example_demo"
Si sus argumentos usan comas, consulte la sección sobre configurar variables de entorno para obtener información sobre cómo escapar de ellas.
Configurar el orden de inicio de los contenedores en las implementaciones de sidecar
Para especificar el orden de inicio de los contenedores en una implementación sidecar, usa la función de dependencias de contenedores. Especifique los contenedores que tengan dependencias y enumere los contenedores de los que dependen. Estos contenedores se iniciarán primero. Los contenedores que no tienen dependencias siempre se inician primero y de forma simultánea.
Para usar esta función correctamente, debes usar sondas de comprobación del estado de inicio. La comprobación de inicio permite a Cloud Run inspeccionar el estado de un contenedor dependiente y asegurarse de que se supera correctamente antes de iniciar el siguiente contenedor. Si no usas comprobaciones de estado, los contenedores se inician en el orden especificado aunque los contenedores de los que dependen no se inicien.
Ten en cuenta que los contenedores de entrada tienen una sonda de comprobación de estado de inicio predeterminada.
Puedes usar la consola, la CLI de Google Cloud o YAML para especificar el orden de inicio: Google Cloud
Consola
En la Google Cloud consola, ve a la página Cloud Run:
- En el caso de un servicio que ya tengas, haz clic en él en la lista y selecciona Editar y desplegar nueva revisión para que se muestre el formulario de despliegue de la revisión.
- Para un servicio nuevo, selecciona Servicios en el menú y haz clic en Implementar contenedor para mostrar el formulario Crear servicio.
En el caso de un servicio nuevo, especifica el nombre del servicio, la URL del contenedor de entrada, la asignación de CPU, el control de entrada y la autenticación. En la pestaña Contenedores, volúmenes, redes y seguridad, haz lo siguiente:
- Configura el contenedor de entrada.
- Para añadir cada uno de los otros contenedores que vas a implementar, haz clic en Añadir contenedor.
- En todos los contenedores, excepto en el de entrada, configura una comprobación de estado de inicio. Los contenedores de entrada tienen una comprobación de estado de inicio predeterminada.
- Si un contenedor necesita que se inicien otros contenedores antes de poder iniciarse, usa el menú Orden de inicio de los contenedores para seleccionar los contenedores que deben iniciarse primero.
Para un servicio ya creado, sigue estos pasos:
- En todos los contenedores, excepto en el de entrada, configura una comprobación de estado de inicio. Los contenedores de entrada tienen una comprobación de estado de inicio predeterminada.
- Cada contenedor se muestra con su propio menú Orden de inicio del contenedor. Si un contenedor necesita que se inicien otros contenedores antes de poder iniciarse, usa el menú Orden de inicio de los contenedores para seleccionar los contenedores que deben iniciarse primero.
Completa las configuraciones necesarias y, a continuación, haz clic en Crear para crear un servicio o en Implementar para implementar un servicio. Espera a que finalice la implementación.
gcloud
Antes de usar la CLI de Google Cloud para especificar el orden de inicio, debes configurar una comprobación de estado de inicio para todos los contenedores, excepto el contenedor de entrada. Los contenedores de entrada tienen una comprobación de estado de inicio predeterminada. No puedes configurar comprobaciones de estado con la CLI de Google Cloud.
-
In the Google Cloud console, 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.
Para desplegar varios contenedores en un servicio con un orden de inicio específico, ejecuta el siguiente comando:
- SERVICE: el nombre del servicio en el que vas a implementar la aplicación. Puedes omitir este parámetro por completo, pero se te pedirá el nombre del servicio si lo haces.
- CONTAINER_PORT: el puerto en el que el contenedor de entrada escucha las solicitudes entrantes. A diferencia de un servicio de un solo contenedor, en el caso de un servicio que contiene sidecars, no hay ningún puerto predeterminado para el contenedor de entrada. Debe configurar explícitamente el puerto del contenedor de entrada y solo un contenedor puede tener el puerto expuesto.
- INGRESS_IMAGE: una referencia a la imagen del contenedor que debe recibir solicitudes (por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
). SIDECAR_IMAGE: una referencia a la imagen del contenedor secundario.
Si quiere configurar cada contenedor en el comando de implementación, proporcione la configuración de cada contenedor después de los parámetros
container
.Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración YAML:
gcloud run services describe SERVICE --format export > service.yaml
Actualice el atributo
container-dependencies
:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'
Haz los cambios siguientes:
- CONTAINER1: el nombre del primer contenedor que depende de uno o varios contenedores. Ten en cuenta que puedes definir el nombre del contenedor en el archivo YAML. Cloud Run generará automáticamente un nombre si no se especifica ninguno.
- CONTAINER2: el nombre del contenedor que debe iniciarse antes de CONTAINER1.
- CONTAINER3: el nombre del segundo contenedor que depende de uno o varios contenedores.
En el ejemplo que se muestra en el fragmento de YAML, CONTAINER2 se inicia en primer lugar, CONTAINER1 en segundo lugar y CONTAINER3 en último lugar.
Sustituye el servicio por su nueva configuración con el siguiente comando:
gcloud run services replace service.yaml
- SERVICE: el nombre de tu servicio de Cloud Run.
- REGION: la Google Cloud región. Por ejemplo,
europe-west1
. - CONTAINER1: el nombre del primer contenedor que depende de uno o varios contenedores.
- CONTAINER2: el nombre del contenedor que debe iniciarse antes de CONTAINER1.
- CONTAINER3: el nombre del contenedor que depende de CONTAINER1 y CONTAINER2.
gcloud run deploy SERVICE \ --container CONTAINER_1_NAME --image='INGRESS_IMAGE' --port='CONTAINER_PORT' \ --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
Haz los cambios siguientes:
YAML
Terraform
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Añade lo siguiente a un recursogoogle_cloud_run_v2_service
en tu configuración de Terraform:resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
containers {
name = "CONTAINER1"
ports {
container_port = 8080
}
image = "us-docker.pkg.dev/cloudrun/container/hello"
depends_on = ["CONTAINER2"]
}
containers {
name = "CONTAINER2"
image = "us-docker.pkg.dev/cloudrun/container/hello"
env {
name = "PORT"
value = "8081"
}
startup_probe {
http_get {
port = 8081
}
}
}
containers {
name = "CONTAINER3"
image = "us-docker.pkg.dev/cloudrun/container/hello"
depends_on = ["CONTAINER1", "CONTAINER2"]
env {
name = "PORT"
value = "8080"
}
startup_probe {
http_get {
port = 8080
}
}
}
}
}
Haz los cambios siguientes:
Ver la configuración del contenedor
Para ver la configuración actual del contenedor de tu servicio de Cloud Run, sigue estos pasos:
Consola
En la Google Cloud consola, ve a Cloud Run:
Haz clic en el servicio que te interese para abrir la página Detalles del servicio.
Haz clic en la pestaña Revisiones.
En el panel de detalles de la derecha, el ajuste del contenedor se muestra en la pestaña Contenedor.
gcloud
Usa el siguiente comando:
gcloud run services describe SERVICE
Busca el ajuste del contenedor en la configuración devuelta.