外部ロードバランサを構成する

外部ロードバランサ(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)ロールの付与を依頼します。

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 を作成します。

KRM API と gdcloud CLI を使用して、Pod または VM ワークロードをターゲットにできます。Kubernetes クラスタで Kubernetes Service を直接使用する場合は、Service オブジェクトが作成されたクラスタ内のワークロードのみをターゲットにできます。