Quando uma instância de contentor recebe pedidos, o Cloud Run reduz esses pedidos de HTTP/2 para HTTP/1, exceto no caso do tráfego gRPC nativo, que requer HTTP/2 para funcionar corretamente. Esta página mostra como configurar o seu serviço para usar HTTP/2 ponto a ponto, o que impede o Cloud Run de fazer o downgrade dos pedidos para HTTP/1.
Para mais informações sobre como invocar serviços através de HTTP, consulte o artigo Invocar com um pedido HTTPS.
Antes de configurar
O seu serviço do Cloud Run tem de processar pedidos no formato de texto não cifrado HTTP/2 (h2c
). A infraestrutura de publicação de front-end da Google termina o TLS e, em seguida, encaminha o tráfego h2c
para o Cloud Run e para o seu contentor através de um canal encriptado.
Para confirmar que o seu serviço suporta pedidos h2c
,
teste o serviço localmente através deste comando curl:
curl -i --http2-prior-knowledge http://localhost:PORT
Funções necessárias
Para receber as autorizações de que precisa para configurar e implementar serviços do Cloud Run, peça ao seu administrador para lhe conceder as seguintes funções de IAM:
-
Programador do Cloud Run (
roles/run.developer
) no serviço Cloud Run -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na identidade do serviço
Se estiver a implementar um serviço ou uma função a partir do código fonte, também tem de ter funções adicionais concedidas no seu projeto e na conta de serviço do Cloud Build.
Para ver uma lista de funções e autorizações de IAM associadas ao Cloud Run, consulte os artigos Funções de IAM do Cloud Run e Autorizações de IAM do Cloud Run. Se o seu serviço do Cloud Run interage com Google Cloud APIs, como as bibliotecas cliente da Google Cloud, consulte o guia de configuração da identidade do serviço. Para mais informações sobre a atribuição de funções, consulte as autorizações de implementação e faça a gestão do acesso.
Serviços HTTP/2 suportados
O HTTP/2 é ideal para várias aplicações. Seguem-se alguns exemplos de utilização comuns:
- Serviços gRPC: crie microsserviços de alto desempenho e baixa latência que comunicam através do gRPC.
- APIs com elevado débito: reduza a sobrecarga para aplicações que requerem um processamento eficiente de vários pedidos pequenos ou precisam de enviar dados para clientes.
Defina e atualize o HTTP/2 ponto a ponto
Qualquer alteração de configuração leva à criação de uma nova revisão. As revisões subsequentes também vão receber automaticamente esta definição de configuração, a menos que faça atualizações explícitas para a alterar.
Pode especificar a utilização de HTTP/2 ponto a ponto através da Google Cloud consola, da CLI Google Cloud ou de YAML quando cria um novo serviço ou implementa uma nova revisão:
Consola
Na Google Cloud consola, aceda ao Cloud Run:
Selecione Serviços no menu e clique em Implementar contentor para configurar um novo serviço. Se estiver a configurar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.
Se estiver a configurar um novo serviço, preencha a página de definições iniciais do serviço e, de seguida, clique em Contentores, volumes, rede, segurança para expandir a página de configuração do serviço.
Clique no separador Rede.
- Selecione Ativar ligações http/2
Clique em Criar ou Implementar.
gcloud
Pode atualizar um determinado serviço para usar HTTP/2 através do seguinte comando:
gcloud run services update SERVICE --use-http2
Substitua SERVICE
pelo nome do seu serviço.
Também pode definir o seu serviço para usar HTTP/2 durante a implementação através do comando:
gcloud run deploy --image IMAGE_URL --use-http2
Substitua IMAGE_URL por uma referência à imagem do contentor, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de
já estar criado. O URL segue o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
YAML
Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:
gcloud run services describe SERVICE --format export > service.yaml
Atualize
ports
com o nomeh2c
econtainerPort
com a porta à sua escolha, conforme mostrado no exemplo seguinte: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
Substitua o seguinte:
- SERVICE: o nome do seu serviço do Cloud Run
- IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - REVISION com um novo nome de revisão ou elimine-o (se existir). Se fornecer um novo nome de revisão, este tem de cumprir os seguintes critérios:
- Começa com
SERVICE-
- Contém apenas letras minúsculas, números e
-
- Não termina com um
-
- Não exceder 63 carateres
- Começa com
Crie ou atualize o serviço com o seguinte comando:
gcloud run services replace service.yaml
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Adicione o seguinte a um recursogoogle_cloud_run_v2_service
na sua configuração do Terraform:Se o seu contentor estiver à escuta de pedidos HTTP numa porta diferente de 8080
, substitua 8080
por esse número de porta.
Veja as definições de http/2
Para ver as definições atuais de HTTP/2 do seu serviço do Cloud Run:
Consola
Na Google Cloud consola, aceda ao Cloud Run:
Clique no serviço que lhe interessa para abrir a página Detalhes do serviço.
Clique no separador Revisões.
No painel de detalhes à direita, a definição http/2 é apresentada no separador Rede.
gcloud
Use o seguinte comando:
gcloud run services describe SERVICE
Localize a definição http/2 na configuração devolvida.
Use HTTP/2 atrás de um balanceador de carga
Quando configurado para ouvir HTTP/2, o Cloud Run processa automaticamente o tráfego HTTP/2 ou gRPC proveniente do Application Load Balancer. Não é necessária nenhuma configuração específica no serviço de back-end do balanceador de carga.
Para configurar o Cloud Run para usar HTTP/2 ou gRPC, use um dos seguintes métodos:
- Defina e atualize o HTTP/2 ponto a ponto
- Configure um balanceador de carga de aplicações externo com o seu serviço do Cloud Run como back-end.