vSphere with Tanzu と Distributed Switch ネットワークを併用している場合、HAProxy は、Tanzu Kubernetes 制御プレーンにアクセスする開発者と、ロード バランサ タイプの Kubernetes サービスに対応したロード バランシングを提供します。HAProxy ロード バランサに実装可能なトポロジを確認してください。

スーパーバイザー クラスタ のワークロード ネットワーク

vSphere ネットワーク スタックを使用した スーパーバイザー クラスタ を構成するには、クラスタ内のすべてのホストを vSphere Distributed Switch に接続する必要があります。スーパーバイザー クラスタ ワークロード ネットワーク用に実装するトポロジに応じて、1 つ以上の分散ポート グループを作成します。作成したポート グループを、ワークロード ネットワークとして、vSphere 名前空間 に指定します。

ホストを スーパーバイザー クラスタ に追加する前に、クラスタに含まれるすべての vSphere Distributed Switch にホストを追加する必要があります。

ワークロード ネットワークは、 Tanzu Kubernetes クラスタのノードと、 スーパーバイザー クラスタ 制御プレーン仮想マシンへの接続を提供します。Kubernetes 制御プレーン仮想マシンに接続を提供するワークロード ネットワークは、プライマリ ワークロード ネットワークと呼ばれます。各 スーパーバイザー クラスタ にそれぞれ 1 つのプライマリ ワークロード ネットワークが必要です。 スーパーバイザー クラスタ に対して、分散ポート グループの 1 つをプライマリ ワークロード ネットワークとして指定する必要があります。
注: ワークロード ネットワークが追加されるのは スーパーバイザー クラスタ を有効にするときだけで、後で追加することはできません。

スーパーバイザー クラスタ 上の Kubernetes 制御プレーン仮想マシンは、プライマリ ワークロード ネットワークに割り当てられた IP アドレス範囲から 3 つの IP アドレスを使用します。Tanzu Kubernetes クラスタの各ノードには、この Tanzu Kubernetes クラスタが実行されている名前空間で構成されたワークロード ネットワークのアドレス範囲から割り当てられた、それぞれ別の IP アドレスが割り当てられます。

IP アドレス範囲の割り当て

HA プロキシ ロード バランサを使用する スーパーバイザー クラスタ のネットワーク トポロジを計画するときは、次の 2 種類の IP アドレス範囲を設定するように計画します。
  • HAProxy に対する仮想 IP アドレスの割り当ての範囲。HAProxy の仮想サーバ用に構成した IP アドレス範囲は、ロード バランサ アプライアンスによって予約されます。たとえば、仮想 IP アドレス範囲が 192.168.1.0/24 の場合、この範囲に含まれるすべてのホストは、仮想 IP トラフィック以外のトラフィックではアクセスできません。
    注: HAProxy 仮想 IP アドレス範囲内にゲートウェイを構成するとゲートウェイへのすべてのルートが失敗するため、構成しないようにします。
  • スーパーバイザー クラスタ および Tanzu Kubernetes クラスタのノードの IP アドレス範囲。スーパーバイザー クラスタ 内の Kubernetes 制御プレーン仮想マシンにはそれぞれ IP アドレスが割り当てられていて、合計で 3 つの IP アドレスがあります。Tanzu Kubernetes クラスタの各ノードには、別の IP アドレスが割り当てられます。名前空間に構成する スーパーバイザー クラスタ の各ワークロード ネットワークに、一意の IP アドレス範囲を割り当てる必要があります。

1 つの /24 ネットワークによる構成の例:

  • ネットワーク:192.168.120.0/24
  • HAProxy 仮想 IP アドレス:192.168.120.128/25
  • HAProxy ワークロード インターフェイスの 1 つの IP アドレス:192.168.120.5

最初の 128 アドレスに含まれる制限のない IP アドレスに応じて、スーパーバイザー クラスタ のワークロード ネットワークの IP アドレス範囲を定義できます。たとえば、次のようにします。

  • 192.168.120.31 ~ 192.168.120.40:プライマリ ワークロード ネットワーク
  • 192.168.120.51 ~ 192.168.120.60:別のワークロード ネットワーク
