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

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

vSphere with Tanzu にて、NSX-T なしでの Tanzu Kubernetes クラスタのラボを構築していきます。

今回は、NSX-T によるロードバランサーの代わりとなる、HAProxy 仮想アプライアンスをデプロイします。

前回はこちら。

vSphere 7.0 U1 での with Tanzu ラボ環境構築。Part-01 事前準備編

HAProxy 仮想アプライアンスについて。

HAProxy の仮想アプライアンス(.ova ファイル)のダウンロードサイトは、

KB などでも案内されていますが、MyVMware ではありません。

Where to find HA Proxy OVA Image and Configuration Requirements for vSphere with Tanzu (80735)

https://kb.vmware.com/s/article/80735

HAProxy Technologies の GitHub ページからダウンロードできます。

今回は、vmware-haproxy-v0.1.8.ova ファイルをダウンロードして使用しています。

GitHub - haproxytech/vmware-haproxy

HAProxy のデプロイ。

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

今回は、スーパーバイザー クラスタにする(ワークロード管理を有効化する)クラスタの中に

HAProxy の .ova ファイルをデプロイします。

クラスタを右クリック →「OVF テンプレートのデプロイ」を開きます。

tanzu-basic-02-00.png

私のラボ環境だと、URL を直接指定すると失敗しやすいので、

vmware-haproxy-v0.1.8.ova ファイルをローカルにダウンロードしたうえで指定しています。

tanzu-basic-02-01.png

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

tanzu-basic-02-02.png

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

tanzu-basic-02-03.png

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

tanzu-basic-02-04.png

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

tanzu-basic-02-05.png

ここから、HAProxy ならではのパラメータ指定がはじまります。

「デプロイ構成」では、「Default」と、「Frontend Netowrk」(を追加する構成)が選択できます。

今回はできるだけシンプルなラボ構成にしたいため、「Default」を選択しています。

tanzu-basic-02-06.png

今回は NFS データストアに、シン プロビジョニングでデプロイします。

容量はシステム要件に対してだいぶ少ない(200GB)ですが、ラボの構築は可能です。

ちなみに、すでに消費されている容量は Tanzu Kubernetes Grid のコンテンツ ライブラリによるものです。

tanzu-basic-02-07.png

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

今回は「Default」構成のため、Frontend で選択したポートグループは無視されます。

そこで下記のように適当に選択しています。

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

tanzu-basic-02-08.png

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

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

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

tanzu-basic-02-09.png

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

  • ホスト名
  • DNS サーバのアドレス(カンマ区切り)
  • Management IP
    • HAProxy のネットワーク アダプタ 1 に設定される。
    • このあと「ワークロード管理」の有効化で、「データプレーン API のアドレス」として指定することになる。
  • Management Gateway
    • Management IP のデフォルト ゲートウェイ。

tanzu-basic-02-10.png

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

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

tanzu-basic-02-11.png

ロードバランサーの設定(Load Balancing)のパラメータを入力します。

  • Load Balancer IP Range
    • Kubernetes の Load Balancer リソースによる VIP に払い出す IP アドレスのレンジを指定します。
    • あとで「ワークロード管理」の有効化でも、このレンジに合わせたアドレス入力があります。
    • このレンジの IP アドレスは、実際に VIP を払い出してなくても HAProxy が応答するようになってしまうので、
      他で利用している IP アドレスとは重ならないように指定します。
    • 今回はワークロード ネットワークとして 192.168.21.0/24 を用意しているので、
      このレンジでは 192.168.21.128/25(192.168.21.128 ~ .254 に応答するようになる)を指定します。
  • Dataplane API Management Port
    • デフォルトのまま 5556。
  • HAProxy User ID
    • デフォルトだと空欄なので、今回は「admin」。
  • HAProxy Password
    • HAProxy User ID で入力したユーザの、パスワードを指定(2回入力)

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

tanzu-basic-02-12.png

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

HAProxy の起動。

デプロイ処理が完了したら、パワーオンします。

ちなみに「Default」構成のため Frontend として指定したポートグループは無視され、

ネットワーク アダプタは 2つのみ作成されています。

tanzu-basic-02-17.png

VM 起動後は、ゲスト OS で自動的にネットワーク設定や HAProxy の設定は実行されます。

そのため少し待っておきます。

tanzu-basic-02-18.png

CA 証明書の取得。

このあとに実施する「ワークロード管理」の有効化で、

HAProxy 仮想アプライアンスで自動生成された CA 証明書が必要になります。

これは、VM の詳細設定から取得できます。

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

tanzu-basic-02-19.png

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

tanzu-basic-02-20.png

「構成パラメータ」画面が開くので、「guestinfo.dataplaneapi.cacert」の長い文字列を記録しておきます。

これが、Base64 エンコーディングされた CA 証明書です。

tanzu-basic-02-21.png

この長い文字列は、Linux であれば下記のように base64 -d コマンドで証明書にデコードできます。

$ echo "長い文字列" | base64 -d

Windows の PowerShell では、下記のようにデコードできます。

PS> $Base64cert = "長い文字列"

PS> [Text.Encoding]::Utf8.GetString([Convert]::FromBase64String($Base64cert.Value))

ちなみに、個人的には、vSphere with Tanzu Quick Start Guide | VMware を参考にして

下記のような PowerShell / PowerCLI スクリプトを用意して証明書を取得しています。

get_haproxy_vm_cacert.ps1 · GitHub

$VMname = $args[0]

$AdvancedSettingName = "guestinfo.dataplaneapi.cacert"

$Base64cert = Get-VM $VMname | Get-AdvancedSetting -Name $AdvancedSettingName

$cert = [Text.Encoding]::Utf8.GetString([Convert]::FromBase64String($Base64cert.Value))

$cert

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

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

つづく!

vSphere 7.0 U1 での with Tanzu ラボ環境構築。Part-03 ワークロード管理 有効化編

Version history
Revision #:
1 of 1
Last update:
‎10-27-2020 07:29 AM
Updated by: