組織の内部 Virtual Private Cloud(VPC)またはデフォルト VPC に追加のサブネットを作成して、内部ネットワーキングの要件をサポートします。たとえば、VPC サブネットを追加して、仮想マシン(VM)やコンテナなどの内部ワークロードに十分な IP アドレスを確保します。
このページでは、いくつかのタスクについて説明します。これらのタスクは、順番に完了する必要はありません。
- ワークロード用のゾーン ブランチ サブネットを作成する: このタスクは、ゾーンの既存の内部 IP アドレスをさらに整理してワークロードに割り当てる場合に役立ちます。
- 個々のワークロードのリーフ サブネットを作成する: このタスクは、使用する IP アドレスがまだない新しいワークロードがある場合に便利です。
- グローバル IP アドレス範囲からゾーン サブネットを割り振る: このタスクは、ゾーンに十分な内部 IP アドレス空間がない場合に役立ちます。
- ゾーン割り当てなしでルート グローバル サブネットを分割する: このタスクは、グローバル API サーバーの内部 IP アドレスをゾーンに割り当てる前に、さらに整理するのに役立ちます。
- 新しいネットワーク ルート範囲のグローバル サブネットを追加する: このタスクは、デフォルトの VPC にゾーンに割り振るのに十分なグローバル内部 IP アドレス空間がなくなった場合に役立ちます。
このページのタスクを完了する前に、サブネットとそのコンセプトの概要について、サブネットと IP アドレスをご覧ください。
このドキュメントは、組織のネットワーク トラフィックの管理を担当するプラットフォーム管理者とアプリケーション オペレーターを対象としています。詳細については、GDC エアギャップ ドキュメントの対象読者をご覧ください。
始める前に
サブネットの作成に必要な権限を取得するには、IAM 組織管理者にサブネット組織管理者(subnet-org-admin)の IAM ロールを付与するよう依頼してください。このロールは Namespace にバインドされていません。
ワークロード用のゾーン ブランチ サブネットを作成する
ゾーンのデフォルト VPC の IP アドレスをさらに分割するには、ゾーンの既存のゾーンルート サブネットからゾーン内部サブネットを作成します。このサブネット タイプは platform Namespace に作成する必要があります。
親のゾーンルート サブネットに使用可能な IP アドレスが十分にない場合は、続行する前にグローバル IP アドレス範囲から別のゾーンサブネットを割り振ります。
ターミナル ウィンドウで、Management API サーバーに新しいゾーン サブネットを作成します。
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc name: SUBNET_NAME namespace: platform spec: ipv4Request: prefixLength: CIDR_PREFIX_LENGTH networkSpec: enableGateway: true enableVLANID: false parentReference: name: PARENT_SUBNET_NAME namespace: platform type: Branch EOF次のように置き換えます。
MANAGEMENT_API_SERVER_KUBECONFIG: 管理 API サーバーの kubeconfig ファイルのパス。詳細については、ゾーン管理 API サーバー リソースをご覧ください。SUBNET_NAME: 新しいネットワーク サブネットの名前。CIDR_PREFIX_LENGTH: 新しいサブネットのプレフィックス長(例:27)。このフィールドは、親サブネットからそのサイズの次に使用可能な IP アドレス範囲を動的に割り当てます。特定の IP アドレス範囲ではなく、サブネットのサイズのみを考慮する場合は、prefixLengthフィールドを使用します。特定の IP アドレス範囲を割り当てるには、次の操作を行います。
prefixLength: CIDR_PREFIX_LENGTH行を削除します。- 代わりに
cidr: "YOUR_CIDR_BLOCK"行(cidr: "10.0.10.0/27"など)を追加します。
cidrフィールドは、厳格な IP プランに従い、正確で予測可能な IP アドレス範囲を割り当てる必要がある場合に使用します。この範囲は、親サブネット内の有効で使用可能なサブネットである必要があります。PARENT_SUBNET_NAME: 親サブネットの名前(default-vpc-zone0-cidrなど)。親サブネットは通常、デフォルト VPC のゾーンルート サブネットです。
詳細については、
Subnetリソースの API リファレンス ドキュメントをご覧ください。ゾーン サブネットをさらに分割するか、リーフ サブネットを作成して、内部ワークロードに個別の IP アドレスを直接割り当てることができます。
個々のワークロード用のリーフ サブネットを作成する
ワークロードに単一の IP アドレスを割り当てるには、リーフ サブネットを作成する必要があります。このリーフ サブネットには、フィールド値 type: Leaf が必要です。また、VM やコンテナなどのワークロード リソースと同じプロジェクト Namespace に存在する必要があります。
リーフ サブネットは、単一の IP アドレスを割り当てることを目的としているため、prefixLength 値を 32 に構成する必要があります。parentReference 値は、ワークロード用のゾーン ブランチ サブネットを作成するで作成した親ゾーン サブネットなど、以前に割り振られたサブネットを参照します。
ターミナル ウィンドウで、Management API サーバーにリーフ サブネットを作成します。
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc name: SUBNET_NAME namespace: PROJECT_NAMESPACE spec: ipv4Request: prefixLength: 32 parentReference: name: PARENT_SUBNET namespace: PARENT_NAMESPACE type: Leaf EOF次のように置き換えます。
MANAGEMENT_API_SERVER_KUBECONFIG: 管理 API サーバーの kubeconfig ファイルのパス。詳細については、ゾーン管理 API サーバー リソースをご覧ください。SUBNET_NAME: リーフ サブネットの名前。PROJECT_NAMESPACE: ワークロードが配置されているプロジェクトに対応するプロジェクトの名前空間。PARENT_SUBNET: このリーフ サブネットが IP アドレスを取得する親サブネットの名前。PARENT_NAMESPACE:PROJECT_NAMESPACEまたはplatformの名前空間。
個々の IP アドレスは、VM やコンテナなどの内部ワークロードで使用できるようになりました。ワークロードの IP アドレスを構成する方法については、静的または動的 IP アドレスを使用して VM を作成するまたはコンテナ ワークロードの内部ロードバランサを構成するをご覧ください。
グローバル IP アドレス範囲からゾーン サブネットを割り振る
既存のゾーンルート サブネットの IP アドレス範囲からワークロードに十分な IP アドレスがゾーンに提供されない場合は、グローバル IP アドレスのルート範囲から追加の IP アドレスを割り振ることができます。
グローバル IP アドレス範囲からゾーン サブネットを割り振るには、platform Namespace のデフォルト VPC ネットワークに対して次の操作を行います。
ターミナル ウィンドウで、デフォルト VPC のすべてのルート サブネットを記述し、使用可能な CIDR ブロックを確認します。
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \ -l ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-rangeGLOBAL_API_SERVER_KUBECONFIGは、グローバル API サーバーの kubeconfig ファイルのパスに置き換えます。詳細については、グローバル API サーバー リソースをご覧ください。ラベルは定数であり、同じままにする必要があります。出力は次のようになります。
Name: default-vpc-root-cidr Namespace: platform Labels: ipam.gdc.goog/allocation-preference=default ipam.gdc.goog/subnet-group=default-vpc-root-group ipam.gdc.goog/usage=network-root-range ipam.gdc.goog/vpc=default-vpc Annotations: <none> API Version: ipam.global.gdc.goog/v1 Kind: Subnet Metadata: Creation Timestamp: 2025-06-18T23:05:38Z Finalizers: global-subnet-finalizer Generation: 1 Resource Version: 439434 UID: 5ed1c51a-b5ee-473e-a185-8e065a87ae8f Spec: ipv4Request: Cidr: 10.252.0.0/14 Propagation Strategy: None Type: Root Status: Children Refs: Name: default-vpc-zone1-root-cidr Namespace: platform Type: SingleSubnet Conditions: Last Transition Time: 2025-06-18T23:05:38Z Message: IP allocation finished successfully Observed Generation: 1 Reason: AllocationSucceeded Status: True Type: Ready ipv4Allocation: Available CIDRs: 10.254.0.0/15 10.253.0.0/16 Cidr: 10.252.0.0/14 Events: <none>Status.ipv4Allocation.Available CIDRsの値をメモします。これらの値は、次のステップで参照される使用可能な CIDR ブロックです。上記の出力では、CIDR 範囲10.254.0.0/15と10.253.0.0/16を使用できます。出力に複数のサブネットが表示される場合があります。使用可能なすべての CIDR ブロックとそのソース サブネットをメモします。前の手順で取得した利用可能な最大の CIDR ブロックと、ゾーンに必要な CIDR ブロックのサイズを比較します。使用可能な最大の CIDR ブロックが新しいサブネットを割り当てるのに十分な大きさでない場合は、続行する前に新しいネットワーク ルート範囲のグローバル サブネットを追加します。新しいサブネットの CIDR ブロックを取得する親サブネットをメモします。
たとえば、
/13CIDR ブロックが必要で、使用可能な CIDR に/15と/16のみが含まれている場合は、新しいネットワーク ルート範囲のグローバル サブネットを追加する必要があります。/15サブネットが必要な場合は、既存の/15CIDR ブロックから新しいゾーンサブネットを割り当てることができます。グローバル API サーバーに新しいサブネットを作成します。
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc ipam.gdc.goog/usage: zone-network-root-range name: SUBNET_NAME namespace: platform spec: ipv4Request: prefixLength: CIDR_PREFIX_LENGTH zone: ZONE_NAME propagationStrategy: SingleZone type: Branch parentReference: name: PARENT_SUBNET_NAME namespace: ORG_NAME EOF次のように置き換えます。
GLOBAL_API_SERVER_KUBECONFIG: グローバル API サーバーの kubeconfig ファイルへのパス。詳細については、グローバル API サーバー リソースをご覧ください。SUBNET_NAME: 新しいサブネットの名前。CIDR_PREFIX_LENGTH: 動的に割り振られる新しいサブネットの CIDR プレフィックス長(20など)。CIDR を静的に設定するには、prefixLengthフィールドをcidrフィールドに置き換え、CIDR ブロック(10.0.10.0/27など)を設定します。ZONE_NAME: サブネットを割り振るゾーン(zone1など)。PARENT_SUBNET_NAME: 親サブネットの名前(default-vpc-root-cidrなど)、または作成した新しいネットワーク ルート範囲のグローバル サブネット。ORG_NAME: 組織の名前。
詳細については、
Subnetリソースの API リファレンス ドキュメントをご覧ください。ステータス
Readyのタイプがtrueであることを確認して、サブネットが準備完了し、グローバル API サーバーで使用可能であることを確認します。kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \ SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'出力は次のようになります。
status: conditions: - lastTransitionTime: "2025-06-06T07:28:48Z" message: IP allocation finished successfully observedGeneration: 1 reason: AllocationSucceeded status: "True" type: Readyゾーン管理 API サーバーにゾーン サブネットが作成され、そのステータス
Readyタイプがtrueであることを確認します。kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet --namespace platform \ SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'MANAGEMENT_API_SERVER_KUBECONFIGは、Management API サーバーの kubeconfig ファイルのパスに置き換えます。詳細については、ゾーン管理 API サーバー リソースをご覧ください。出力は次のようになります。
status: conditions: - lastTransitionTime: "2025-06-06T07:29:34Z" message: IP allocation finished successfully observedGeneration: 1 reason: AllocationSucceeded status: "True" type: Readyこの新しいゾーン サブネットから、さらにゾーン子サブネットを作成したり、内部ワークロードに個別の IP アドレスを直接割り当てたりできます。
ゾーン割り当てなしでルート グローバル サブネットを分割する
グローバル サブネットをゾーンに割り当てずにさらに分割するには、グローバル サブネットを作成し、Subnet カスタム リソースの伝播戦略を省略します。この方法は、IP アドレスをゾーンに割り振らずに、グローバル ルート サブネットからグローバルにアクセス可能な IP アドレス範囲を整理する場合に便利です。
グローバル スコープ内でグローバル ルート サブネットを分割するには、platform Namespace で次の操作を行います。
ターミナル ウィンドウで、デフォルト VPC のすべてのルート サブネットを記述し、使用可能な CIDR ブロックを確認します。
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \ -l ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-rangeGLOBAL_API_SERVER_KUBECONFIGは、グローバル API サーバーの kubeconfig ファイルのパスに置き換えます。詳細については、グローバル API サーバー リソースをご覧ください。ラベルは定数であり、同じままにする必要があります。出力は次のようになります。
Name: default-vpc-root-cidr Namespace: platform Labels: ipam.gdc.goog/allocation-preference=default ipam.gdc.goog/subnet-group=default-vpc-root-group ipam.gdc.goog/usage=network-root-range ipam.gdc.goog/vpc=default-vpc Annotations: <none> API Version: ipam.global.gdc.goog/v1 Kind: Subnet Metadata: Creation Timestamp: 2025-06-18T23:05:38Z Finalizers: global-subnet-finalizer Generation: 1 Resource Version: 439434 UID: 5ed1c51a-b5ee-473e-a185-8e065a87ae8f Spec: ipv4Request: Cidr: 10.252.0.0/14 Propagation Strategy: None Type: Root Status: Children Refs: Name: default-vpc-zone1-root-cidr Namespace: platform Type: SingleSubnet Conditions: Last Transition Time: 2025-06-18T23:05:38Z Message: IP allocation finished successfully Observed Generation: 1 Reason: AllocationSucceeded Status: True Type: Ready ipv4Allocation: Available CIDRs: 10.254.0.0/15 10.253.0.0/16 Cidr: 10.252.0.0/14 Events: <none>Status.ipv4Allocation.Available CIDRsの値をメモします。これらの値は、次のステップで参照される使用可能な CIDR ブロックです。上記の出力では、CIDR 範囲10.254.0.0/15と10.253.0.0/16を使用できます。ルートサブネットの数によっては、出力に複数のサブネットが含まれる場合があります。使用可能なすべての CIDR ブロックと、使用可能な CIDR ブロックがどのサブネットから取得されたかをメモします。前の手順で取得した利用可能な最大の CIDR ブロックと、新しいグローバル サブネットに必要な CIDR ブロックのサイズを比較します。使用可能な最大の CIDR ブロックが新しいサブネットを割り当てるのに十分な大きさでない場合は、続行する前に新しいネットワーク ルート範囲のグローバル サブネットを追加します。新しいサブネットの CIDR ブロックを取得する親サブネットをメモします。
たとえば、
/13CIDR ブロックが必要で、使用可能な CIDR に/15と/16のみが含まれている場合は、新しいネットワーク ルート範囲のグローバル サブネットを作成する必要があります。/15サブネットが必要な場合は、既存の/15CIDR ブロックから新しいグローバル サブネットを割り振ることができます。グローバル API サーバーに新しいサブネットを作成します。
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc ipam.gdc.goog/usage: zone-network-root-range name: SUBNET_NAME namespace: platform spec: ipv4Request: prefixLength: CIDR_PREFIX_LENGTH propagationStrategy: None type: Branch parentReference: name: PARENT_SUBNET_NAME namespace: ORG_NAME EOF次のように置き換えます。
GLOBAL_API_SERVER_KUBECONFIG: グローバル API サーバーの kubeconfig ファイルへのパス。詳細については、グローバル API サーバー リソースをご覧ください。SUBNET_NAME: 新しいサブネットの名前。CIDR_PREFIX_LENGTH: 動的に割り振られる新しいサブネットの CIDR プレフィックス長(20など)。CIDR を静的に設定するには、prefixLengthフィールドをcidrフィールドに置き換え、CIDR ブロック(10.0.10.0/27など)を設定します。PARENT_SUBNET_NAME: 親サブネットの名前(default-vpc-root-cidrなど)、または作成した新しいネットワーク ルート範囲のグローバル サブネット。ORG_NAME: 組織の名前。
詳細については、グローバル
Subnetリソースの API リファレンス ドキュメントをご覧ください。ステータス
Readyのタイプがtrueであることを確認して、サブネットが準備完了し、グローバル API サーバーで使用可能であることを確認します。kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \ SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'出力は次のようになります。
status: conditions: - lastTransitionTime: "2025-06-06T07:28:48Z" message: IP allocation finished successfully observedGeneration: 1 reason: AllocationSucceeded status: "True" type: Ready
デフォルト VPC の組織の新しいグローバル サブネットが利用可能になりました。この新しいグローバル親サブネットから、特定のゾーンのサブネットを作成できます。
新しいネットワーク ルート範囲のグローバル サブネットを追加する
ipam.gdc.goog/usage: network-root-range ラベルが付いたグローバル サブネットは、ネットワークのすべてのゾーンの CIDR をホストします。CIDR が使い果たされた場合は、グローバル API サーバーに新しいネットワーク ルート範囲サブネットを作成する必要があります。必要に応じて、複数のルート グローバル サブネットを作成できます。
新しいネットワーク ルート範囲サブネットを作成するには、次の手順を完了します。
ターミナル ウィンドウで、
platform名前空間のデフォルト VPC に新しいネットワーク ルート範囲のグローバル サブネットを作成します。kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc ipam.gdc.goog/usage: network-root-range name: SUBNET_NAME namespace: platform spec: ipv4Request: cidr: NEW_CIDR type: Root EOF次のように置き換えます。
GLOBAL_API_SERVER_KUBECONFIG: グローバル API サーバーの kubeconfig ファイルへのパス。詳細については、グローバル API サーバー リソースをご覧ください。SUBNET_NAME: 新しいサブネットの名前。NEW_CIDR: サブネットの新しい CIDR。この CIDR は、同じグローバル API サーバーのipam.gdc.goog/usage: network-root-rangeラベルを持つ既存のすべてのサブネットの CIDR と重複することはできません。
この新しいグローバル ルート範囲サブネットは、グローバル API サーバー内で細分化することも、特定のゾーンに割り当てることもできます。