Para os serviços do Cloud Run, por padrão, o Cloud Run faz downgrade das solicitações HTTP/2 para HTTP/1 quando elas são enviadas ao contêiner. Se você quiser definir explicitamente que o serviço use HTTP/2 de ponta a ponta, sem esse downgrade, configure-o para HTTP/2. Nesta página, mostramos como fazer a configuração.
Para mais informações sobre como invocar serviços usando HTTP, consulte Como invocar com uma solicitação HTTPS.
Antes de configurar
O serviço do Cloud Run precisa processar solicitações no formato
HTTP/2 cleartext
(h2c
) porque o TLS continua sendo encerrado automaticamente pelo Cloud Run (link em inglês).
Para confirmar que o serviço é compatível com solicitações h2c
,
teste o serviço localmente usando este comando cURL:
curl -i --http2-prior-knowledge http://localhost:PORT
Como definir e atualizar HTTP/2 de ponta a ponta
Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.
É possível especificar o uso do HTTP/2 de ponta a ponta usando o Console do Google Cloud, a linha de comando gcloud ou um arquivo YAML ao criar um novo serviço ou implantar uma nova revisão:
Console
No console do Google Cloud, acesse o Cloud Run:
Clique em Criar serviço se estiver configurando um novo serviço em que fará uma implantação. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.
Se você estiver configurando um novo serviço, preencha a página inicial de configurações do serviço conforme preferir e clique em Contêineres, volumes, rede, segurança para expandir a página de configurações do serviço.
Clique na guia Rede.
- Marque a caixa de seleção Ativar conexões http/2
Clique em Criar ou Implantar.
Linha de comando
É possível atualizar um determinado serviço para usar HTTP/2 usando o seguinte comando:
gcloud run services update SERVICE --use-http2
SERVICE
pelo nome do serviço;
Também é possível definir que serviço use HTTP/2 durante a implantação usando o comando:
gcloud run deploy --image IMAGE_URL --use-http2
IMAGE_URL por uma referência à imagem de contêiner, por
exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest
; Se você usa o Artifact Registry,
o repositório REPO_NAME já
precisará ter sido criado. O URL tem o formato REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
YAML
É possível fazer o download e conferir as configurações de serviço usando o
comando gcloud run services describe --format export
, que produz
resultados limpos no formato YAML.
Em seguida, modifique os campos descritos abaixo e
faça upload do YAML modificado usando o comando gcloud run services replace
.
Modifique os campos somente conforme documentado.
Para visualizar e fazer o download da configuração:
gcloud run services describe SERVICE --format export > service.yaml
Atualize
ports
com o nomeh2c
econtainerPort
com a porta de sua escolha, conforme mostrado no exemplo a seguir: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
Substituir
- SERVICE pelo nome do serviço do Cloud Run
- IMAGE_URL por uma referência à imagem de contêiner. Por
exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formatoREGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- REVISION por um novo nome de revisão ou excluí-lo (se houver). Se você fornecer um novo nome de revisão, ele precisará atender aos seguintes critérios:
- Começa com
SERVICE-
- Contém apenas letras minúsculas, números e
-
- Não termina com um
-
- Não excede 63 caracteres
- Começa com
Substitua o serviço pela nova configuração usando o seguinte comando:
gcloud run services replace service.yaml
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Adicione o seguinte a um recurso google_cloud_run_v2_service
em template.containers
na
configuração do Terraform. Se o contêiner ouve solicitações HTTP em uma porta diferente de 8080
, substitua 8080
por pelo número dessa porta.
Ver configurações do http/2
Para ver as configurações atuais de http/2 do serviço do Cloud Run:
Console
No console do Google Cloud, acesse o Cloud Run:
Clique no serviço de seu interesse para abrir a página Detalhes do serviço.
Clique na guia Revisões.
No painel de detalhes à direita, a configuração http/2 está listada na guia Contêiner.
Linha de comando
Use o comando a seguir:
gcloud run services describe SERVICE
Localize a configuração http/2 na configuração retornada.