このページでは、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など)。