对于 Cloud Run 服务,当 HTTP/2 请求被发送到容器时,Cloud Run 默认会将这些请求降级为 HTTP/1。如果要明确将服务设置为使用 HTTP/2 端到端而不进行此降级,可针对 HTTP/2 进行配置。本页面介绍如何进行配置。
如需详细了解如何使用 HTTP 调用服务,请参阅使用 HTTPS 请求调用。
配置前的准备工作
您的 Cloud Run 服务必须处理 HTTP/2 明文 (h2c
) 格式的请求,因为 Cloud Run 仍会自动终止 TLS。
如需确认您的服务支持 h2c
请求,请使用以下 cURL 命令在本地测试服务:
curl -i --http2-prior-knowledge http://localhost:PORT
设置和更新 HTTP/2 端到端
任何配置更改都会导致新修订版本的创建。后续修订版本也将自动采用此配置设置,除非您进行了明确更新。
您可以在创建新服务或部署新修订版本时使用 Google Cloud 控制台、gcloud 命令行或使用 YAML 文件来指定使用 HTTP/2 端到端:
控制台
在 Google Cloud 控制台中,前往 Cloud Run:
如果您是要配置一个新服务来作为部署目标,请点击创建服务。如果您要配置现有服务,请点击该服务,然后点击修改和部署新的修订版本。
如果您要配置新服务,请根据需要填写初始服务设置页面,然后点击容器、网络、安全性以展开服务配置页面。
点击网络标签页。
- 选中“启用 http/2 连接”复选框
点击创建或部署。
命令行
您可以使用以下命令将给定服务更新为使用 HTTP/2:
gcloud run services update SERVICE --use-http2
将 SERVICE
替换为服务的名称。
您也可以在部署期间使用以下命令将服务设置为使用 HTTP/2:
gcloud run deploy --image IMAGE_URL --use-http2
将 IMAGE_URL 替换为对容器映像的引用,例如 us-docker.pkg.dev/cloudrun/container/hello:latest
。如果您使用 Artifact Registry,则必须预先创建制品库 REPO_NAME。网址的形状为 REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
YAML
您可以使用 gcloud run services describe --format export
命令下载并查看现有服务配置,该命令会生成清理后的 YAML 格式的结果。然后按照后续说明修改字段,最后使用 gcloud run services replace
命令上传修改后的 YAML。请务必严格按照说明修改字段。
如需查看和下载配置,请运行以下命令:
gcloud run services describe SERVICE --format export > service.yaml
使用名称
h2c
更新ports
,并使用您选择的端口更新containerPort
,如以下示例所示: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
替换
- 将 SERVICE 替换为您的 Cloud Run 服务的名称
- 将 IMAGE_URL 替换为对容器映像的引用,例如
us-docker.pkg.dev/cloudrun/container/hello:latest
。 如果您使用 Artifact Registry,则必须预先创建制品库 REPO_NAME。网址的形状为REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- 将 REVISION 替换为新的修订版本名称或者将其删除(如果存在)。如果您提供新的修订版本名称,则该名称必须满足以下条件:
- 开头为
SERVICE-
- 仅包含小写字母、数字和
-
- 不以
-
结尾 - 不超过 63 个字符
- 开头为
使用以下命令将服务替换为其新配置:
gcloud run services replace service.yaml
Terraform
如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
将以下内容添加到 Terraform 配置中的 template.containers
下的 google_cloud_run_v2_service
资源中。如果您的容器在 8080
以外的端口上监听 HTTP 请求,请将 8080
替换为该端口号。
查看 http/2 设置
如需查看 Cloud Run 服务的当前 http/2 设置,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Cloud Run:
点击您感兴趣的服务以打开“服务详细信息”页面。
点击修订版本标签页。
在右侧的详细信息面板中,“网络”标签页下列出了 http/2 设置。
命令行
使用以下命令:
gcloud run services describe SERVICE
在返回的配置中找到 http/2 设置。