内部ロード バランシング用のグローバル サブネットを作成する

このページでは、Google Distributed Cloud(GDC)エアギャップでグローバル サブネットを作成し、そのサブネットを内部ロードバランサ(ILB)に使用する方法について説明します。

グローバル サブネットを使用すると、GDC 組織内の複数のゾーンで内部ロード バランシング オペレーションを構成できます。ロード バランシングは、ネットワーク トラフィックを複数のサーバーに分散することで、アプリケーションとサービスのパフォーマンス、信頼性、可用性を向上させるというメリットをもたらします。ロード バランシングのグローバル サブネットの詳細については、ロード バランシングのサブネットについてをご覧ください。

このページは、組織のロード バランシングの管理を検討しているアプリケーション オペレータ グループ内のデベロッパーを対象としています。詳細については、GDC エアギャップのオーディエンスに関するドキュメントをご覧ください。

始める前に

グローバル サブネットを作成して ILB 用に構成するには、次のものが必要です。

  • ロードバランサを構成するプロジェクトを所有している。詳細については、プロジェクトを作成するをご覧ください。
  • 必要な ID とアクセスロール:

    • 組織の IAM 管理者に、ロードバランサ管理者(load-balancer-admin)ロールを付与するよう依頼します。
    • 組織 IAM 管理者に、グローバル ロードバランサ管理者(global-load-balancer-admin)ロールを付与するよう依頼します。
    • 組織 IAM 管理者に、サブネット組織管理者(subnet-org-admin)ロールを付与するよう依頼します。
    • 組織の IAM 管理者に、サブネット プロジェクト管理者(subnet-project-admin)ロールを付与するよう依頼します。

    詳細については、事前定義ロールの説明をご覧ください。

親グローバル サブネットを作成する

このセクションで作成する親グローバル サブネットは、ILB の IP アドレスの取得元となる IP アドレス プールとして機能します。サブネットの親は、spec.parentReference.name フィールドを使用して指定します。この親サブネットの CIDR を構成するには、次の 2 つの方法があります。

静的 CIDR 構成と動的 CIDR 構成の違いについては、静的 CIDR 構成と動的 CIDR 構成をご覧ください。

静的 CIDR 構成を使用してサブネットを作成する

IP アドレス空間を正確に制御する必要がある場合は、静的 CIDR 構成を使用します。このサブネットのタイプは Branch です。ルート、ブランチ、リーフのサブネット タイプの詳細については、サブネット階層をご覧ください。

静的 CIDR 構成でグローバル親サブネットを作成するには、選択した CIDR ブロックを spec.ipv4Request.cidr フィールドに追加します。

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
  labels:
    ipam.gdc.goog/vpc: default-vpc
  name: ILB_PARENT_SUBNET_NAME
  namespace: platform
spec:
  ipv4Request:
    cidr: STATIC_CIDR
  parentReference:
    name: PARENT_NAME
    namespace: platform
  propagationStrategy: None
  type: Branch
EOF

次のように置き換えます。

  • GLOBAL_API_SERVER: グローバル管理 API サーバーの kubeconfig パス。詳細については、グローバル API サーバーとゾーン API サーバーをご覧ください。API サーバーの kubeconfig ファイルをまだ生成していない場合は、ログインをご覧ください。
  • ILB_PARENT_SUBNET_NAME: ILB のグローバル親サブネットに選択した名前。
  • STATIC_CIDR: この親サブネットに割り当てる特定の CIDR ブロック(10.0.10.0/27 など)。
  • PARENT_NAME: この新しいサブネットの作成元となる既存の親サブネットの名前。

このサブネットが ILB と連携するように構成するには、ILB のリーフ サブネットを作成する必要があります。

動的 CIDR 構成を使用してサブネットを作成する

動的 CIDR 構成では、指定されたサイズの使用可能な CIDR ブロックが親サブネットから自動的に割り当てられます。これにより、特に大規模な環境で IP アドレスの管理が簡素化されます。このサブネットのタイプは Branch です。ルート、ブランチ、リーフのサブネット タイプの詳細については、サブネット階層をご覧ください。

