vSphere Supervisor で TKG Service をアップグレードしてみる

# はじめに

まず、vSphere Supervisor なんてあったっけ？となりそうですが、直近では、vSphere IaaS control plane や vSphere with Tanzu と呼ばれてきた機能です。参考までに、私が認識している限り、下記のような変遷を辿っています。

- Project Pacific ... VMworld 2019 で発表された GA 前の名称
- vSphere with Kubernetes ... GA 当初の名称
- vSphere with Tanzu ... この名称だった期間が一番長い (はず)
- vSphere IaaS control plane ... vSphere 8.0 Update 3 前後でこの名称
- vSphere Supervisor ... 今後はこの名称

同様に Tanzu Kubernetes Grid Service (TKG Service) も、今後は vSphere Kubernetes Service (VKS) という名称になりますが、過去からのドキュメントを含めて、まだまだ TKG Service の名称が多く残っているため、本記事でも TKG Service と表記しています。

# やること

vSphere Supervisor は、有効化の作業が必要ですが、vCenter の [ワークロード管理] というメニューからアクセスできます。そして、YAML ファイルを読み込ませることで、その機能を拡張できる Supervisor Service という仕組みが備わっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/69004320-19e4-285a-2839-4e7f587869df.png)

TKG Service も vSphere 8.0 Update 3 からは vCenter から独立して、この Supervisor Service によって管理される仕組みに移行しており、上記の画面でも [Tanzu Kubernetes Grid Service] というタイルがあることが確認できます。

「vCenter から独立したことで、どんな問題を改善したのか？」というと、まず、これまでの TKG Service は vCenter 組み込みであったため、常に vCenter と一緒にアップグレードする必要がありました。しかし、特定のバージョンの TKG Service は、特定の 3つのバージョンの Kubernetes と紐づいているため、より新しいバージョンの Kubernetes クラスタを展開したい場合には、新しい TKG Service にアップグレードする必要があります。その結果、新しいバージョンの Kubernetes クラスタを展開したいなら、vCenter のアップグレードが必要になるという芋づる式に影響範囲が大きくなる問題がありました。

そこで TKG Service を vCenter から独立させることで、TKG Service のみを個別にアップグレードできるようにし、より素早く新しいバージョンの Kubernetes を取り込むことができるようになりました。英語の記事ではありますが、下記の公式ブログの "New Independent TKG Service" のセクションでも紹介されています。

https://blogs.vmware.com/cloud-foundation/2024/06/25/vmware-vsphere-8-u3-initial-availability-announcement/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/8051ddd1-2071-c468-3913-e88f4d4f38ee.png)

以降では、新しい仕組みでバージョン管理される TKG Service を、実際にアップグレードすることで、どんな使用感なのか試していきたいと思います。

# 環境情報

- vSphere 8.0 Update 3
    - vCenter 8.0 Update 3d
    - ESXi 8.0 Update 3b

# 手順

基本的には、下記の公式ドキュメントに記載の手順を実施していきます。

https://docs.vmware.com/jp/VMware-vSphere/8.0/vsphere-with-tanzu-services-workloads/GUID-052CF490-4B77-4CA2-8A4C-8624718ADA4E.html

## YAML ファイルの取得

まず、新しいバージョンの TKG Service が定義された YAML ファイルを取得します。

https://vsphere-tmm.github.io/Supervisor-Services/

公式サイトの [Supervisor Services Catalog] > [TKG Service] > [TKG Service Versions] から、最新バージョンの YMAL ファイルを取得します。下記の例では、[TKG Service v3.2.0] を取得しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/e675b5b7-0260-6592-d686-89d6e59256e9.png)

## 新しいバージョンの追加

取得した YAML ファイルを読み込ませて、新しい TKG Service を追加します。

前述の通り、Supervisor Service の管理には、vCenter UI のメニューから [ワークロード管理] > [サービス] と進みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/69004320-19e4-285a-2839-4e7f587869df.png)

ここで、登録済みのサービスの新しいバージョンの追加には、[サービスの新規追加] のタイルではなく、対象のサービスのタイルの [アクション] > [新規バージョンの追加] を選択する点には注意してください。[サービスの新規追加] から進んだ場合、非常に似たウィザードなのですが、最後のステップでエラーとなります。ちょっと不便...

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/3b4955e4-b3c0-1682-0187-3a0056feb7a6.png)

とはいえ、ウィザードは非常にシンプルで、まずは [アップロード] のボタンから、取得した YAML ファイルをアップロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/f5340339-a022-2e9e-700b-0598308a5760.png)

するとバリデーションされた後に、読み込まれたサービスの内容が表示されるので、問題なければ [完了] を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/8dddbae4-9b85-abbc-c57e-229276d88297.png)

これで新しいバージョンの TKG Service が追加されました。

## アップグレードの実行

追加された新しいバージョンへのアップグレードを実行するには、対象のサービスのタイルにある [アクション] > [サービスの管理] を選択します。すぐ近くに [バージョンの管理] もあるので、紛らわしいですが...

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/a316e8cd-54f6-edb7-4f72-df5ae0cd5231.png)

こちらのウィザードも非常にシンプルで、[インストール バージョン] にて、アップグレード先のバージョンを選択し、リストから対象のスーパーバイザーを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/396d1793-e651-ea77-2d90-9c3d7cd7d4d5.png)

選択されたバージョンに対して、互換性チェックが行われ、問題なければ、その旨が表示されるので、[完了] を選択することで、アップグレードを開始できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/9828e563-ff38-1f1b-3807-550a66c63cb9.png)

## 進捗状況および実行結果の確認

アップグレードの進捗状況および実行結果が確認できる箇所は、いくつか存在します。

まず、vSphere Supervisor を有効化する際に、進捗を確認していた [ワークロード管理] > [スーパーバイザー] の画面です。ただ、こちらに進捗が反映されるのは、vSphere Supervisor のコアのサービスの場合で、拡張にあたるサービスの場合、こちらには反映されないように見えました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/49df98bb-6549-ab3a-bb7c-f2a25c81fe14.png)

対象のスーパーバイザーにインストールされているサービスを一覧し、それらの状況を確認するには、上記の画面の一覧にあるスーパーバイザーを選択し、[構成] のタブ > [スーパーバイザー サービス] > [概要] を確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/a83c5888-5dfd-8207-f708-c56c62ab0a41.png)

TKG Service の実体は vSphere Pod として実行されているようで、スクショを撮っている間にアップグレードが完了してしまったため、上記の画面では、すでにステータスが [設定済み] になってしまっていますが、実際には Kubernetes の Reconciliation Loop によって状況が変化してく様子が確認できるはずです。確認したタイミングでは、エラーが表示され、ギョッとすることもあるのですが、気づいたら成功していたりするので、あらためて Kubernetes だなぁと思います。

# まとめ

今回は、vSphere Supervisor で提供されるサービス (Supervisor Service) の中でも、コアとなる TKG Service を取り上げました。
しかし、Supervisor Service は、他にも便利なサービスを提供しており、かつサクッとデプロイできてしまうので、別の記事で実践していきたいと思います。