vm.gowatana.jp

NEOにほんごVMware(仮)

vSphere 7.0 U1 での with Tanzu ラボ環境構築。Part-02 HAProxy デプロイ編

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 でも同様です)

github.com

 

HAProxy のデプロイ

HAProxy は、一般的な仮想アプライアンスと同様、vSphere Client などからデプロイします。

今回は、スーパーバイザー クラスタにする(ワークロード管理を有効化する)クラスタの中に HAProxy の .ova ファイルをデプロイします。クラスタを右クリック →「OVF テンプレートのデプロイ」を開きます。

f:id:gowatana:20201116085027p:plain

 

私のラボ環境だと、URL を直接指定すると失敗しやすいので、vmware-haproxy-v0.1.8.ova ファイルをローカルにダウンロードしたうえで指定しています。

f:id:gowatana:20201116085050p:plain

 

仮想マシン名とデータセンター(またはフォルダ)を指定して「次へ」。

f:id:gowatana:20201116085112p:plain

 

クラスタ(またはリソースプール)を選択して「次へ」。

f:id:gowatana:20201116085127p:plain

 

.ova ファイルの内容確認画面も「次へ」。

f:id:gowatana:20201116085138p:plain

 

使用許諾契約書を読んで、チェックをいれて「次へ」。

f:id:gowatana:20201116085148p:plain

 

ここから、HAProxy ならではのパラメータ指定がはじまります。「デプロイ構成」では、「Default」と、「Frontend Netowrk」(を追加する構成)が選択できます。今回はできるだけシンプルなラボ構成にしたいため、「Default」を選択しています。

f:id:gowatana:20201116085159p:plain

 

今回は NFS データストアに、シン プロビジョニングでデプロイします。容量はシステム要件に対してだいぶ少ない(200GB)ですが、ラボの構築は可能です。ちなみに、すでに消費されている容量は Tanzu Kubernetes Grid のコンテンツ ライブラリによるものです。

f:id:gowatana:20201116085211p:plain

 

「ネットワークの選択」では、事前作成してある分散ポートグループを選択します。

今回は「Default」構成のため、Frontend で選択したポートグループは無視されます。そこで下記のように適当に選択しています。

  • Management: DPortGroup-0010-MGMT
  • Workload: DPortGroup-0021-WL1
  • Frontend: 適当なポートグループ

f:id:gowatana:20201116085223p:plain

 

「テンプレートのカスタマイズ」でパラメータを入力しつつ、下にスクロールしていきます。

  • OS の root ユーザのパスワードを入力します。
  • root ユーザでのログインを許可(Permit Root Login のチェックをオン)しておきます。
  • TLS 証明書のパラメータは、今回はデフォルトのまま空欄にしています。

そして画面を下にスクロールして・・・

f:id:gowatana:20201116085244p:plain

 

下記を入力して、下にスクロールします。

  • ホスト名
  • DNS サーバのアドレス: カンマ区切りで指定する。
  • Management IP: HAProxy のネットワーク アダプタ 1 に設定される。このあと「ワークロード管理」の有効化で、「データプレーン API のアドレス」として指定することになる。
    ※スクリーンショットでは IP アドレスのみ入力していますが、正しくは
    「IP アドレス/サブネット(24 など)」の形式で入力します。
  • Management Gateway: Management IP のデフォルト ゲートウェイ。

f:id:gowatana:20201116085258p:plain

 

ワークロード ネットワークのアドレスを入力して、下にスクロールします。

  • Workload IP: HAProxy のネットワーク アダプタ 2 に設定される。Kubernetes のワークロード(制御プレーンや Pod)が通信するネットワークの IP アドレス。
  • Workload Gateway: ワークロード ネットワークのゲートウェイ

f:id:gowatana:20201116085316p:plain

 

ロードバランサーの設定(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 に応答するようになる)を指定します。

 

パラメータを入力したら、「次へ」をクリックします。

f:id:gowatana:20201116085330p:plain

 

確認画面が表示されるので、「完了」をクリックするとデプロイが開始されます。

 

HAProxy の起動

デプロイ処理が完了したら、パワーオンします。ちなみに「Default」構成のため Frontend として指定したポートグループは無視され、ネットワーク アダプタは 2つのみ作成されています。

f:id:gowatana:20201116085342p:plain

 

VM 起動後は、ゲスト OS で自動的にネットワーク設定や HAProxy の設定は実行されます。そのため少し待っておきます。

f:id:gowatana:20201116085352p:plain

 

HAProxy の CA 証明書の取得

このあとに実施する「ワークロード管理」の有効化で、HAProxy 仮想アプライアンスで自動生成された CA 証明書が必要になります。これは、VM の詳細設定などから取得できます。

方法 A: CA 証明書の取得(VM の詳細設定 から)

起動後の HAProxy VM で、右クリック →「設定の編集」を開きます。

f:id:gowatana:20201116085405p:plain

 

「仮想マシン オプション」タブにある、「詳細」→「詳細設定」を開きます。

f:id:gowatana:20201116085416p:plain

 

「構成パラメータ」画面が開くので、「guestinfo.dataplaneapi.cacert」の長い文字列を記録しておきます。これが、Base64 エンコーディングされた CA 証明書です。

f:id:gowatana:20201116085427p:plain

 

この長い文字列は、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 スクリプトを用意して証明書を取得しています。

gist.github.com

 

下記のような感じで証明書が取得できます。

「-----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-----

 

つづく!