NUCで始めるVMware Tanzu - vSphere with Tanzuの利用準備

はい、こんにちわ。
実は、今日からvSphere with TanzuでTKCのデプロイ！という訳にはいきません。。:sweat:
[スーパーバイザクラスタを設定するためのシステム要件](https://docs.vmware.com/jp/VMware-vSphere/7.0/vmware-vsphere-with-tanzu/GUID-C3048E95-6E9D-4AC3-BE96-44446D288A7D.html)を元に、環境を準備していく必要があります。ただ、こちらのドキュメントよりも[vSphere with Tanzu Quick Start Guide(英語)](https://core.vmware.com/resource/vsphere-tanzu-quick-start-guide-v1a#_Toc53677531)の方が自分には分かりやすかったので、こちらをベースに紹介していきます。

# IPアドレス設計
![overview](https://core.vmware.com/sites/default/files/imported-images/node_2543/vSphere-with-Tanzu-Quick-Start-Guide-7-Update-1---Core-style/vSphere-with-Tanzu-Quick-Start-Guide-7-Update-1---Core-style.001.png)
上記のトポロジー図が分かりやすかったです。要約すると、2つの別々のルーティング可能なサブネットが必要で、今までの <font color="Green">Management Network</font>（緑色の線）に加え、新たに <font color="Red">Workload Network</font>（赤色の線）が必要なようです(VLANによるネットワーク分離を強く推奨)。さらに、今回作成する LB(HAProxy) とSupervisor Cluster は、両方のネットワークに足を持つ必要があります。

###Management Network
以下の11IPsが必要でした。そのうちvCenterとESXiは割り当て済みですね。

- Supervisor Cluster : 5 IPs (連続している必要あり)
- Load Balancer (HAProxy) : 1 IP
- vCenter : 1 IP
- ESXi x ホスト数 : 4 IPs (私の環境は4ホスト構成のため)

私は、以下の構成で、進めてみることにしました。

| リソース名 | IP情報 | 備考 |
|:--|:--|:--|
| Management Network | 192.168.5.0/24 | DSwitch-Management Network |
| GW | 192.168.5.1 | |
| DNSサーバ | 192.168.5.1 | ルータさんにおまかせ |
| vCenter | 192.168.5.201 | |
| ESXi (nested) | 192.168.5.21-24 | |
| HAProxy (これから作成) | 192.168.5.45 | |
| Supervisor Cluster (これから作成) | 192.168.5.211-215 | |
| (参考)DHCPレンジ | 192.168.5.101-200 | ルータさんにおまかせ |
| (参考)踏み台サーバ | 192.168.5.42 |

###Workload Network
こちらのサブネットでは、ネットワーク内に2つのIPレンジが必要です。

- Cluster Node Range（または、Load Balancer IP Rangesとしてセットアップ中に登場する）
    - Supervisor Cluster : 3IPs
    - TKC Controller : ControlPlaneノードVM毎に、1 IP
    - TKC Worker : WorkerノードVM毎に、1 IP
    - Load Balancer (HAProxy) : Kubernetes LBサービス毎に、1 IP
- Virtual IP Range（または、IP Address Ranges for Virtual Servers）
    - Virtual IPs

このVirtual IPレンジとは、K8sの「Service Type:LoadBalancer」リソース作成時に払い出されるVIPのことです。
<font color="Red">(2020年12月21日追記)</font>
新しく「DPortGroup-workload」を作り、[Quick Start Guide](https://core.vmware.com/resource/vsphere-tanzu-quick-start-guide-v1a#_Toc53677551)に近い構成で作成してみました。
(最初/16とかで作成してみたけど、上手くいかなかったので作り直した。。)

| リソース名 | IP情報 | 備考 |
|:--|:--|:--|
| Workload Network | 172.18.0.0/24 | DPortGroup-workload |
| GW | 172.18.0.1 | |
| HAProxy (これから作成) | 172.18.0.45 | 第4オクテット合わせてみた |
| Cluster Node Range<br>(ここにSupervisor Clusterと<br>TKCのVMが載っかってくる)| 172.18.0.129-191 | |
| Virtual IP Range | 172.18.0.208/28 | |

# ストレージポリシーの割り当て
[Storage Policies vCenter UI Example](https://core.vmware.com/resource/vsphere-tanzu-quick-start-guide-v1a#_Toc53677546)を参考に、カスタム属性とタグを割り当てていきます。
datastoreを選択した状態で「タグの割り当て」→「タグの追加」と進み、「k8s-storage」という名前にしてみました。
<img width="1130" alt="スクリーンショット 2020-12-18 1 58 58" src="https://user-images.githubusercontent.com/3906298/102519030-5567a680-40d5-11eb-9d16-d123e0a0bbfe.png">
このまま作成せず、「新しいカテゴリの作成」に進み、「k8s-tag-category」と名前を付け、「作成」。
<img width="944" alt="スクリーンショット 2020-12-18 2 06 59" src="https://user-images.githubusercontent.com/3906298/102519378-bf804b80-40d5-11eb-99de-e6ceb89902af.png">
今作成したカテゴリに選択し直して、タグを「作成」。その後、「割り当て」を行えば、OKです。
<img width="613" alt="スクリーンショット 2020-12-18 2 09 00" src="https://user-images.githubusercontent.com/3906298/102519600-0c642200-40d6-11eb-9834-98893e7121fe.png">
続いて、「ポリシーおよびプロファイル」画面に移動し、「仮想マシンストレージポリシー」を選び、「作成」。
<img width="723" alt="スクリーンショット 2020-12-18 2 13 30" src="https://user-images.githubusercontent.com/3906298/102520186-c2c80700-40d6-11eb-9557-e18957d0fa52.png">
作成ウィザードが起動します。名前は、「k8s-dev-storage-policy」としてみました。
<img width="708" alt="スクリーンショット 2020-12-18 2 17 46" src="https://user-images.githubusercontent.com/3906298/102520656-42ee6c80-40d7-11eb-937b-263b1d361334.png">
「タグベースの配置ルールを有効化」にチェックを入れます
<img width="590" alt="スクリーンショット 2020-12-18 2 18 58" src="https://user-images.githubusercontent.com/3906298/102520782-69140c80-40d7-11eb-8997-a98766bbce0d.png">
「タグカテゴリ」と「タグ」に、先ほど作成したものを指定していきます。
<img width="881" alt="スクリーンショット 2020-12-18 2 20 59" src="https://user-images.githubusercontent.com/3906298/102521026-bee8b480-40d7-11eb-9200-7da7ed5aa16c.png">
後の選択肢は特に迷わないでしょう。作成したポリシーが追加されていることを確認します。
<img width="725" alt="スクリーンショット 2020-12-18 2 24 15" src="https://user-images.githubusercontent.com/3906298/102521439-46362800-40d8-11eb-84e8-de4b80a2d08f.png">
# ユーザの追加
実際にTKCを操作するユーザを追加しましょう。
「管理」画面より、「ユーザおよびグループ」を選択し、ドメインを「vsphere.local」に切り替え、「追加」。
ユーザの追加画面が出るので、ユーザ名とパスワードを入力し、追加すれば完了です。
<img width="1135" alt="スクリーンショット 2020-12-18 2 30 51" src="https://user-images.githubusercontent.com/3906298/102522137-33702300-40d9-11eb-88b7-848513797f31.png">
# コンテンツライブラリの追加
次は、TKCのイメージなどを格納する、コンテンツライブラリの作成です。
コンテンツライブラリ画面で、「作成」するとウィザードが起動します。
<img width="380" alt="スクリーンショット 2020-12-17 16 39 11" src="https://user-images.githubusercontent.com/3906298/102457678-794fcb80-4086-11eb-9c2b-7b9476540f7c.png">
「contents-lib01」としてみました。「NEXT」
<img width="843" alt="スクリーンショット 2020-12-17 16 39 34" src="https://user-images.githubusercontent.com/3906298/102457795-a603e300-4086-11eb-8168-ddc789a49aff.png">
「サブスクライブ済みコンテンツライブラリ」を選択し、「 http://wp-content.vmware.com/v2/latest/lib.json 」を指定。
<img width="848" alt="スクリーンショット 2020-12-18 2 38 43" src="https://user-images.githubusercontent.com/3906298/102522913-39b2cf00-40da-11eb-9c3c-691c22957888.png">
その後、先日作成したvSANを選択し、確認を押すと、サクッとコンテンツライブラリが出来ちゃいます:grinning:
<img width="917" alt="スクリーンショット 2020-12-17 16 58 46" src="https://user-images.githubusercontent.com/3906298/102459653-39d6ae80-4089-11eb-8678-6c286ce38cb2.png">
#HAProxyのデプロイ
まずは、[vmware-haproxy](https://github.com/haproxytech/vmware-haproxy)のGitHubから、最新のOVAをダウンロードしてきます。
<img width="519" alt="スクリーンショット 2020-12-18 2 49 49" src="https://user-images.githubusercontent.com/3906298/102524020-ba25ff80-40db-11eb-995e-1c44428f2ceb.png">
「OVFテンプレートのデプロイ」を選ぶと、いつものウィザードが起動します。
<img width="538" alt="スクリーンショット 2020-12-18 2 51 45" src="https://user-images.githubusercontent.com/3906298/102524344-36b8de00-40dc-11eb-8966-c7bcafdce9be.png">
直前にダウンロードしてきたOVAを指定してあげます。
<img width="688" alt="スクリーンショット 2020-12-18 2 53 10" src="https://user-images.githubusercontent.com/3906298/102524422-52bc7f80-40dc-11eb-8cd7-bfde511c9b3b.png">
2〜5まではいつも通り。6では「Default」のままでOK
<img width="510" alt="スクリーンショット 2020-12-18 2 56 05" src="https://user-images.githubusercontent.com/3906298/102524698-afb83580-40dc-11eb-9edb-f4c43755990e.png">
<font color="Red">(2020年12月21日追記)</font> 8では、以下のネットワーク構成にしました。

- Management : DSwitch-VM Network
- Workload : DPortGroup-workload
- Frontend : DPortGroup-workload
<img width="1133" alt="スクリーンショット 2020-12-18 2 59 47" src="https://user-images.githubusercontent.com/3906298/102525198-45ec5b80-40dd-11eb-983e-446fece4a5f8.png">
ここではパスワードだけを設定。caは放置すると自己証明書が生成される。検証目的ならこれでOK。
<img width="1126" alt="スクリーンショット 2020-12-18 3 04 46" src="https://user-images.githubusercontent.com/3906298/102525620-dc208180-40dd-11eb-88de-deb4c24e2d2f.png">
<font color="Red">(2020年12月21日追記)</font>
以下の構成にしました。
- Host Name : haproxy-lb
- DNS : 8.8.8.8
- Management IP : 192.168.5.45/24
- Management Gateway : 192.168.5.1
- Workload IP : 172.18.0.45/24
- Workload Gateway : 172.18.0.1
<img width="1089" alt="スクリーンショット 2020-12-18 3 10 30" src="https://user-images.githubusercontent.com/3906298/102526166-a039ec00-40de-11eb-84f5-1ddf93692c39.png">
<img width="1102" alt="スクリーンショット 2020-12-18 3 12 24" src="https://user-images.githubusercontent.com/3906298/102526366-e2632d80-40de-11eb-8952-f681ce5a3dad.png">
<font color="Red">(2020年12月21日追記)</font> 以下の構成にしました。
- Load Balancer IP Ranges : 172.18.0.208/24
- Dataplane API Management Port : 5556 (デフォルトのまま)
- User ID : admin
- Password : お好きなものを
<img width="1126" alt="スクリーンショット 2020-12-18 14 23 23" src="https://user-images.githubusercontent.com/3906298/102593873-c4d2aa00-4158-11eb-8280-abeb5e4cae3c.png">
よし、デプロイ成功。電源を投入すれば、完了です。
<img width="1038" alt="スクリーンショット 2020-12-18 17 48 11" src="https://user-images.githubusercontent.com/3906298/102594206-3ad71100-4159-11eb-95b0-ceb3f0738369.png">
なお、起動時のリソース量は、この位。
<img width="1221" alt="スクリーンショット 2020-12-18 17 53 46" src="https://user-images.githubusercontent.com/3906298/102594821-10398800-415a-11eb-92b9-7791b6331d2d.png">


さぁ、これで準備は出来た！はず。。本日は結構、作業が多かったですね。
HAProxyの設定まわり、自信ないけど上手くいったかな？吉と出るか凶と出るか・・。明日、結果が分かりますｗ
また明日！