Como usar HTTP/2 (serviços)

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

  1. No console do Google Cloud, acesse o Cloud Run:

    Acesse o Cloud Run

  2. 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.

  3. 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.

  4. Clique na guia Rede.

    image

    • Marque a caixa de seleção Ativar conexões http/2
  5. 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.

  1. Para visualizar e fazer o download da configuração:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize ports com o nome h2c e containerPort 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 formato REGION-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
  3. 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.

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-h2c"
  location = "us-central1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      # Enable HTTP/2
      ports {
        name           = "h2c"
        container_port = 8080
      }
    }
  }
}

Ver configurações do http/2

Para ver as configurações atuais de http/2 do serviço do Cloud Run:

Console

  1. No console do Google Cloud, acesse o Cloud Run:

    Acesse o Cloud Run

  2. Clique no serviço de seu interesse para abrir a página Detalhes do serviço.

  3. Clique na guia Revisões.

  4. No painel de detalhes à direita, a configuração http/2 está listada na guia Contêiner.

Linha de comando

  1. Use o comando a seguir:

    gcloud run services describe SERVICE
  2. Localize a configuração http/2 na configuração retornada.