33.5. 外部ロードバランサーの設定
Red Hat OpenStack Platform (RHOSP) の OpenShift Container Platform クラスターを、デフォルトのロードバランサーの代わりに外部ロードバランサーを使用するように設定できます。
複数のサブネットをサポートする外部ロードバランサーを使用するように OpenShift Container Platform クラスターを設定することもできます。複数のサブネットを使用する場合は、ロードバランサーターゲットが使用するネットワーク内のすべての IP アドレスを明示的にリストできます。この設定では、ロードバランサーターゲットを再設定せずにネットワーク内でノードを作成および破棄できるため、メンテナンスオーバーヘッドを削減できます。
/27 や /28 などの小規模なネットワーク上に設定されたマシンを使用して Ingress Pod をデプロイする場合、ロードバランサーのターゲットを簡素化できます。
インストールプログラムに API および Ingress 静的アドレスを指定する必要はありません。この設定を選択した場合は、追加のアクションを実行して、参照される各 vSphere サブネットから IP アドレスを受け入れるネットワークターゲットを定義する必要があります。
前提条件
- ロードバランサーでは、クラスターの外部にあるシステムのすべてのユーザーがポート 6443、443、および 80 経由の TCP に到達できる必要があります。
- すべてのコンピュートノード間でアプリケーションポート 443 と 80 の負荷を分散します。
- それぞれのコントロールプレーンノード間で API ポート 6443 を負荷分散します。
- ロードバランサーでは、Ignition 起動設定をノードに提供するために使用されるポート 22623 はクラスター外に公開されません。
ロードバランサーは、クラスター内の各ノード上の必要なポートにアクセスできます。次のアクションを実行することで、このレベルのアクセスを確保できます。
- API ロードバランサーは、コントロールプレーンノードのポート 22623 および 6443 にアクセスできます。
- ingress ロードバランサーは、ingress Pod が配置されているノードのポート 443 および 80 にアクセスできます。
手順
ポート 6443、443、および 80 でロードバランサーからクラスターへのアクセスを有効にします。
たとえば、以下の HAProxy 設定に留意してください。
サンプル HAProxy 設定のセクション
... listen my-cluster-api-6443 bind 0.0.0.0:6443 mode tcp balance roundrobin server my-cluster-master-2 192.0.2.2:6443 check server my-cluster-master-0 192.0.2.3:6443 check server my-cluster-master-1 192.0.2.1:6443 check listen my-cluster-apps-443 bind 0.0.0.0:443 mode tcp balance roundrobin server my-cluster-worker-0 192.0.2.6:443 check server my-cluster-worker-1 192.0.2.5:443 check server my-cluster-worker-2 192.0.2.4:443 check listen my-cluster-apps-80 bind 0.0.0.0:80 mode tcp balance roundrobin server my-cluster-worker-0 192.0.2.7:80 check server my-cluster-worker-1 192.0.2.9:80 check server my-cluster-worker-2 192.0.2.8:80 checkロードバランサーでクラスター API およびアプリケーションの DNS サーバーにレコードを追加します。以下に例を示します。
<load_balancer_ip_address> api.<cluster_name>.<base_domain> <load_balancer_ip_address> apps.<cluster_name>.<base_domain>
コマンドラインで
curlを使用して、外部ロードバランサーおよび DNS 設定が機能することを確認します。クラスター API がアクセス可能であることを確認します。
$ curl https://<loadbalancer_ip_address>:6443/version --insecure
設定が正しい場合は、応答として JSON オブジェクトを受信します。
{ "major": "1", "minor": "11+", "gitVersion": "v1.11.0+ad103ed", "gitCommit": "ad103ed", "gitTreeState": "clean", "buildDate": "2019-01-09T06:44:10Z", "goVersion": "go1.10.3", "compiler": "gc", "platform": "linux/amd64" }クラスターアプリケーションがアクセス可能であることを確認します。
注記Web ブラウザーで OpenShift Container Platform コンソールを開き、アプリケーションのアクセスを確認することもできます。
$ curl http://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
設定が正しい場合は、HTTP 応答を受信します。
HTTP/1.1 302 Found content-length: 0 location: https://console-openshift-console.apps.<cluster-name>.<base domain>/ cache-control: no-cacheHTTP/1.1 200 OK referrer-policy: strict-origin-when-cross-origin set-cookie: csrf-token=39HoZgztDnzjJkq/JuLJMeoKNXlfiVv2YgZc09c3TBOBU4NI6kDXaJH1LdicNhN1UsQWzon4Dor9GWGfopaTEQ==; Path=/; Secure x-content-type-options: nosniff x-dns-prefetch-control: off x-frame-options: DENY x-xss-protection: 1; mode=block date: Tue, 17 Nov 2020 08:42:10 GMT content-type: text/html; charset=utf-8 set-cookie: 1e2670d92730b515ce3a1bb65da45062=9b714eb87e93cf34853e87a92d6894be; path=/; HttpOnly; Secure; SameSite=None cache-control: private