外部ロードバランサ(ELB)は、より大きなインスタンス外部 IP プールからプロジェクトに割り当てられたプールの IP アドレスから、プロジェクト外のサービスを公開します。
ELB 仮想 IP(VIP)アドレスは組織間で競合せず、すべての組織で一意です。そのため、ELB サービスは、プロジェクト外のクライアントがアクセスする必要があるサービスにのみ使用する必要があります。
プロジェクト内で実行されているワークロードは、プロジェクトからワークロードを終了できるようにする限り、ELB サービスにアクセスできます。このトラフィック パターンでは、内部サービスに戻る前に、プロジェクトからの送信トラフィックが事実上必要になります。
始める前に
ELB サービスを構成するには、次のものが必要です。
- ロードバランサを構成するプロジェクトのオーナーである。詳細については、プロジェクトを作成するをご覧ください。
- この ELB サービスへのトラフィックを許可するカスタマイズされた
ProjectNetworkPolicy(PNP)上り(内向き)ポリシー。詳細については、ELB へのトラフィックを許可するように PNP を構成するをご覧ください。 必要な ID とアクセスロール:
- プロジェクト NetworkPolicy 管理者: プロジェクト Namespace のプロジェクト ネットワーク ポリシーを管理する権限があります。組織 IAM 管理者に、プロジェクト NetworkPolicy 管理者(
project-networkpolicy-admin)ロールの付与を依頼してください。 - ロードバランサ管理者: 組織 IAM 管理者にロードバランサ管理者(
load-balancer-admin)ロールの付与を依頼します。
- プロジェクト NetworkPolicy 管理者: プロジェクト Namespace のプロジェクト ネットワーク ポリシーを管理する権限があります。組織 IAM 管理者に、プロジェクト NetworkPolicy 管理者(
ELB へのトラフィックを許可するように PNP を構成する
ELB サービスを機能させるには、独自のカスタマイズされた ProjectNetworkPolicy 上り(内向き)ポリシーを構成して適用し、この ELB サービスへのトラフィックを許可する必要があります。この ELB へのトラフィックを許可する外部 CIDR アドレスを指定します。
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
apiVersion: networking.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT
name: allow-inbound-traffic-from-external
spec:
policyType: Ingress
subject:
subjectType: UserWorkload
ingress:
- from:
- ipBlock:
cidr: CIDR
ports:
- protocol: TCP
port: PORT
EOF
次のように置き換えます。
MANAGEMENT_API_SERVER: Management API サーバーの kubeconfig パス。ターゲット ゾーンの API サーバーの kubeconfig ファイルをまだ生成していない場合は、ログインで詳細を確認してください。PROJECT: GDC プロジェクトの名前。CIDR: ELB にアクセスする必要がある外部 CIDR。このポリシーは、外部ロードバランサが Direct Server Return(DSR)を使用し、送信元外部 IP アドレスを保持して、戻りパスでロードバランサをバイパスするため必要です。PORT: ロードバランサの背後にある Pod のバックエンド ポート。この値は、Serviceリソースのマニフェストの.spec.ports[].targetPortフィールドにあります。
外部ロードバランサを作成する
GDC で 3 つの異なる方法を使用して ELB を作成します。
- gdcloud CLI を使用して ELB を作成します。
- Networking Kubernetes Resource Model(KRM)API を使用して ELB を作成します。
KRM API と gdcloud CLI を使用して、Pod または VM ワークロードをターゲットにできます。Kubernetes クラスタで Kubernetes Service を直接使用する場合は、Service オブジェクトが作成されたクラスタ内のワークロードのみをターゲットにできます。