NUCで始めるVMware Tanzu - TKGSの有効化

ではいよいよ、Tanzu Kubernetes Grid Service(TKGS)を有効化してみましょう！

# Tanzuエディションについて
さっそく、「ワークロード管理」に移動してみると・・・、
<img width="400" alt="スクリーンショット 2020-12-17 13 53 00" src="https://user-images.githubusercontent.com/3906298/102445902-ead04f80-406f-11eb-84bd-b4107df1b550.png">
「Tanzu エディション ライセンスをお持ちですか？」と聞かれます。
<img width="800" alt="スクリーンショット 2020-12-17 14 00 10" src="https://user-images.githubusercontent.com/3906298/102446090-51ee0400-4070-11eb-9c82-01e7f8e78e38.png">
「はて、Tanzuエディションってなんぞ？」と思う方もいらっしゃるかもしれません。実はこのTanzuエディション、vSphere 7 Update 1から導入された概念なんです。([VMware Blog](https://tanzu.vmware.com/content/blog/simplify-your-approach-to-application-modernization-with-4-simple-editions-for-the-tanzu-portfolio))
![tanzu-editions](https://content.cdntwrk.com/files/aHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzVmNWY3YWUwNWFmNDEuanBnJnZlcnNpb249MDAwMCZzaWc9NGQ3NzkxNzI5NThkZDJkMDY5NWRiMTNkNTc1ZGJmZmE%253D)
[Day3](https://qiita.com/hirosat/items/29cd255cf3c007bc262a)で、Tanzuポートフォリオについてご紹介しましたが、以前は各Tanzu製品を個別に買う形となり、窓口も違うため、購入すること自体がややこしくなっていました。Tanzuエディションでは、企業の導入フェーズに合わせて4つのペルソナに分類し、顧客層を基準としたシンプルなパッケージプライスとなった訳です。
それぞれのエディションがどういうものか、簡単に説明します。

1. **Tanzu Basic** : まずはオンプレでK8sを導入しようと思う企業向けで、**vSphere上のインフラのみが対象**です。今回紹介した、TKGとvSphere with Tanzuが利用可能です。具体的な価格を私は言えませんが、最もお手頃価格となっているとのことです。また、vSphere 7 Ent+とのバンドルとして、またはvSphere 6.7u3にデプロイするアドオンとしてライセンスを受けることができます。
2. **Tanzu Standard** : **マルチクラウド向け**にスケール管理するためのパッケージ。TKGがサポートする他のプラットフォーム(2020年12月17日時点では、AWS(EC2)と、VMC on AWSと、Azure)が対象に加わってきます。また、Tanzu Mission Controlの機能の一部が利用可能であり、Prometheus/GrafanaなどOSSのサポート対象も拡大されます。
3. **Tanzu Advanced** : DevOpsプラクティスを構築するためのパッケージとして、Tanzuポートフォリオの多くの製品が同梱されてくる予定となっています。詳細は、今後発表予定とのこと。
4. **Tanzu Enterprise** : Tanzuポートフォリオをフル活用できる最上位パッケージ。自動化されたアプリケーションプラットフォームで開発者のエクスペリエンスとベロシティを向上させたい場合に最適なソリューションです。こちらも詳細は、近日発表予定とのこと。

[こちら](https://docs.vmware.com/jp/VMware-vSphere/7.0/vmware-vsphere-with-tanzu/GUID-9A190942-BDB1-4A19-BA09-728820A716F2.html)によると、他のVMware製品同様、60日の評価利用が可能です。さらに、評価期間が終了しても、評価期間中に作成したTKCは引き続き利用可能（構成変更は不可）なようなので、安心して使ってみましょうｗ

基本情報を入力して・・・、「登録」。
はい、これで、ワークロード管理の初期画面が現れました！
<img width="1380" alt="スクリーンショット 2020-12-18 22 43 04" src="https://user-images.githubusercontent.com/3906298/102621113-789c5f80-4182-11eb-88f1-cb29a78e35f9.png">


# HAProxyのCA Certの取得
「開始する」に進みたいところですが・・・、
[Day18](https://qiita.com/hirosat/items/eefa91d9edb767fcf3c4)で、HAProxyを作成した訳ですが、その際、CAを放置したのを覚えてますでしょうか？この後の設定の際に、HAProxyのCA証明書が必要になるので、事前に情報を取得しておく必要があります。（私はそれを知らずに、この後の工程で証明書を求められ、有効化作業を最初からやり直すハメにあいました・・・:sob:）

そして、取得できる場所が分かりづらかった。haproxyの「設定の編集」を開き・・・
<img width="467" alt="スクリーンショット 2020-12-18 18 44 51" src="https://user-images.githubusercontent.com/3906298/102602662-2ef14c00-4165-11eb-9a68-c2527acccccb.png">
「仮想マシンオプション」の詳細を開き・・
<img width="795" alt="スクリーンショット 2020-12-18 18 45 30" src="https://user-images.githubusercontent.com/3906298/102619991-a7b1d180-4180-11eb-843c-c47342e1e578.png">
「構成パラメータ」の「設定の編集...」をクリックし・・
<img width="827" alt="スクリーンショット 2020-12-18 18 45 53" src="https://user-images.githubusercontent.com/3906298/102620123-dc258d80-4180-11eb-8292-f7b17b4e200d.png">
「guestinfo.dataplaneapi.cacert」にありましたｗ　階層が深いっ！
<img width="828" alt="スクリーンショット_2020-12-18_18_46_37_mos" src="https://user-images.githubusercontent.com/3906298/102620269-1a22b180-4181-11eb-8a8e-650022a0d108.png">
さらにもう一手間必要で、「echo "(取得した文字列をペースト)" | base64 -d」で、Base64をデコードしてあげる必要があります。
<img width="974" alt="スクリーンショット_2020-12-18_18_59_58mos" src="https://user-images.githubusercontent.com/3906298/102620463-6241d400-4181-11eb-9f65-4d3855a093a3.png">

# ワークロード管理の有効化
ではいよいよ、「開始する」を押します！
<img width="600" alt="スクリーンショット 2020-12-17 16 27 54" src="https://user-images.githubusercontent.com/3906298/102456907-3e996380-4085-11eb-89ae-52667dd47ad8.png">
ステップ1. vCenterとネットワークの選択。NSX-Tを導入してないため、特に選択肢はないです。「次へ」
<img width="1185" alt="スクリーンショット 2020-12-17 16 32 26" src="https://user-images.githubusercontent.com/3906298/102457174-a3ed5480-4085-11eb-9aa2-18fb2587c8b8.png">
なお、ここで[Day18](https://qiita.com/hirosat/items/eefa91d9edb767fcf3c4)で作成した「コンテンツライブラリ」がないと、先に進めませんでした・・
<img width="938" alt="スクリーンショット 2020-12-17 16 37 12" src="https://user-images.githubusercontent.com/3906298/102457562-44dc0f80-4086-11eb-8b00-7b865c82a365.png">
2ではvSphereクラスタを選択します。選んで「次へ」
<img width="980" alt="スクリーンショット 2020-12-17 17 09 08" src="https://user-images.githubusercontent.com/3906298/102464440-b076aa80-408f-11eb-9bd5-1bcab3a6acc3.png">
3は、ControlPlaneのサイズ。本番運用だと「中」以上がオススメですが、検証用途なので「極小」にしてみます
<img width="970" alt="スクリーンショット 2020-12-17 23 03 46" src="https://user-images.githubusercontent.com/3906298/102497627-3ad50380-40bc-11eb-9d7f-f1735958d99a.png">
4はストレージの選択ですね。事前に作成したポリシー選んで「次へ」
<img width="1202" alt="スクリーンショット 2020-12-18 18 03 46" src="https://user-images.githubusercontent.com/3906298/102595719-6ce97280-415b-11eb-99bd-41e43be296fd.png">
5はLB情報を入力。ここで、**事前に設計したIP情報**や、**作成したhaproxy**や、**CA**が必要になります！
<font color="Red">(2020年12月21日修正)</font> 以下の設定で作り直しました。

- 名前 : haproxy-lb (DNS名。小文字a-z、数字0-9、-(ハイフン)のみが使用可能とのこと)
- タイプ : HA プロキシ　（現時点ではこれしか選べない。。）
- データプレーンAPIのアドレス : 172.18.0.45:5556 (※haproxyのIPアドレス:ポート)
- ユーザー名＆パスワード : (登録したものを入れる)
- 仮想サーバのIPアドレス範囲 : 172.18.0.208-172.18.0.222 (事前に設計したVIPのレンジ内で指定)
- サーバ認証局 : (先ほど取得したCA Certをコピペ)
<img width="1184" alt="スクリーンショット 2020-12-18 23 05 38" src="https://user-images.githubusercontent.com/3906298/102623333-acc54f80-4185-11eb-91b3-681768452455.png">
6は管理ネットワークです。「開始IPアドレス」から5IPsのアドレスを、Supervisor ControlPlane VMが使用するため、バッティングしないようご注意下さい。
<font color="Red">(2020年12月21日追記)</font> ネットワークは「DSwitch-VM Natwork」とした
<img width="1092" alt="スクリーンショット 2020-12-18 23 27 41" src="https://user-images.githubusercontent.com/3906298/102625319-a5ec0c00-4188-11eb-832a-745489385c0c.png">
7は、ワークロードネットワークです。ここはちょっと紛らわしくて、最初にあるサービスとは、**K8sのServiceリソース**のことです。つまり、**コンテナネットワーク**です。特に最初から入っている値のままで良いでしょう。DNSサーバは、k8sのコンテナネットワークで良く使われる「8.8.8.8」を指定してみます。続いて、ワークロードネットワークを「追加」
<img width="1110" alt="スクリーンショット 2020-12-18 23 36 22" src="https://user-images.githubusercontent.com/3906298/102626240-e435fb00-4189-11eb-90a2-6e98ebf39a33.png">
ワークロードネットワークには、TKCのControlPlaneやWorkerのVMにアサインされるIPを指定していき、「保存」
<font color="Red">(2020年12月21日追記)</font> 以下の設定に作り直しました。

- Name : network-1 (そのまま放置)
- Port Group : DPortGroup-workload
- Gateway : 172.18.0.1
- Subnet : 255.255.255.0
- IP Address Range : 172.18.0.129-172.18.0.191
<img width="846" alt="スクリーンショット 2020-12-19 0 13 32" src="https://user-images.githubusercontent.com/3906298/102630139-85738000-418f-11eb-80cd-4df5addbd99b.png">
すると、このように情報が埋まります。このネットワークを選択して「次へ」
<img width="1079" alt="スクリーンショット 2020-12-19 0 18 41" src="https://user-images.githubusercontent.com/3906298/102630364-ce2b3900-418f-11eb-93f1-68650fcaa1d9.png">
8は、コンテンツライブラリを追加して、「次へ」
<img width="944" alt="スクリーンショット 2020-12-19 0 20 50" src="https://user-images.githubusercontent.com/3906298/102630636-25310e00-4190-11eb-9e19-0bef07c0e615.png">
9は確認画面。今までの設定が問題ないことを確認し、「完了」！　さぁ、どうだ・・・？
<img width="936" alt="スクリーンショット 2020-12-19 0 24 41" src="https://user-images.githubusercontent.com/3906298/102631118-b1433580-4190-11eb-8d92-07d8a4e58a40.png">
なんか画面下のタスクが色々と動き出した・・・結構時間がかかります。
時折、「OVFテンプレートのデプロイ」や「リモートファイルのダウンロード」で、「ステータス404でHTTP通信を完了出来ませんでした。」とエラーが出てドキッとしますが、リトライしてなんとか処理してくれているようです。
<img width="1389" alt="スクリーンショット 2020-12-19 0 26 17" src="https://user-images.githubusercontent.com/3906298/102631539-33cbf500-4191-11eb-81c7-c996a7434657.png">
20分位して、Supervisor ControlPlaneVMのデプロイは一通り終わったように見えますが、引き続きSupervisor Namespaceの設定をなにかやっているようです。
<img width="651" alt="スクリーンショット 2020-12-19 0 50 55" src="https://user-images.githubusercontent.com/3906298/102634244-e5b8f080-4194-11eb-8c58-7457b474b534.png">

さらに10分位して、「名前空間」メニューが使用可能となり、クラスタが「実行中」のステータスとなれば完了です！「完了」を押してからのトータル待ち時間は、30分ちょいといったところでした。
<img width="1114" alt="スクリーンショット 2020-12-19 1 00 41" src="https://user-images.githubusercontent.com/3906298/102634916-e3a36180-4195-11eb-9b6c-a2c5307f2b07.png">
<img width="674" alt="スクリーンショット 2020-12-19 1 01 01" src="https://user-images.githubusercontent.com/3906298/102634961-f4ec6e00-4195-11eb-9925-cdc2bb0404fa.png">


#リソース魚拓
さて、今までのTKG環境に加え、今回、「Namespaces」というリソースプールが作成され、3台の「SupervisorControlPlaneVM」が作成されました。同居させるとどうなるかな？
###SupervisorControlPlaneVM
Tinyでも結構消費しますね！VM毎にバラツキがあるのが興味深いです。

- CPU : 500MHz 〜 1GHz
- Mem : 1 GB 〜 2GB
- Storage : 13 GB 〜 15 GB
<img width="1133" alt="スクリーンショット 2020-12-19 1 10 36" src="https://user-images.githubusercontent.com/3906298/102636355-e1da9d80-4197-11eb-885a-97621f7f00b6.png">

###Namespaces
Supervisor Clusterの分は、カウントしていなさそうですね。ほぼリソースなし
<img width="1132" alt="スクリーンショット 2020-12-19 1 19 41" src="https://user-images.githubusercontent.com/3906298/102636726-5ca3b880-4198-11eb-8ce0-bf617eaf9e2a.png">

###HAProxy
CPUとメモリはほぼ0！省エネ設計ですね:blush:
<img width="1133" alt="スクリーンショット 2020-12-19 1 21 43" src="https://user-images.githubusercontent.com/3906298/102637008-b60be780-4198-11eb-86c1-deceee2a6c3a.png">

###Nested ESXi
おぉ、結構使ってきましたね。。特にメモリが。でも、まだ入るな。SV ControlPlane VMが居るところが多めになる。

- CPU : 1GHz 〜 1.5GHz
- Mem : 21GB 〜 27GB
<img width="1135" alt="スクリーンショット 2020-12-19 1 31 01" src="https://user-images.githubusercontent.com/3906298/102638021-3717ae80-419a-11eb-9eb3-a0e0fafde3b9.png">

###Nested vCenter
使用メモリが90GBを超えてきました。
<img width="1134" alt="スクリーンショット 2020-12-19 1 35 13" src="https://user-images.githubusercontent.com/3906298/102638346-b0170600-419a-11eb-9e5c-28f44440f305.png">

###物理 vCenter
ざっくりいうと利用率50%といったところでしょうか。TKGとvSphere w/ Tanzuを組み合わせると、やはりメモリが2台では収まらないですね。
<img width="1141" alt="スクリーンショット 2020-12-19 1 39 02" src="https://user-images.githubusercontent.com/3906298/102638633-29aef400-419b-11eb-99de-4d508d1d2771.png">

ちょっと長くなってしまいましたね。vSphere with Tanzuの方が、導入するまでが大変な印象です。
明日は、実際に使ってみたいと思います！