はじめに
vSphere 8.0u3からvSphere with Tanzuと呼ばれていた機能は、vSphere Iaas Control PlaneとTanzu Kubernetes Grid Serviceに分離されました。vSphere IaaS Control PlaneはvSphereの中でSupervisor Clusterを提供し、Tanzu Kubernetes Grig ServiceはvSphere IaaS Control Plane上のサービスとして提供されます。
VMware vSphere IaaS 制御プレーン 8.0 リリース ノート
- Tanzu Kubernetes Grid Service for vSphere
スーパーバイザー サービスとしての TKG サービス – このリリースでは、TKG サービス コンポーネントが vCenter Server から分離され、vCenter Server およびスーパーバイザー リリースとは関係なく更新および管理できるスーパーバイザー サービスとしてパッケージ化されています。TKG サービスのリリース ノートはこちらで確認できます。
本記事では、vSphere IaaS Control Plane上のTanzu Kubernetes Grid Serviceのアップグレードの様子を紹介します。
vSphere IaaS Control Planeの有効化
vSphere IaaS Control Planeを有効化すると、Supervisor Clusterが構成されTanzu Kubernetes Grid ServiceとVelero vSphere Operatorが利用可能な状態で構成されます。
vSphere 8.0u3からは、これらのサービスが利用するネームスペースがvSphere Client上から確認できるようになっています。
Supervisor ClusterのTKG用のネームスペースを確認すると、Cluster APIに必要なCAPI/CAPV/CAPW等がPodとして実行されていることを確認できます。
$ kubectl get pod -n svc-tkg-domain-c42343
NAME READY STATUS RESTARTS AGE
capi-controller-manager-546bb5d674-c4qr8 2/2 Running 0 2d4h
capi-controller-manager-546bb5d674-q57v9 2/2 Running 0 2d4h
capi-kubeadm-bootstrap-controller-manager-6699b999b7-cwv7f 2/2 Running 0 2d4h
capi-kubeadm-bootstrap-controller-manager-6699b999b7-vdhmg 2/2 Running 0 2d4h
capi-kubeadm-control-plane-controller-manager-577d49777b-6lv6n 2/2 Running 0 2d4h
capi-kubeadm-control-plane-controller-manager-577d49777b-gxlnb 2/2 Running 0 2d4h
capv-controller-manager-8fb4d7fc8-bfklm 1/1 Running 0 2d4h
capv-controller-manager-8fb4d7fc8-gbvjc 1/1 Running 0 2d4h
capw-controller-manager-7f9cfcbbbd-h2q9g 2/2 Running 0 2d4h
capw-webhook-576bf68fd7-tds4q 2/2 Running 0 2d4h
masterproxy-tkgs-plugin-44mxg 1/1 Running 0 2d4h
masterproxy-tkgs-plugin-rzshb 1/1 Running 0 2d4h
masterproxy-tkgs-plugin-wlslg 1/1 Running 0 2d4h
tanzu-addons-controller-manager-74889c5586-sb6d2 1/1 Running 0 2d4h
tanzu-auth-controller-manager-6447c9fb5d-c9fgw 1/1 Running 0 2d4h
tanzu-capabilities-controller-manager-74f4dcf8b4-6bssg 1/1 Running 0 2d4h
tanzu-featuregates-controller-manager-f8545c6d6-c2dnt 1/1 Running 0 2d4h
tkgs-plugin-server-74f7465fb-kp65z 1/1 Running 0 2d4h
tkgs-plugin-server-74f7465fb-zs6qq 1/1 Running 0 2d4h
tkr-conversion-webhook-manager-755df78dbf-fs9mq 1/1 Running 0 2d4h
tkr-resolver-cluster-webhook-manager-5f68f5df4d-92plm 1/1 Running 0 2d4h
tkr-status-controller-manager-7f5c967788-fz7xk 1/1 Running 0 2d4h
upgrade-compatibility-service-5cd87fdc9b-w7zkn 2/2 Running 0 2d4h
vmware-system-tkg-controller-manager-745d855655-9d6vf 2/2 Running 0 2d4h
vmware-system-tkg-controller-manager-745d855655-x562w 2/2 Running 0 2d4h
vmware-system-tkg-state-metrics-7d495495f6-4hfs6 2/2 Running 0 2d4h
vmware-system-tkg-state-metrics-7d495495f6-mspz7 2/2 Running 0 2d4h
vmware-system-tkg-webhook-6987d754c-fbghx 2/2 Running 0 2d4h
vmware-system-tkg-webhook-6987d754c-v5vvd 2/2 Running 0 2d4h
これらのコンポーネントはkappによって管理されており、インストールされているパッケージはpackageinstalls.packaging.carvel.dev
リソースとして確認できます。
$ kubectl get packageinstalls.packaging.carvel.dev -n svc-tkg-domain-c42343
NAME PACKAGE NAME PACKAGE VERSION DESCRIPTION AGE
cluster-api-provider-wcp capw.tkg.vsphere.vmware.com 1.4.2 Reconcile succeeded 2d4h
tanzu-addons-manager addons-manager.tanzu.vmware.com 0.33.1+vmware.1 Reconcile succeeded 2d4h
tanzu-auth tanzu-auth.tanzu.vmware.com 0.33.1+vmware.1 Reconcile succeeded 2d4h
tanzu-capabilities capabilities.tanzu.vmware.com 0.33.1+vmware.1 Reconcile succeeded 2d4h
tanzu-cliplugins cliplugins.tanzu.vmware.com 0.33.1+vmware.1 Reconcile succeeded 2d4h
tanzu-cluster-api cluster-api.tanzu.vmware.com 1.6.2+vmware.0 Reconcile succeeded 2d4h
tanzu-cluster-api-bootstrap-kubeadm cluster-api-bootstrap-kubeadm.tanzu.vmware.com 1.6.2+vmware.0 Reconcile succeeded 2d4h
tanzu-cluster-api-control-plane-kubeadm cluster-api-control-plane-kubeadm.tanzu.vmware.com 1.6.2+vmware.0 Reconcile succeeded 2d4h
tanzu-cluster-api-provider-vsphere cluster-api-provider-vsphere.tanzu.vmware.com 1.9.2+vmware.0 Reconcile succeeded 2d4h
tanzu-featuregates featuregates.tanzu.vmware.com 0.33.1+vmware.1 Reconcile succeeded 2d4h
tkg-controller gcc.tkg.vsphere.vmware.com 3.8.0 Reconcile succeeded 2d4h
tkgs-config tkgs-config-vsphere.tanzu.vmware.com 3.0.0 Reconcile succeeded 2d4h
tkr-service tkr-service.tanzu.vmware.com 0.33.1+vmware.1 Reconcile succeeded 2d4h
upgrade-compatibility-service ucs.tkg.vsphere.vmware.com 1.2.0 Reconcile succeeded 2d4h
Tanzu Kubernetes Grid Service 新バージョンパッケージの追加
スーパーバイザーサービス画面では、利用可能となっているVMサービス、Tanzu Kubernetes Grid Service、Velero vSphere Operatorがタイルとして表示されています。
このスーパーバイザーサービス画面内の「使用可能なスーパーバイザーサービスをここで検出してダウンロードします。」クリックすると以下のようなページが開きます。このページではIaaS Control Plane上で利用可能な様々なサービスが提供されています。
2024年7月23日現在以下のパッケージが公開されています。
- TKG Service
- Consumption Interface
- vSAN Data Persistence Platform Services - MinIO, Cloudian and Dell ObjectScale
- Backup & Recovery Service - Velero
- Certificate Management Service - cert-manager
- Cloud Native Registry Service - Harbor
- Kubernetes Ingress Controller Service - Contour
- External DNS Service - ExternalDNS
上記に加えて、Supervisor Services Labs Catalogとして以下のパッケージも提供されています。
- ArgoCD Operator
- External Secrets Operator
- RabbitMQ Cluster Kubernetes Operator
- Redis Operator
- KEDA
- Grafana Operator
Workload管理の有効化によって構成されるTKG Serviceは3.0.0-embeddedとなっています。
上記サイトではTKG Service v3.1.0が公開されており、v3.1.0はTKRv1.30に対応しています。
TKG Service 3.1 includes the following new features:
- Updates TKG Service components to support the TKr v1.30 release
- Improvements to Kubectl and Tanzu CLI to identify legacy TKRs (refer to the documentation for more information about TKr formats)
上記ページで、TKG Service v3.1.0のリンクをクリックするとyamlファイルがダウンロードされます。このyamlファイルは以下のようなPacakgeリソース(packages.data.packaging.carvel.dev)のマニフェストファイルになっています。
apiVersion: data.packaging.carvel.dev/v1alpha1
kind: Package
metadata:
name: tkg.vsphere.vmware.com.3.1.0
annotations:
appplatform.vmware.com/compatibility-check_service: upgrade-compatibility-service
appplatform.vmware.com/compatibility-check_port: "80"
appplatform.vmware.com/compatibility-check_protocol: https
appplatform.vmware.com/compatibility-check_url: ucs/v2/compatibility
appplatform.vmware.com/compatibility-check_method: POST
appplatform.vmware.com/compatibility-check_ca_secret: ucs-service-ca-cert
appplatform.vmware.com/required_capability.0: TKG_SupervisorService_Supported
...
スーパーバイザークラスターでpackageリソースを確認すると3.0.0-embedded
がパッケージとして存在し、packageinstallsを確認すると、tkgs-config
としてtkgs-config-vsphere.tanzu.vmware.com 3.0.0
が有効になっています。
$ kubectl get package -n svc-tkg-domain-c42343 -l appplatform.vmware.com/serviceId=tkg
NAME PACKAGEMETADATA NAME VERSION AGE
tkg.vsphere.vmware.com.3.0.0-embedded tkg.vsphere.vmware.com 3.0.0-embedded 53h28m21s
$ kubectl get packageinstalls -n svc-tkg-domain-c42343
NAME PACKAGE NAME PACKAGE VERSION DESCRIPTION AGE
cluster-api-provider-wcp capw.tkg.vsphere.vmware.com 1.4.2 Reconcile succeeded 2d5h
tanzu-addons-manager addons-manager.tanzu.vmware.com 0.33.1+vmware.1 Reconcile succeeded 2d5h
tanzu-auth tanzu-auth.tanzu.vmware.com 0.33.1+vmware.1 Reconcile succeeded 2d5h
tanzu-capabilities capabilities.tanzu.vmware.com 0.33.1+vmware.1 Reconcile succeeded 2d5h
tanzu-cliplugins cliplugins.tanzu.vmware.com 0.33.1+vmware.1 Reconcile succeeded 2d5h
tanzu-cluster-api cluster-api.tanzu.vmware.com 1.6.2+vmware.0 Reconcile succeeded 2d5h
tanzu-cluster-api-bootstrap-kubeadm cluster-api-bootstrap-kubeadm.tanzu.vmware.com 1.6.2+vmware.0 Reconcile succeeded 2d5h
tanzu-cluster-api-control-plane-kubeadm cluster-api-control-plane-kubeadm.tanzu.vmware.com 1.6.2+vmware.0 Reconcile succeeded 2d5h
tanzu-cluster-api-provider-vsphere cluster-api-provider-vsphere.tanzu.vmware.com 1.9.2+vmware.0 Reconcile succeeded 2d5h
tanzu-featuregates featuregates.tanzu.vmware.com 0.33.1+vmware.1 Reconcile succeeded 2d5h
tkg-controller gcc.tkg.vsphere.vmware.com 3.8.0 Reconcile succeeded 2d5h
tkgs-config tkgs-config-vsphere.tanzu.vmware.com 3.0.0 Reconcile succeeded 2d5h
tkr-service tkr-service.tanzu.vmware.com 0.33.1+vmware.1 Reconcile succeeded 2d5h
upgrade-compatibility-service ucs.tkg.vsphere.vmware.com 1.2.0 Reconcile succeeded 2d5h
$ kubectl get packageinstalls.packaging.carvel.dev -n svc-tkg-domain-c42343 tkgs-config
NAME PACKAGE NAME PACKAGE VERSION DESCRIPTION AGE
tkgs-config tkgs-config-vsphere.tanzu.vmware.com 3.0.0 Reconcile succeeded 2d5h
GUI上のTanzu Kubernetes Grid Serviceのアクションから「新規バージョンの追加」を選択し、ダウンロードしたマニフェストをアップロードします。
完了をクリックするとアクティブなバージョンが追加されます。
packageリソースを確認すると3.0.0-embededに加えて、3.1.0が追加されています。
$ kubectl get package -n svc-tkg-domain-c42343 -l appplatform.vmware.com/serviceId=tkg
NAME PACKAGEMETADATA NAME VERSION AGE
tkg.vsphere.vmware.com.3.0.0-embedded tkg.vsphere.vmware.com 3.0.0-embedded 53h34m46s
tkg.vsphere.vmware.com.3.1.0 tkg.vsphere.vmware.com 3.1.0 1m33s
Tanzu Kubernetes Grid Service 新バージョンパッケージへのアップグレード
利用可能な状態となっていますが、有効となっていないためv3.1.0を有効にするためアクションからサービスの管理」を選択します。
構成画面で、アップグレードするスーパーバイザークラスターを選択し、インストールバージョンとして3.1.0
を指定します。
確認画面で対象のネームスペースを確認して、完了ボタンを押します。
新しいバージョンのTKG Serviceが有効化されるため、TKG用ネームスペースで実行されているCAPI/CAPV/CAPW等が新しいバージョンで再作成されます。
$ kubectl get pod -n svc-tkg-domain-c42343
NAME READY STATUS RESTARTS AGE
capi-controller-manager-546bb5d674-c4qr8 2/2 Running 0 2d5h
capi-controller-manager-546bb5d674-q57v9 2/2 Running 0 2d5h
capi-controller-manager-6b8db6779-68ktd 0/2 ContainerCreating 0 20s
capi-kubeadm-bootstrap-controller-manager-664b9c4fb6-vknqz 0/2 ContainerCreating 0 29s
capi-kubeadm-bootstrap-controller-manager-6699b999b7-cwv7f 2/2 Running 0 2d5h
capi-kubeadm-bootstrap-controller-manager-6699b999b7-vdhmg 2/2 Running 0 2d5h
capi-kubeadm-control-plane-controller-manager-577d49777b-6lv6n 2/2 Running 0 2d5h
capi-kubeadm-control-plane-controller-manager-577d49777b-gxlnb 2/2 Running 0 2d5h
capi-kubeadm-control-plane-controller-manager-b7d987456-dcckk 0/2 ContainerCreating 0 15s
capv-controller-manager-8fb4d7fc8-bfklm 1/1 Running 0 2d5h
capv-controller-manager-b8f7b9d95-rbmqg 1/1 Running 0 31s
capv-controller-manager-b8f7b9d95-tddns 0/1 ContainerCreating 0 9s
capw-controller-manager-54fcff4f45-q9w7j 0/2 ContainerCreating 0 29s
capw-webhook-5659b77f74-gbp89 2/2 Running 0 29s
masterproxy-tkgs-plugin-44mxg 1/1 Running 0 2d5h
masterproxy-tkgs-plugin-rzshb 1/1 Running 0 2d5h
masterproxy-tkgs-plugin-wlslg 1/1 Running 0 2d5h
tanzu-addons-controller-manager-6f75c6f858-j4kqq 0/1 ContainerCreating 0 27s
tanzu-auth-controller-manager-59f77f5894-h7xdz 1/1 Running 0 34s
tanzu-capabilities-controller-manager-7d8df8c448-vw4jl 1/1 Running 0 32s
tanzu-featuregates-controller-manager-555798c98c-vtzvc 1/1 Running 0 33s
tkgs-plugin-server-74f7465fb-zs6qq 1/1 Running 0 2d5h
tkgs-plugin-server-dbfcb69c-nzw8p 0/1 ContainerCreating 0 12s
tkr-conversion-webhook-manager-755df78dbf-fs9mq 1/1 Running 0 2d5h
tkr-conversion-webhook-manager-865dbdc59d-4mbb4 0/1 ContainerCreating 0 29s
tkr-resolver-cluster-webhook-manager-585574b869-68lp2 1/1 Running 0 29s
tkr-status-controller-manager-8669757f9f-4hkj4 1/1 Running 0 29s
upgrade-compatibility-service-77d55bc9cd-xxrsh 0/2 ContainerCreating 0 6s
vmware-system-tkg-controller-manager-5885bcdd47-k89gc 0/2 ContainerCreating 0 11s
vmware-system-tkg-controller-manager-745d855655-9d6vf 2/2 Running 0 2d5h
vmware-system-tkg-state-metrics-5967c589b6-69qgr 0/2 ContainerCreating 0 1s
vmware-system-tkg-state-metrics-5967c589b6-7npvn 2/2 Running 0 11s
vmware-system-tkg-state-metrics-7d495495f6-mspz7 2/2 Terminating 0 2d5h
vmware-system-tkg-webhook-647d86b7fb-dpmnc 0/2 ContainerCreating 0 12s
vmware-system-tkg-webhook-6987d754c-v5vvd 2/2 Running 0 2d5h
TKGネームスペースにインストールされているパッケージバージョンを確認すると、tkgs-configによって管理される各パッケージもアップグレードされていきます。
$ kubectl get packageinstalls.packaging.carvel.dev -n svc-tkg-domain-c42343
NAME PACKAGE NAME PACKAGE VERSION DESCRIPTION AGE
cluster-api-provider-wcp capw.tkg.vsphere.vmware.com 3.1.0 Reconciling 2d5h
tanzu-addons-manager addons-manager.tanzu.vmware.com 3.1.0 Reconciling 2d5h
tanzu-auth tanzu-auth.tanzu.vmware.com 3.1.0 Reconcile succeeded 2d5h
tanzu-capabilities capabilities.tanzu.vmware.com 3.1.0 Reconcile succeeded 2d5h
tanzu-cliplugins cliplugins.tanzu.vmware.com 3.1.0 Reconcile succeeded 2d5h
tanzu-cluster-api cluster-api.tanzu.vmware.com 1.7.1+vmware.0 Reconciling 2d5h
tanzu-cluster-api-bootstrap-kubeadm cluster-api-bootstrap-kubeadm.tanzu.vmware.com 1.7.1+vmware.0 Reconciling 2d5h
tanzu-cluster-api-control-plane-kubeadm cluster-api-control-plane-kubeadm.tanzu.vmware.com 1.7.1+vmware.0 Reconciling 2d5h
tanzu-cluster-api-provider-vsphere cluster-api-provider-vsphere.tanzu.vmware.com 1.10.0+vmware.0 Reconciling 2d5h
tanzu-featuregates featuregates.tanzu.vmware.com 3.1.0 Reconcile succeeded 2d5h
tkg-controller gcc.tkg.vsphere.vmware.com 3.9.0 Reconciling 2d5h
tkgs-config tkgs-config-vsphere.tanzu.vmware.com 3.1.0 Reconcile succeeded 2d5h
tkr-service tkr-service.tanzu.vmware.com 3.1.0 Reconcile succeeded 2d5h
upgrade-compatibility-service ucs.tkg.vsphere.vmware.com 3.1.0 Reconcile succeeded 2d5h
Tanzu Kubernetes Grid Serviceのアップグレードが完了すると、TKGネームスペースの全てのパッケージが「Reconcile succeeded」状態になります。
$ kubectl get packageinstalls.packaging.carvel.dev -n svc-tkg-domain-c42343
NAME PACKAGE NAME PACKAGE VERSION DESCRIPTION AGE
cluster-api-provider-wcp capw.tkg.vsphere.vmware.com 3.1.0 Reconcile succeeded 2d5h
tanzu-addons-manager addons-manager.tanzu.vmware.com 3.1.0 Reconcile succeeded 2d5h
tanzu-auth tanzu-auth.tanzu.vmware.com 3.1.0 Reconcile succeeded 2d5h
tanzu-capabilities capabilities.tanzu.vmware.com 3.1.0 Reconcile succeeded 2d5h
tanzu-cliplugins cliplugins.tanzu.vmware.com 3.1.0 Reconcile succeeded 2d5h
tanzu-cluster-api cluster-api.tanzu.vmware.com 1.7.1+vmware.0 Reconcile succeeded 2d5h
tanzu-cluster-api-bootstrap-kubeadm cluster-api-bootstrap-kubeadm.tanzu.vmware.com 1.7.1+vmware.0 Reconcile succeeded 2d5h
tanzu-cluster-api-control-plane-kubeadm cluster-api-control-plane-kubeadm.tanzu.vmware.com 1.7.1+vmware.0 Reconcile succeeded 2d5h
tanzu-cluster-api-provider-vsphere cluster-api-provider-vsphere.tanzu.vmware.com 1.10.0+vmware.0 Reconcile succeeded 2d5h
tanzu-featuregates featuregates.tanzu.vmware.com 3.1.0 Reconcile succeeded 2d5h
tkg-controller gcc.tkg.vsphere.vmware.com 3.9.0 Reconcile succeeded 2d5h
tkgs-config tkgs-config-vsphere.tanzu.vmware.com 3.1.0 Reconcile succeeded 2d5h
tkr-service tkr-service.tanzu.vmware.com 3.1.0 Reconcile succeeded 2d5h
upgrade-compatibility-service ucs.tkg.vsphere.vmware.com 3.1.0 Reconcile succeeded 2d5h
アップグレードが完了すると、TKRとしてv1.30.1が利用可能になります。
$ kubectl get tkr | grep v1.30
v1.30.1---vmware.1-fips-tkg.5 v1.30.1+vmware.1-fips-tkg.5 True True 2d5h
Tanzu Kubernetes Clusterのアップグレード
作成済みのTanzuKubernetesClusterの状態を確認すると、UPDATES AVAILABLE
としてv1.30.1
が表示されており、リソースを編集することでクラスターをアップグレードすることが可能です。
$ kubectl get tkc -n demo01
NAME CONTROL PLANE WORKER TKR NAME AGE READY TKR COMPATIBLE UPDATES AVAILABLE
tkc-cluster02 1 1 v1.29.4---vmware.3-fips.1-tkg.1 4h2m True True [v1.30.1+vmware.1-fips-tkg.5]
$ kubectl get tkc -n demo01
NAME CONTROL PLANE WORKER TKR NAME AGE READY TKR COMPATIBLE UPDATES AVAILABLE
tkc-cluster02 1 1 v1.30.1---vmware.1-fips-tkg.5 5h36m True True
まとめ
これまでのバージョンではTanzu Kubernetes Gridのバージョンを上げるには、vCenter Serverのバージョンアップが必要でしたが、vSphere 8.0u3からvCenter Server・ワークロード管理のバージョンとTanzu Kubernetes Grid Serviceのバージョンが分離されたことで、柔軟なアップグレードが可能になっています。また、3rd Partyが、スパーバイザーサービスを提供することで、vSphere IaaS Control PlaneでTKG以外のKubernetesを実行することも可能になるんじゃないかと思います。