このページでは、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
)ロールを付与するよう依頼します。
詳細については、事前定義ロールの説明をご覧ください。
- 組織の IAM 管理者に、ロードバランサ管理者(
親グローバル サブネットを作成する
このセクションで作成する親グローバル サブネットは、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
で、ロードバランサ リソース(ForwardingRule
、BackendService
、Backend
など)と同じプロジェクト Namespace に存在する必要があります。
リーフ サブネットを作成して ILB にリンクする手順は次のとおりです。
単一の 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 アドレスを取得する親サブネットの名前(以前に作成した親グローバル サブネットなど)。
割り当てられた 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 が使用するネットワーク プロトコル(TCP
やUDP
など)。BES_NAME
: このForwardingRuleInternal
リソースに関連付けられているBackendService
の名前(nginx-bes
など)。LEAF_SUBNET_NAME
: 前の手順で作成したリーフ サブネットの名前(lb-project-ilb-ip
など)。