注: ワークロード ネットワークに定義する範囲は、HAProxy 仮想 IP アドレスの範囲と重複しないようにする必要があります。

HAProxy ネットワーク トポロジ

ネットワーク構成には、[デフォルト][フロントエンド] という、HAProxy をデプロイする 2 つのオプションがあります。デフォルト ネットワークには、管理ネットワーク用とワークロード ネットワーク用の 2 つの NIC があります。フロントエンド ネットワークには、管理ネットワーク、ワークロード ネットワーク、クライアント用のフロントエンド ネットワークの 3 つの NIC があります。次の表に、各ネットワークの特性の一覧と説明を示します。

本番環境インストールでは、 [フロントエンド ネットワーク] 構成を使用して HAProxy ロード バランサをデプロイすることが推奨されます。 [デフォルト] 構成を使用して HAProxy ロード バランサをデプロイする場合は、ワークロード ネットワークに /24 の IP アドレス ブロック サイズを割り当てることをお勧めします。いずれの構成オプションでも、DHCP は推奨されません。
ネットワーク 特性
[管理]
スーパーバイザー クラスタは管理ネットワークを使用して HAProxy ロード バランサに接続し、このバランサをプログラムします。
  • HAProxy データ プレーン API エンドポイントは、管理ネットワークに接続されているネットワーク インターフェイスにバインドされています。
  • スーパーバイザー クラスタがロード バランサ API に確実に接続できるようにするには、HAProxy 制御プレーン仮想マシンに割り当てられた管理 IP アドレスに、管理ネットワーク上の固定 IP アドレスを指定する必要があります。
  • HAProxy 仮想マシンのデフォルト ゲートウェイは、このネットワーク上に存在する必要があります。
  • DNS クエリはこのネットワーク上で実行する必要があります。
[ワークロード]
HAProxy 制御プレーン仮想マシンは、ワークロード ネットワークを使用して、スーパーバイザー クラスタおよび Tanzu Kubernetes クラスタ ノードのサービスにアクセスします。
  • HAProxy 制御プレーン仮想マシンは、このネットワーク上のスーパーバイザーおよび Tanzu Kubernetes クラスタ ノードにトラフィックを転送します。
  • HAProxy 制御プレーン仮想マシンがデフォルト モード(2 つの NIC)でデプロイされている場合、ロード バランサ サービスへのアクセスに使用される論理ネットワークはワークロード ネットワークが提供する必要があります。
  • [デフォルト] 構成では、ロードバランサの仮想 IP アドレスと Kubernetes クラスタ ノードの IP アドレスはこのネットワークから取得されます。これらのアドレスは、ネットワーク内の、重複しない、独立した範囲として定義されます。
注: ワークロード ネットワークは、管理ネットワークとは別のサブネットに配置してください。 システム要件を参照してください。
[フロントエンド ](オプション)

クラスタ ワークロードにアクセスする外部クライアント(ユーザーやアプリケーションなど)は、フロントエンド ネットワークを使用して、仮想 IP アドレスによってバックエンド ロード バランシング サービスにアクセスします。

  • フロントエンド ネットワークが使用されるのは、HAProxy 制御プレーン仮想マシンが 3 つの NIC を使用してデプロイされている場合のみです。
  • 本番環境インストールに推奨されます。
  • フロントエンド ネットワークで、仮想 IP アドレス (VIP) が公開されます。HAProxy は、トラフィックのバランスを調整し、トラフィックを適切なバックエンドに転送します。

次の図に、[フロントエンド ネットワーク] トポロジを使用した HAProxy デプロイを示します。この図は、インストールおよび構成プロセスで想定される構成フィールドの場所を示しています。

1 つのワークロード ネットワークを使用する スーパーバイザー クラスタ トポロジと 2 つの仮想 NIC を使用する HA プロキシ