動的 CIDR を使用してグローバル親サブネットを作成するには、選択したプレフィックスの長さで spec.ipv4Request.prefixLength フィールドを構成します。

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
  labels:
    ipam.gdc.goog/vpc: default-vpc
  name: ILB_PARENT_SUBNET_NAME
  namespace: platform
spec:
  ipv4Request:
    prefixLength: PREFIX_LENGTH
  parentReference:
    name: PARENT_NAME
    namespace: platform
  propagationStrategy: None
  type: Branch

EOF

次のように置き換えます。

  • ILB_PARENT_SUBNET_NAME: ILB 親サブネットに選択した名前(lb-global-lancer-ilb-subnet など)。
  • STATIC_CIDR: 使用する特定の CIDR ブロック(10.0.10.0/27 など)。この変数は、静的 CIDR 構成にのみ適用されます。
  • PARENT_NAME: この新しいサブネットの作成元となる既存の親サブネットの名前(default-vpc-workload-cidr など)。
  • PREFIX_LENGTH: 動的に割り当てられた CIDR の選択されたプレフィックス長(27 など)。この変数は、動的 CIDR 構成にのみ適用されます。

このサブネットが ILB と連携するように構成するには、ILB のリーフ サブネットを作成する必要があります。

ILB のリーフ サブネットを作成する

グローバル親サブネットを設定したら、リーフ サブネットを作成して、グローバル ILB サービスに単一の IP アドレスを割り当てる必要があります。このリーフ サブネットの type フィールドの値は Leaf で、ロードバランサ リソース(ForwardingRuleBackendServiceBackend など)と同じプロジェクト Namespace に存在する必要があります。

リーフ サブネットを作成して ILB にリンクする手順は次のとおりです。

  1. 単一の IP アドレスを割り当てるため、prefixLength 値が 32 のリーフ サブネットを作成します。parentReference 値は、以前に作成した親グローバル サブネットを参照します。

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/allocation-preference: default
        ipam.gdc.goog/vpc: default-vpc
      name: ILB_IP_SUBNET_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      ipv4Request:
        prefixLength: 32
      parentReference:
        name: PARENT_REF
        namespace: platform
      type: Leaf
    EOF
    

    次のように置き換えます。

    • ILB_IP_SUBNET_NAME: 選択したリーフ サブネットの名前(lb-project-ilb-ip など)。
    • PROJECT_NAMESPACE: ILB オブジェクトが配置されているプロジェクトに対応する Kubernetes Namespace(例: lb-project)。
    • PARENT_REF: このリーフ サブネットが IP アドレスを取得する親サブネットの名前(以前に作成した親グローバル サブネットなど)。
  2. 割り当てられた IP アドレスを保持する新しく作成したリーフ サブネットを、ILB の ForwardingRuleInternal リソースに接続します。ForwardingRuleInternal リソースで、spec.cidrRef.name フィールドを更新して、前の手順で作成したリーフ サブネットの名前を参照します。

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ForwardingRuleInternal
    metadata:
      name: FRI_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      ports:
        - port: PORT
          protocol: PROTOCOL
      backendServiceRef:
        name: BES_NAME
      cidrRef:
        name: LEAF_SUBNET_NAME
    EOF
    

    次のように置き換えます。

    • FRI_NAME: 選択した ForwardingRuleInternal オブジェクトの名前(nginx-ilb-static-fr など)。
    • PORT: ILB が受信トラフィックをリッスンするポート番号(80 など)。
    • PROTOCOL: ILB が使用するネットワーク プロトコル(TCPUDP など)。
    • BES_NAME: この ForwardingRuleInternal リソースに関連付けられている BackendService の名前(nginx-bes など)。
    • LEAF_SUBNET_NAME: 前の手順で作成したリーフ サブネットの名前(lb-project-ilb-ip など)。