このページでは、Google Distributed Cloud(GDC)エアギャップでグローバル サブネットを作成し、そのサブネットを外部ロードバランサ(ELB)に使用する方法について説明します。
グローバル サブネットを使用すると、GDC 組織内の複数のゾーンで外部ロード バランシング オペレーションを使用できるサブネットを構成できます。ロード バランシングは、ネットワーク トラフィックを複数のサーバーに分散することで、アプリケーションとサービスのパフォーマンス、信頼性、可用性を向上させるというメリットをもたらします。ロード バランシングのグローバル サブネットの詳細については、ロード バランシングのサブネットについてをご覧ください。
このページは、組織のロード バランシングの管理を検討しているアプリケーション オペレータ グループ内のデベロッパーを対象としています。詳細については、GDC エアギャップのオーディエンスに関するドキュメントをご覧ください。
始める前に
グローバル サブネットを作成して ELB 用に構成するには、次のものが必要です。
- ロードバランサを構成するプロジェクトを所有している。詳細については、プロジェクトを作成するをご覧ください。
必要な ID とアクセスロール:
- 組織の IAM 管理者に、ロードバランサ管理者(
load-balancer-admin
)ロールを付与するよう依頼します。 - 組織 IAM 管理者に、グローバル ロードバランサ管理者(
global-load-balancer-admin
)ロールを付与するよう依頼します。 - 組織 IAM 管理者に、サブネット組織管理者(
subnet-org-admin
)ロールを付与するよう依頼します。 - 組織の IAM 管理者に、サブネット プロジェクト管理者(
subnet-project-admin
)ロールを付与するよう依頼します。
詳細については、事前定義ロールの説明をご覧ください。
- 組織の IAM 管理者に、ロードバランサ管理者(
親グローバル サブネットを作成する
このセクションで作成する親グローバル サブネットは、ELB IP アドレスの取得元となる IP アドレス プールとして機能します。サブネットには ipam.gdc.goog/network-segment: data
ラベルが含まれている必要があります。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/network-segment: data
name: ELB_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 ファイルをまだ生成していない場合は、ログインをご覧ください。ELB_PARENT_SUBNET_NAME
: ELB のグローバル親サブネットに選択した名前。STATIC_CIDR
: この親サブネットに割り当てる特定の CIDR ブロック(10.0.10.0/27
など)。PARENT_NAME
: この新しいサブネットの作成元となる既存の親サブネットの名前。
このサブネットが ELB と連携するように構成するには、ELB のリーフ サブネットを作成する必要があります。
動的 CIDR 構成を使用してサブネットを作成する
動的 CIDR 構成では、指定されたサイズの使用可能な CIDR ブロックが親サブネットから自動的に割り当てられます。これにより、特に大規模な環境で IP アドレスの管理が簡素化されます。このサブネットのタイプは Branch
です。ルート、ブランチ、リーフのサブネット タイプの詳細については、サブネット階層をご覧ください。動的 CIDR を使用してグローバル親サブネットを作成するには、選択したプレフィックスの長さで spec.ipv4Request.prefixLength
フィールドを構成します。
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
piVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: data
name: ELB_PARENT_SUBNET_NAME
namespace: platform
spec:
ipv4Request:
prefixLength: PREFIX_LENGTH
parentReference:
name: PARENT_NAME
namespace: platform
propagationStrategy: None
type: Branch
EOF
次のように置き換えます。
ELB_PARENT_SUBNET_NAME
: ELB 親サブネットに選択した名前(lb-global-lancer-elb-subnet
など)。STATIC_CIDR
: 使用する特定の CIDR ブロック(10.0.10.0/27
など)。この変数は、静的 CIDR 構成にのみ適用されます。PARENT_NAME
: この新しいサブネットの作成元となる既存の親サブネットの名前(default-vpc-workload-cidr
など)。PREFIX_LENGTH
: 動的に割り当てられた CIDR の選択されたプレフィックスの長さ(27
など)。この変数は、動的 CIDR 構成にのみ適用されます。
このサブネットが ELB と連携するように構成するには、ELB のリーフ サブネットを作成する必要があります。
ELB のリーフ サブネットを作成する
グローバル親サブネットを設定したら、リーフ サブネットを作成して、グローバル ELB サービスに単一の IP アドレスを割り当てる必要があります。このリーフ サブネットの type
フィールドの値は Leaf
で、ロードバランサ リソース(ForwardingRule
、BackendService
、Backend
など)と同じプロジェクト Namespace に存在する必要があります。
リーフ サブネットを作成して ELB にリンクする手順は次のとおりです。
単一の 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/network-segment: data name: ELB_IP_SUBNET_NAME namespace: PROJECT_NAMESPACE spec: ipv4Request: prefixLength: 32 parentReference: name: PARENT_REF namespace: platform type: Leaf EOF
次のように置き換えます。
ELB_IP_SUBNET_NAME
: 選択したリーフ サブネットの名前(lb-project-elb-ip
など)。PROJECT_NAMESPACE
: ELB オブジェクトが配置されているプロジェクトに対応する Kubernetes Namespace(例:lb-project
)。PARENT_REF
: このリーフ サブネットが IP アドレスを取得する親サブネットの名前(以前に作成した親グローバル サブネットなど)。
割り当てられた IP アドレスを保持する新しく作成したリーフ サブネットを、ELB の
ForwardingRuleExternal
リソースに接続します。ForwardingRuleExternal
リソースで、spec.cidrRef.name
フィールドを更新して、前の手順で作成したリーフ サブネットの名前を参照します。kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ForwardingRuleExternal 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
: 選択したForwardingRuleExternal
オブジェクトの名前(nginx-elb-static-fr
など)。PORT
: ELB が受信トラフィックをリッスンするポート番号(80
など)。PROTOCOL
: ELB が使用するネットワーク プロトコル(TCP
、UDP
など)。BES_NAME
: このForwardingRuleExternal
リソースに関連付けられているBackendService
の名前(nginx-bes
など)。LEAF_SUBNET_NAME
: 前の手順で作成したリーフ サブネットの名前(lb-project-elb-ip
など)。