このトポロジでは、次のコンポーネントに対する 1 つのワークロード ネットワークを持つ スーパーバイザー クラスタ を構成します。

  • Kubernetes 制御プレーンの仮想マシン
  • Tanzu Kubernetes クラスタのノード。
  • 外部サービスと DevOps ユーザーが接続する HAProxy の仮想 IP アドレス範囲。この構成では、2 つの仮想 NIC を使用する HAProxy がデプロイされます([デフォルト] 構成)。1 つは管理ネットワークに接続され、もう 1 つはプライマリ ワークロード ネットワークに接続されます。仮想 IP アドレスは、プライマリ ワークロード ネットワークとは別のサブネットに割り当てる必要があります。
スーパーバイザー クラスタ に対して 1 つのポート グループをプライマリ ワークロード ネットワークとして指定してから、同じポート グループを vSphere 名前空間 のワークロード ネットワークとして使用します。 スーパーバイザー クラスタTanzu Kubernetes クラスタ、HAProxy、DevOps ユーザー、および外部サービスはすべて、プライマリ ワークロード ネットワークとして設定されている同じ分散ポート グループに接続されます。
図 1. 1 つのネットワークによってバッキングされる スーパーバイザー クラスタ

1 つのネットワークによってバッキングされるスーパーバイザー クラスタ
DevOps ユーザーまたは外部アプリケーションのトラフィック パスは次のとおりです。
  1. DevOps ユーザーまたは外部サービスは、分散ポート グループのワークロード ネットワーク サブネット上の仮想 IP アドレスにトラフィックを送信します。
  2. HAProxy は、仮想 IP トラフィックを Tanzu Kubernetes ノードの IP アドレス、または制御プレーン仮想マシンの IP アドレスのいずれかにロード バランシングします。HAProxy は、仮想 IP アドレスを要求して、その IP アドレスで受信されるトラフィックのロード バランシングを行うことができるようにします。
  3. 制御プレーン仮想マシンまたは Tanzu Kubernetes クラスタ ノードは、スーパーバイザー クラスタ または Tanzu Kubernetes クラスタ内でそれぞれ実行されているターゲット ポッドにトラフィックを配信します。

隔離されたワークロード ネットワークを使用する スーパーバイザー クラスタ トポロジと 2 つの仮想 NIC を使用する HA プロキシ

このトポロジでは、次のコンポーネントに対するネットワークを構成します。
  • Kubernetes 制御プレーン仮想マシン。Kubernetes 制御プレーン仮想マシンのトラフィックを処理するプライマリ ワークロード ネットワーク。
  • Tanzu Kubernetes クラスタ ノード。ワークロード ネットワーク。これは、スーパーバイザー クラスタ 上のすべての名前空間に割り当てられます。このネットワークは Tanzu Kubernetes クラスタ ノードに接続します。
  • HAProxy の仮想 IP アドレス。この構成では、2 つの仮想 NIC を使用する HAProxy 仮想マシンがデプロイされます([デフォルト] 構成)。HAProxy 仮想マシンは、プライマリ ワークロード ネットワークか、名前空間に使用するワークロード ネットワークのいずれかに接続できます。また、HAProxy は、vSphere に既存の、プライマリ ネットワークおよびワークロード ネットワークにルーティング可能な仮想マシン ネットワークに接続することもできます。
スーパーバイザー クラスタ は、プライマリ ワークロード ネットワークをバッキングする分散ポート グループに接続され、 Tanzu Kubernetes クラスタは、ワークロード ネットワークをバッキングする分散ポート グループに接続されます。2 つのポート グループは、レイヤー 3 でルーティング可能である必要があります。VLAN を使用してレイヤー 2 の隔離を実装できます。レイヤー 3 トラフィックのフィルタリングは、IP ファイアウォールとゲートウェイを介して実現できます。
図 2. 隔離されたワークロード ネットワークを使用する スーパーバイザー クラスタ

