Cuando una instancia de contenedor recibe solicitudes, Cloud Run las pasa de HTTP/2 a HTTP/1. En esta página, se muestra cómo configurar tu servicio para que use HTTP/2 de extremo a extremo, lo que evita que Cloud Run disminuya el nivel de las solicitudes a HTTP1.
Para obtener más información sobre cómo invocar servicios con HTTP, consulta Invoca con una solicitud HTTPS.
Antes de configurar
El servicio de Cloud Run debe manejar las solicitudes en un formato de
texto simple de HTTP/2
(h2c
). La infraestructura de servicio de frontend de Google
finaliza TLS y, luego, reenvía el tráfico h2c
a Cloud Run
y a tu contenedor a través de un canal encriptado.
Para confirmar que tu servicio admite solicitudes h2c
, prueba el servicio de forma local con este comando curl:
curl -i --http2-prior-knowledge http://localhost:PORT
Roles obligatorios
Para obtener los permisos que necesitas para configurar y, luego, implementar los servicios de Cloud Run, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Desarrollador de Cloud Run (
roles/run.developer
) en el servicio de Cloud Run -
Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser
) en la identidad del servicio
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 servicio 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.
Servicios compatibles con HTTP/2
HTTP/2 es ideal para una variedad de aplicaciones. Estos son algunos casos de uso comunes:
- Websockets: Habilitan la comunicación en tiempo real a través de múltiples conexiones para aplicaciones como chat, juegos y feeds de datos en vivo.
- Servicios de gRPC: Compila microservicios de alto rendimiento y baja latencia que se comunican con gRPC.
- APIs con alta capacidad de procesamiento: Reducen la sobrecarga de las aplicaciones que requieren un manejo eficiente de numerosas solicitudes pequeñas o necesitan enviar datos a los clientes.
Configura y actualiza HTTP/2 de extremo a extremo
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.
Puedes especificar el uso de HTTP/2 de extremo a extremo con la consola de Google Cloud , Google Cloud CLI o YAML cuando creas un servicio nuevo o implementas una revisión nueva:
Console
En la consola de Google Cloud , ve a Cloud Run:
Selecciona Servicios en el menú y haz clic en Implementar contenedor para configurar un servicio nuevo. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en implementar y editar la nueva revisión.
Si configuras un servicio nuevo, completa la página de configuración del servicio inicial como desees y haz clic en Contenedores, volúmenes, Herramientas de redes y seguridad para expandir la página de configuración del servicio.
Haz clic en la pestaña Herramientas de redes.
- Selecciona Habilitar conexiones HTTP/2.
Haz clic en Crear o Implementar.
gcloud
Puedes actualizar un servicio determinado para usar HTTP/2 mediante el siguiente comando:
gcloud run services update SERVICE --use-http2
SERVICE
por el nombre del servicio
También puedes configurar tu servicio para que use HTTP/2 durante la implementación mediante el siguiente comando:
gcloud run deploy --image IMAGE_URL --use-http2
Reemplaza IMAGE_URL por una referencia a la imagen de contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
YAML
Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:
gcloud run services describe SERVICE --format export > service.yaml
Actualiza
ports
con el nombreh2c
ycontainerPort
con el puerto que elijas, como se muestra en el siguiente ejemplo:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: name: REVISION spec: containers: - image: IMAGE_URL ports: - name: h2c containerPort: 8080
Reemplazar
- SERVICE por el nombre del servicio de Cloud Run
- IMAGE_URL por una referencia a la imagen del contenedor, como
us-docker.pkg.dev/cloudrun/container/hello:latest
Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - REVISION por un nombre de revisión nuevo o bórralo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir con los siguientes criterios:
- Comienza con
SERVICE-
- Solo contiene letras minúsculas, números y
-
- No termina con
-
- No supera los 63 caracteres
- Comienza con
Crea o actualiza el servicio con el siguiente comando:
gcloud run services replace service.yaml
Terraform
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Agrega lo siguiente a un recursogoogle_cloud_run_v2_service
en tu configuración de Terraform:Si tu contenedor escucha solicitudes HTTP en un puerto que no sea 8080
, reemplaza 8080
por ese número de puerto.
Ve la configuración de http/2
Para ver la configuración http/2 actual del servicio de Cloud Run, sigue estos pasos:
Console
En la consola de Google Cloud , ve a Cloud Run:
Haz clic en el servicio que te interesa para abrir la página Detalles del servicio.
Haz clic en la pestaña Revisiones.
En el panel de detalles a la derecha, la configuración de http/2 se encuentra en la pestaña Herramientas de redes.
gcloud
Usa el siguiente comando:
gcloud run services describe SERVICE
Localiza la configuración de http/2 en la configuración mostrada.
Usa HTTP/2 detrás de un balanceador de cargas
Cuando se configura para escuchar HTTP/2, Cloud Run controla automáticamente el tráfico de HTTP/2 o gRPC que llega desde el balanceador de cargas de aplicaciones. No se necesita ninguna configuración específica en el servicio de backend del balanceador de cargas.
Para configurar Cloud Run para que use HTTP/2 o gRPC, usa uno de los siguientes métodos:
- Configura y actualiza HTTP/2 de extremo a extremo
- Configura un balanceador de cargas de aplicaciones externo con tu servicio de Cloud Run como backend.