Cloud Run サービスのデフォルトでは、Cloud Run は HTTP/2 リクエストをコンテナに送信する際に、リクエストを HTTP/1 にダウングレードします。そのようなダウングレードをせずにエンドツーエンドで HTTP/2 を使用するようにサービスを明示的に設定する場合、HTTP/2 用に構成できます。このページでは、その構成方法について説明します。
HTTP を使用したサービスの呼び出しの詳細については、HTTPS リクエストによる呼び出しをご覧ください。
構成する前に
TLS は Cloud Run によって自動的に終了されるため、Cloud Run サービスは HTTP/2 クリアテキスト(h2c
)形式でリクエストを処理する必要があります。
サービスが 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 がすでに作成されている必要があります。URL の形式は 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
次の例に示すように、
ports
を名前h2c
に更新し、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 がすでに作成されている必要があります。URL の形式は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 設定を見つけます。