隔離されたワークロード ネットワークを使用するスーパーバイザー クラスタ
DevOps ユーザーまたは外部サービスのトラフィック パスは次のとおりです。
  1. DevOps ユーザーまたは外部サービスは、仮想 IP アドレスにトラフィックを送信します。トラフィックは、HAProxy が接続されているネットワークにルーティングされます。
  2. HAProxy は、仮想 IP トラフィックを Tanzu Kubernetes ノードの IP アドレス、または制御プレーン仮想マシンのいずれかにロード バランシングします。HAProxy は、仮想 IP アドレスを要求して、その IP アドレスで受信されるトラフィックのロードバランシングを行うことができるようにします。
  3. 制御プレーン仮想マシンまたは Tanzu Kubernetes クラスタ ノードは、Tanzu Kubernetes クラスタ内で実行されているターゲット ポッドにトラフィックを配信します。

複数のワークロード ネットワークを使用する スーパーバイザー クラスタ トポロジと 2 つの仮想 NIC を使用する HA プロキシ

このトポロジでは、1 つのポート グループがプライマリ ワークロード ネットワークとして動作するように、また、1 つの専用ポート グループが各名前空間に対するワークロード ネットワークとして機能するように構成できます。HAProxy は 2 つの仮想 NIC とともにデプロイされ([デフォルト] 構成)、プライマリ ワークロード ネットワークか、いずれかのワークロード ネットワークに接続することができます。プライマリおよびワークロード ネットワークにルーティング可能な、既存の仮想マシン ネットワークを使用することもできます。

このトポロジの DevOps ユーザーと外部サービスのトラフィック パスは、隔離されたワークロード ネットワーク トポロジの場合と同じです。
図 3. 複数の隔離されたワークロード ネットワークによってバッキングされる スーパーバイザー クラスタ

複数の隔離されたワークロード ネットワークによってバッキングされるスーパーバイザー クラスタ

複数のワークロード ネットワークを使用する スーパーバイザー クラスタ トポロジと 3 つの仮想 NIC を使用する HA プロキシ

この構成では、3 つの仮想 NIC を使用する HAProxy 仮想マシンをデプロイします。これにより、HAProxy がフロントエンド ネットワークに接続されます。DevOps ユーザーと外部サービスは、フロントエンド ネットワーク上の仮想 IP アドレスを介して HAProxy にアクセスできます。本番環境では、3 つの仮想 NIC を使用する HA プロキシをデプロイすることを推奨します。
図 4. 3 つの仮想 NIC を使用する HAProxy をデプロイ

3 つの仮想 NIC を使用する HAProxy をデプロイ

使用できるトポロジからの選択

使用できるトポロジから選択する前に、次のように環境のニーズを検討します。

  1. スーパーバイザー クラスタTanzu Kubernetes クラスタの間でレイヤー 2 の隔離が必要ですか。
    1. いいえ:すべてのコンポーネントで使用される 1 つのワークロード ネットワークを持つ最もシンプルなトポロジ。
    2. はい:分離されたプライマリ ネットワークとワークロード ネットワークを持つ、隔離ワークロード ネットワーク トポロジ。
  2. Tanzu Kubernetes クラスタの間でさらにレイヤー 2 の隔離が必要ですか。
    1. いいえ:分離されたプライマリ ネットワークとワークロード ネットワークを持つ、隔離ワークロード ネットワーク トポロジ。
    2. はい:名前空間ごとに分離されたワークロード ネットワークと専用のプライマリ ワークロード ネットワークを持つ、複数のワークロード ネットワーク トポロジ。
  3. DevOps ユーザーと外部サービスが Kubernetes 制御プレーン仮想マシンと Tanzu Kubernetes クラスタ ノードに直接ルーティングされないようにする必要がありますか?
    1. いいえ:2 つの NIC を使用する HAProxy 構成。
    2. はい:3 つの NIC を使用する HAProxy 構成。この構成は、本番環境に推奨されます。