ワークロードの IP アドレスをプロビジョニングする

組織の内部 Virtual Private Cloud(VPC)またはデフォルト VPC に追加のサブネットを作成して、内部ネットワーキング の要件をサポートします。たとえば、VPC サブネットを追加して、 仮想マシン(VM)やコンテナなどの内部ワークロードに十分な IP アドレスがあることを確認します。

このページでは、次のタスクについて説明します。これらのタスクは 順番に完了する必要はありません。

このページのタスクを完了する前に、サブネットとそのコンセプトの概要については、 サブネットと IP アドレスをご覧ください。

このドキュメントは、組織のネットワーク トラフィックの管理を担当するプラットフォーム管理者とアプリケーション オペレーターを対象としています。詳細については、 GDC エアギャップ ドキュメントの対象読者をご覧ください。

始める前に

サブネットの作成に必要な権限を取得するには、組織 IAM 管理者にサブネット組織管理者(subnet-org-admin) IAM ロールを付与するよう依頼してください。このロールは Namespace にバインドされていません。

ワークロードのゾーンブランチ サブネットを作成する

ゾーンのデフォルト VPC の IP アドレスをさらに細分化するには、ゾーンの既存のゾーンルート サブネットから ゾーン内部サブネットを作成します。このサブネット タイプは platform Namespace に 作成する必要があります。

親のゾーンルート サブネットで使用可能な IP アドレスが不足している場合は、 続行する前にグローバル IP アドレス範囲から別のゾーンサブネットを割り振ります

  • ターミナル ウィンドウで、管理 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 アドレス範囲を割り当てるには、次の操作を行います。

      1. prefixLength: CIDR_PREFIX_LENGTH 行を削除します。
      2. 代わりに cidr: "YOUR_CIDR_BLOCK" 行 (cidr: "10.0.10.0/27" など)を追加します。

      厳格な IP プランに従っていて、正確で予測可能な IP アドレス範囲を割り当てる必要がある場合は、cidr フィールドを使用します。この範囲は、有効な 利用可能なサブネットである必要があります。

    • PARENT_SUBNET_NAME: 親サブネットの名前( default-vpc-zone0-cidr など)。通常、親サブネットはデフォルト VPC のゾーン ルート サブネットです。

    詳細については、 Subnet リソースの API リファレンス ドキュメントをご覧ください。

    ゾーンサブネットをさらに細分化するか、リーフ サブネットを作成して、個々の IP アドレスを内部ワークロードに直接割り振ることができます。

個々のワークロードのリーフ サブネットを作成する

ワークロードに単一の IP アドレスを割り振るには、リーフ サブネットを作成する必要があります。 このリーフ サブネットには、フィールド値 type: Leaf が必要です。また、VM やコンテナなどのワークロード リソースと同じプロジェクト Namespace に存在する必要があります。

リーフ サブネットは、単一の IP アドレスを割り振ることを目的としているため、prefixLength 値を 32 に構成する必要があります。parentReference 値は、ワークロードのゾーンブランチ サブネットを作成するで作成した親ゾーンサブネット など、以前に割り振られたサブネットを参照します。

  • ターミナル ウィンドウで、管理 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:ワークロードが配置されているプロジェクトに対応するプロジェクト Namespace 。
    • PARENT_SUBNET: このリーフ サブネットが IP アドレスのソースとなる親サブネットの名前 。
    • PARENT_NAMESPACE: PROJECT_NAMESPACE または platform Namespace。

これで、VM やコンテナなどの内部 ワークロードで個々の IP アドレスを使用できるようになりました。ワークロードの IP アドレスを構成する方法の詳細については、 静的または動的 IP アドレスで VM を作成するまたは コンテナ ワークロードの内部ロードバランサを構成するをご覧ください。

グローバル IP アドレス範囲からゾーンサブネットを割り振る

既存のゾーンルート サブネットの IP アドレス範囲から、ワークロードに十分な IP アドレスが提供されない場合は、グローバル IP アドレスのルート範囲から追加の IP アドレスを割り振ることができます。

グローバル IP アドレス範囲からゾーンサブネットを割り振るには、 デフォルト VPC ネットワークに対して次の操作を行います。platform

  1. ターミナル ウィンドウで、デフォルト 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-range
    

    GLOBAL_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/1510.253.0.0/16 を使用できます。出力には複数のサブネットが表示されることがあります。 使用可能なすべての CIDR ブロックと そのソース サブネットをメモします。

  2. 前のステップで取得した使用可能な最大の CIDR ブロックを、ゾーンに必要な CIDR ブロックのサイズ と比較します。使用可能な最大の CIDR ブロック が新しいサブネットを割り振るのに十分な大きさでない場合は、 続行する前に新しいネットワーク ルート範囲のグローバル サブネット を追加します。新しいサブネットの CIDR ブロックを取得する親サブネットをメモします。

    たとえば、/13 CIDR ブロックが必要だが、使用可能な CIDR に /15/16 しかない場合は、新しいネットワーク ルート範囲のグローバル サブネットを追加する必要があります。/15 サブネットが必要な場合は、既存の /15 CIDR ブロックから新しいゾーンサブネット を割り振ることができます。

  3. グローバル 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 リファレンス ドキュメントをご覧ください。

  4. ステータスの 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
    
  5. ゾーンサブネットがゾーン管理 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 は、管理 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 で 次の操作を行います。

  1. ターミナル ウィンドウで、デフォルト 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-range
    

    GLOBAL_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/1510.253.0.0/16 を使用できます。ルート サブネットの数に応じて、出力に複数のサブネットが表示されることがあります。使用可能なすべての CIDR ブロックと、使用可能な CIDR ブロックのサブネットをメモします。

  2. 前のステップで取得した使用可能な最大の CIDR ブロックを、新しいグローバル サブネットに必要な CIDR ブロックの サイズと比較します。使用可能な最大の CIDR ブロックが新しい サブネットを割り振るのに十分な大きさでない場合は、続行する前に新しいネットワーク ルート範囲のグローバル サブネット を追加します。新しいサブネットの CIDR ブロックを取得する親サブネットをメモします。

    たとえば、/13 CIDR ブロックが必要だが、使用可能な CIDR に /15/16 しかない場合は、新しいネットワーク ルート範囲のグローバル サブネットを作成する必要があります。/15 サブネットが必要な場合は、既存の /15 CIDR ブロックから新しいグローバル サブネット を割り振ることができます。

  3. グローバル 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 リファレンス ドキュメントをご覧ください。

  4. ステータスの 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 Namespace の デフォルト 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 サーバー内で細分化することも特定のゾーンに割り振ることもできます

次のステップ