デュアルスタック サブネットを使用すると、Cloud Run リソースはダイレクト VPC 下り(外向き)を使用して VPC ネットワークに IPv4 トラフィックと IPv6 トラフィックを送信できます。既存の IPv4 のみ(シングルスタック)のサブネットをデュアルスタック サブネットに変更できます。
サブネットのタイプ
VPC ネットワークは、次の Compute Engine サブネット タイプをサポートしています。
IPv4 のみ(単一スタック)のサブネット(IPv4 サブネット範囲のみ)
IPv4 と IPv6(デュアル スタック)のサブネット(IPv4 と IPv6 の両方のサブネット範囲)
デュアルスタックの制限事項
既存の Cloud Run リソースのスタックタイプを変更する前に、次の制限事項を考慮してください。
デュアルスタック サポートは、カスタムモードの VPC ネットワークのサブネットでのみ使用できます。デュアルスタック サブネットで内部アクセスタイプを使用できるようにするには、VPC ネットワークの内部 IPv6 範囲を有効にする必要があります。VPC ネットワークをカスタムモードに設定または変換します。
IPv4 のみのサブネットと比較して、デュアルスタック サブネットではコールド スタートのレイテンシが増加し、アプリケーションのスケールアップ速度が制限される可能性があります。
NAT64 はサポートされていません。
始める前に
外部 IPv6 でサブネットを使用するには、Cloud Run サービス エージェントに Compute パブリック IP 管理者ロール(roles/compute.publicIpAdmin)があることを確認してください。
リソースにデュアルスタック サブネットを追加する
デュアルスタック サブネットには、IPv4 アドレス範囲と IPv6 アドレス範囲の両方が存在します。
Cloud Run リソースにデュアルスタック サブネットを追加する手順は次のとおりです。
コンソール
Google Cloud コンソールで次の操作を行います。
Compute Engine API を有効にします。
VPC ネットワーク ページに移動
新しいカスタムモード ネットワークを作成する場合は、[VPC ネットワークを作成] をクリックします。既存の VPC ネットワークを使用している場合は、VPC ネットワークの名前をクリックして、[VPC ネットワークの詳細] ページを表示します。
新しいネットワークを作成する場合や既存のネットワークを変換する場合は、名前を入力し、[サブネット作成モード] が [カスタム] に設定されていることを確認してから、[この VPC ネットワークの ULA 内部 IPv6 範囲を構成する] を選択します。
[サブネット] タブから [サブネットを追加] をクリックします。表示されるパネルで、次の手順を実施します。
- 名前を入力します。
- リージョンを選択します。
- [IP スタックタイプ] には、[IPv4 と IPv6(デュアルスタック)] を選択します。
- IPv4 範囲を入力します。これはサブネットのプライマリ IPv4 範囲です。
[IPv6 アクセスタイプ] を選択します。
[内部] オプションを使用できない場合は、ネットワークに内部 IPv6 範囲が割り当てられていることを確認します。
[追加] をクリックします。
作成したデュアルスタック サブネットに Cloud Run サービスをデプロイするか、ジョブを実行するか、ワーカープールをデプロイします。必要なリソースの詳細を入力するときに、次の手順で新しい IPv6 アドレス範囲を選択します。
- [コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックし、[ネットワーキング] タブを選択します。
- [アウトバウンド トラフィック用の VPC に接続する]、[VPC に直接トラフィックを送信する] の順にクリックします。
- 前の手順で作成したネットワークを選択します。
- [サブネット] フィールドをクリックして、新しく作成した IPv6 アドレス範囲を選択します。
リソースは、サブネットのスタックタイプで自動的にプロビジョニングされます。
gcloud
デュアルスタック サブネットをサポートするカスタムモード ネットワークを作成するには、
gcloud compute networks createコマンドを実行します。このネットワークのサブネットで内部 IPv6 範囲を構成するには、
--enable-ula-internal-ipv6フラグを使用します。このオプションでは、 Google Cloud が内部 IPv6 サブネット範囲に使用するfd20::/20範囲内の/48ULA 接頭辞を割り当てます。gcloud compute networks create NETWORK \ --subnet-mode=custom \ --enable-ula-internal-ipv6
NETWORKは、新しいサブネットを含む VPC ネットワークの名前に置き換えます。デュアルスタック サブネットをサポートするようにカスタムモード ネットワークを変換または更新するには、次のコマンドを実行します。
gcloud compute networks update NETWORK \ --subnet-mode=custom \ --enable-ula-internal-ipv6
NETWORKは、新しいサブネットを含む VPC ネットワークの名前に置き換えます。IPv6 範囲を持つデュアルスタック サブネットを作成するには、デュアルスタック設定を使用して
subnets createコマンドを実行します。gcloud compute networks subnets create SUBNET \ --network=NETWORK \ --range=PRIMARY_IPv4_RANGE \ --stack-type=IPV4_IPV6 \ --ipv6-access-type=IPV6_ACCESS_TYPE \ --region=REGION
次のように置き換えます。
SUBNET: 新しいサブネットの名前。NETWORK: 新しいサブネットが追加される VPC ネットワークの名前。PRIMARY_IPv4_RANGE: 新しいサブネットのプライマリ IPv4 範囲(CIDR 表記)。詳細については、IPv4 サブネットの範囲をご覧ください。IPV6_ACCESS_TYPE: 新しいサブネットの IPv6 アクセスタイプ(internalまたはexternal)。REGION: 新しいサブネットが作成される Google Cloud リージョン。
作成したデュアルスタック サブネットに Cloud Run サービスをデプロイするか、ジョブを実行するか、ワーカープールをデプロイします。リソースは、サブネットのスタックタイプで自動的にプロビジョニングされます。
YAML
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
次の属性を更新します。
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
次のように置き換えます。
- SERVICE_NAME: Cloud Run サービスの名前。サービス名は 49 文字以下で、リージョンとプロジェクトごとに一意である必要があります。
- REGION: Cloud Run サービスのリージョン。サブネットのリージョンと一致する必要があります。
- NETWORK: VPC ネットワークの名前。
- SUBNET: サブネットの名前。複数のサービス、ジョブ、ワーカープールを同じサブネットにデプロイまたは実行できます。
- (省略可)NETWORK_TAG_NAMES: サービスに関連付けるネットワーク タグの名前。サービスの場合、ネットワーク タグはリビジョン レベルで指定されます。サービス リビジョンには、
network-tag-2などの異なるネットワーク タグを設定できます。 - EGRESS_SETTING: 下り(外向き)設定値。
all-traffic: すべてのアウトバウンド トラフィックを VPC ネットワーク経由で送信します。private-ranges-only: VPC ネットワーク経由で内部アドレスにのみトラフィックを送信します。
- IMAGE: サービス コンテナ イメージの URL。
環境変数やメモリ上限など他の構成を指定することもできます。
次のコマンドを使用して、サービスを作成または更新します。
gcloud run services replace service.yaml
Terraform
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
次のコードを
main.tfファイルに追加します。
(省略可能)サービスへの未認証アクセスを許可したい場合は、サービスを一般公開にします。
サブネットをシングルスタックからデュアルスタックに変更する
カスタムモードの VPC ネットワークの既存の IPv4 のみのサブネットに IPv6 サブネット範囲を追加するには、サブネットのスタックタイプをデュアルスタックに変更するをご覧ください。次に、デュアルスタック サブネットに Cloud Run サービスをデプロイするか、ジョブを実行するか、ワーカープールをデプロイします。
サブネットをデュアルスタックからシングルスタックに変更する
リソースのデュアルスタック サブネットをシングルスタック サブネットに変更するには、デュアルスタック サブネットを IPv4 のみに変更するをご覧ください。次に、デュアルスタック サブネットに Cloud Run サービスをデプロイするか、ジョブを実行するか、ワーカープールをデプロイします。
ネットワークとサブネットを確認する
リソースが VPC ネットワーク上にあることを確認するには、次のコマンドを実行します。
gcloud run services describe SERVICE_NAME --region=REGION
REGION は、新しいサブネットが作成された Google Cloud リージョンに置き換えます。
次の出力例は、ネットワークとサブネットを示しています。
VPC Access:
Network: example-network
Subnet: example-subnet
Egress: private-ranges-only