Usar HTTP/2 para serviços

Quando uma instância de contêiner recebe solicitações, o Cloud Run faz downgrade dessas solicitações de HTTP/2 para HTTP/1. Nesta página, mostramos como configurar seu serviço para usar HTTP/2 de ponta a ponta, o que impede que o Cloud Run faça downgrade das solicitações para HTTP1.

Para mais informações sobre como invocar serviços usando HTTP, consulte Como invocar com uma solicitação HTTPS.

Antes de configurar

Seu serviço do Cloud Run precisa processar solicitações no formato de texto não criptografado HTTP/2 (h2c). A infraestrutura de serviços de front-end do Google encerra o TLS e encaminha o tráfego h2c para o Cloud Run e o contêiner por meio de um canal criptografado.

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

Funções exigidas

Para receber as permissões necessárias para configurar e implantar os serviços do Cloud Run, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o serviço do Cloud Run interage com APIs doGoogle Cloud , como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.

Serviços HTTP/2 compatíveis

O HTTP/2 é ideal para vários aplicativos. Confira alguns casos de uso comuns:

  • Websockets: permitem a comunicação em tempo real em várias conexões para aplicativos como chat, jogos e feeds de dados ao vivo.
  • Serviços gRPC: crie microsserviços de alta performance e baixa latência que se comunicam usando o gRPC.
  • APIs com alta capacidade de transferência: reduzem a sobrecarga de aplicativos que exigem o processamento eficiente de várias solicitações pequenas ou precisam enviar dados para clientes.

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 Google Cloud CLI ou o YAML ao criar um novo serviço ou implantar uma nova revisão:

Console

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

    Acessar o Cloud Run

  2. Selecione Serviços no menu e clique em Implantar contêiner para configurar um novo serviço. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.

  3. Ao configurar um novo serviço, preencha a página inicial de configurações de serviço e clique em Contêineres, volumes, Rede e segurança para expandir essa página.

  4. Clique na guia Rede.

    imagem

    • Selecione Ativar conexões http/2
  5. Clique em Criar ou Implantar.

gcloud

É 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 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

YAML

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço, faça o download da configuração YAML correspondente:

    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 LOCATION-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. Crie ou atualize o serviç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 na configuração do Terraform:

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

  deletion_protection = false # set to "true" in production

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

Se o contêiner ouve solicitações HTTP em uma porta diferente de 8080, substitua 8080 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

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

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

gcloud

  1. Use o comando a seguir:

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

Usar HTTP/2 atrás de um balanceador de carga

Quando configurado para detectar HTTP/2, o Cloud Run processa automaticamente o tráfego HTTP/2 ou gRPC que chega do balanceador de carga de aplicativo. Nenhuma configuração específica é necessária 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: