vSphere with Tanzu にて、NSX-T なしでの Tanzu Kubernetes クラスタのラボを構築していきます。今回は、NSX-T によるロードバランサーの代わりとなる、HAProxy 仮想アプライアンスをデプロイします。
前回はこちら。
今回の内容です。
HAProxy 仮想アプライアンスについて
HAProxy の仮想アプライアンス(.ova ファイル)のダウンロードサイトは、KB などでも案内されていますが、MyVMware ではありません。HAProxy Technologies の GitHub ページからダウンロードできます。
Where to find HA Proxy OVA Image and Configuration Requirements for vSphere with Tanzu (80735)
https://kb.vmware.com/s/article/80735
この投稿では、下記のサイトから vmware-haproxy-v0.1.8.ova ファイルをダウンロードして使用しています。(v0.1.10 でも同様です)
HAProxy のデプロイ
HAProxy は、一般的な仮想アプライアンスと同様、vSphere Client などからデプロイします。
今回は、スーパーバイザー クラスタにする(ワークロード管理を有効化する)クラスタの中に HAProxy の .ova ファイルをデプロイします。クラスタを右クリック →「OVF テンプレートのデプロイ」を開きます。
私のラボ環境だと、URL を直接指定すると失敗しやすいので、vmware-haproxy-v0.1.8.ova ファイルをローカルにダウンロードしたうえで指定しています。
仮想マシン名とデータセンター(またはフォルダ)を指定して「次へ」。
クラスタ(またはリソースプール)を選択して「次へ」。
.ova ファイルの内容確認画面も「次へ」。
使用許諾契約書を読んで、チェックをいれて「次へ」。
ここから、HAProxy ならではのパラメータ指定がはじまります。「デプロイ構成」では、「Default」と、「Frontend Netowrk」(を追加する構成)が選択できます。今回はできるだけシンプルなラボ構成にしたいため、「Default」を選択しています。
今回は NFS データストアに、シン プロビジョニングでデプロイします。容量はシステム要件に対してだいぶ少ない(200GB)ですが、ラボの構築は可能です。ちなみに、すでに消費されている容量は Tanzu Kubernetes Grid のコンテンツ ライブラリによるものです。
「ネットワークの選択」では、事前作成してある分散ポートグループを選択します。
今回は「Default」構成のため、Frontend で選択したポートグループは無視されます。そこで下記のように適当に選択しています。
- Management: DPortGroup-0010-MGMT
- Workload: DPortGroup-0021-WL1
- Frontend: 適当なポートグループ
「テンプレートのカスタマイズ」でパラメータを入力しつつ、下にスクロールしていきます。
- OS の root ユーザのパスワードを入力します。
- root ユーザでのログインを許可(Permit Root Login のチェックをオン)しておきます。
- TLS 証明書のパラメータは、今回はデフォルトのまま空欄にしています。
そして画面を下にスクロールして・・・
下記を入力して、下にスクロールします。
- ホスト名
- DNS サーバのアドレス: カンマ区切りで指定する。
- Management IP: HAProxy のネットワーク アダプタ 1 に設定される。このあと「ワークロード管理」の有効化で、「データプレーン API のアドレス」として指定することになる。
※スクリーンショットでは IP アドレスのみ入力していますが、正しくは
「IP アドレス/サブネット(24 など)」の形式で入力します。 - Management Gateway: Management IP のデフォルト ゲートウェイ。
ワークロード ネットワークのアドレスを入力して、下にスクロールします。
- Workload IP: HAProxy のネットワーク アダプタ 2 に設定される。Kubernetes のワークロード(制御プレーンや Pod)が通信するネットワークの IP アドレス。
- Workload Gateway: ワークロード ネットワークのゲートウェイ
ロードバランサーの設定(Load Balancing)のパラメータを入力します。今回は次のように入力しています。
- Load Balancer IP Range: 192.168.21.128/25
- Dataplane API Management Port: デフォルトのまま 5556。
- HAProxy User ID: admin
- HAProxy Password: HAProxy User ID で入力したユーザのパスワードを指定。
パラメータの補足: Load Balancer IP Range
これは、Kubernetes の Load Balancer(Service リソース)による VIP として払い出す、IP アドレスの範囲を指定します。そして、後続の「ワークロード管理」有効化のウィザードでも、このレンジに合わせたアドレス入力があります。
ここで指定したレンジの IP アドレスは、実際に VIP を払い出してなくても HAProxy が応答するようになってしまうので、他で利用している IP アドレスとは重ならないように指定します。
今回はワークロード ネットワークとして 192.168.21.0/24 を用意しているので、このレンジでは 192.168.21.128/25(192.168.21.128 ~ .254 に応答するようになる)を指定します。
パラメータを入力したら、「次へ」をクリックします。
確認画面が表示されるので、「完了」をクリックするとデプロイが開始されます。
HAProxy の起動
デプロイ処理が完了したら、パワーオンします。ちなみに「Default」構成のため Frontend として指定したポートグループは無視され、ネットワーク アダプタは 2つのみ作成されています。
VM 起動後は、ゲスト OS で自動的にネットワーク設定や HAProxy の設定は実行されます。そのため少し待っておきます。
HAProxy の CA 証明書の取得
このあとに実施する「ワークロード管理」の有効化で、HAProxy 仮想アプライアンスで自動生成された CA 証明書が必要になります。これは、VM の詳細設定などから取得できます。
方法 A: CA 証明書の取得(VM の詳細設定 から)
起動後の HAProxy VM で、右クリック →「設定の編集」を開きます。
「仮想マシン オプション」タブにある、「詳細」→「詳細設定」を開きます。
「構成パラメータ」画面が開くので、「guestinfo.dataplaneapi.cacert」の長い文字列を記録しておきます。これが、Base64 エンコーディングされた CA 証明書です。
この長い文字列は、Linux であれば下記のように base64 -d コマンドで証明書にデコードできます。
$ echo "長い文字列" | base64 -d
Windows の PowerShell では、下記のようにデコードできます。
PS> $Base64cert = "長い文字列" PS> [Text.Encoding]::Utf8.GetString([Convert]::FromBase64String($Base64cert))
ちなみに個人的には、vSphere with Tanzu Quick Start Guide V1a | VMware を参考にして下記のような PowerShell / PowerCLI スクリプトを用意して証明書を取得しています。
下記のような感じで証明書が取得できます。
「-----BEGIN CERTIFICATE-----」 ~ 「-----END CERTIFICATE-----」の文字列を、そのままこの後で入力することになります。
PS> Connect-VIServer lab-vc-04.go-lab.jp -Force PS> .\get_haproxy_vm_cacert.ps1 lab-haproxy-41 -----BEGIN CERTIFICATE----- MIIDoTCCAomgAwIBAgIJAL1hdYJhEykrMA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNV BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlQYWxvIEFsdG8x ・・・ awIo/nyGgU48YiylWNyJKtjO7rJ01TLEoq6KSAzPw1Y/MMunJCeCAZqoS9X/2pUL nF4DBb08fK97UpSBSaaHzugJEAIeiTXmGot4ScPegKJzOzM9zKzfjBu84b0FYoxM S8HtOipnxBTPS3iGgCQ05OKP9pAqi7l1lliiHMS7VNJvzxYhtycY9O7Gu3qA6PKm TQt7IUDi3+cr8RFuFY2TJ+3zRqTf -----END CERTIFICATE-----
方法 B: CA 証明書の取得(HAProxy VM への SSH)
HAProxy に SSH 接続して、そこからのダウンロードや コピー&ペーストでも取得できます。手作業でセットアップする場合は、こちらの方が簡単かもしれません。
CA 証明書のファイルは /etc/haproxy/ca.crt です。
root@lab-haproxy-41 [ ~ ]# cat /etc/haproxy/ca.crt -----BEGIN CERTIFICATE----- MIIDoTCCAomgAwIBAgIJAL1hdYJhEykrMA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNV BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlQYWxvIEFsdG8x ・・・ awIo/nyGgU48YiylWNyJKtjO7rJ01TLEoq6KSAzPw1Y/MMunJCeCAZqoS9X/2pUL nF4DBb08fK97UpSBSaaHzugJEAIeiTXmGot4ScPegKJzOzM9zKzfjBu84b0FYoxM S8HtOipnxBTPS3iGgCQ05OKP9pAqi7l1lliiHMS7VNJvzxYhtycY9O7Gu3qA6PKm TQt7IUDi3+cr8RFuFY2TJ+3zRqTf -----END CERTIFICATE-----
つづく!