本記事は「TUNA-JP Advent Calendar 2023」の7日目のエントリとして、Tanzu Mission Controlを使ってTanzu Kubernetes GridのWorkload Clusterの初期設定を自動化する方法について紹介します。
昨年のアドベントカレンダーから引き続き、Tanzu Mission Controlネタになります。
この記事のサマリ
- Tanzu Mission ControlではTanzu Kubernetes Grid(TKG)のWorkload Clusterを新規作成することが出来ます。
- Tanzu Mission Control独自のClusterGroupという概念により、複数のClusterをグループ化することでまとめて設定することが出来ます。また、Workload Clusterを新規作成するときにClusterGroupを指定することが出来ます。
- Tanzu Mission ControlのContinuous Delivery機能を有効化すると、Gitリポジトリに格納したYAMLをもとにクラスタの構成を定義してリソースを作ることが出来ます。Cluster単位で有効化するだけでなく、ClusterGroup単位で有効化することが出来ます。
- 以上を組み合わせると、ClusterGroupでContinuous Delivery機能を有効化している場合、そのClusterGroupを指定してTanzu Kubernetes GridのWorkload Clusterを新規作成すると、作成してすぐにGitリポジトリで定義しているリソースを作らせることが出来ます。
まずはVMwareのTanzu Mission Controlとは何か?
一言でいうと、複数のKubernetesクラスタを一元的に管理できるTanzu製品です。提供形態はSaaSで略称はTMCです。
VMwareのKubernetesディストリビューションであるTanzu Kubernetes Grid(TKG)だけではなく、主要クラウドプロバイダのKubernetesクラスタも管理下に置くことが可能です。
今回の概要
① Tanzu Mission ControlでTanzu Kubernetes GridのManagement Clusterを登録(下準備)
② Tanzu Mission Control経由でTanzu Kubernetes Grid(TKG)のWorkload Clusterを作成
③ GitHubと連携したContinuous Delivery機能を用いてKubernetesのリソース作成
① Tanzu Mission ControlでTanzu Kubernetes GridのManagement Clusterを登録
まずは下準備として、Tanzu Mission ControlでTanzu Kubernetes GridのManagement Clusterを登録します。
Tanzu Mission ControlのGUIで必要なパラメータを入力すると、エージェントをインストールするためのkubectlのコマンドが生成されます。
管理対象のクラスタでCLIでkubectlコマンドを実行すると、Tanzu Mission ControlのエージェントがKubernetesのカスタムリソースとして作成されます。
Tanzu Mission Controlで登録したClusterは、CPU/メモリ消費やNodeやNamespace、Workloadリソースなどが確認できます。
② Tanzu Mission Control経由でTanzu Kubernetes Grid(TKG)のWorkload Clusterを作成
次はTanzu Kubernetes Grid(TKG)のWorkload Clusterを作成します。※赤字部分。
Tanzu Kubernetes Grid(TKG)のManagement Clusterを登録しているとWorkload Clusterを作成できます。
vSphere上でTanzu Kubernetes Gridを作成している場合は、クラスタがvSphereのどのリソースプールやデータストアを利用しているかも表示されます。
冒頭で説明した通り、Tanzu Mission Control独自の抽象化概念として、複数のClusterを1つのグループにまとめるCluster Groupがあります。※複数のNamespaceを1つのグループにまとめるWorkspaceもあります。
③ GitHubと連携したContinuous Delivery機能を用いてKubernetesのリソース作成
次はContinuous Delivery機能を有効化していきます。
具体的な有効化の方法は@ipppppeiさんの下記の記事を参照ください。
概要としては、クラスタの構成をYAMLで宣言的に定義して、Gitリポジトリに格納します。それをFlux Controllerが取得してKustomizeで同期する仕組みです。
今回はGitHubでtmc-cd-demoというNamespaceとそれに紐づいたリソースを定義します。
※画像右側です。
Tanzu Mission ControlでCD機能を有効にしてKustomizationを登録すると、Workload Clusterでtmc-cd-demoのリソースが作られます。
→CLIの1行目でnamespace:tmc-cd-demoのリソースをkubectlで表示させても何も表示されていないですが、Kustomizationを登録したあとの3行目では、GitHubで定義したnamespace:tmc-cd-demoのリソースが表示されています。
2023/1/31には、このCD機能がClusterGroupレベルで実行できるようになりました。
次はClusterGroup用にtmc-clustergroup-cd-demoのNamespaceをGitHubで定義します。
今回はtkgというClusterGroupの名称にしています。
想定通り、Namespaceを見るとtmc-clustergroup-cd-demoが作成されています。
次はClusterGroup単位でContinuous Delivery機能を有効化している状態で、そのClusterGroupを指定してTanzu Kubernetes GridのWorkload Clusterを新規作成してみます。イメージとしては下記画像です。
下記のようにTanzu Mission ControlでCD機能を有効化済みのClusterGroupを指定して、Tanzu Kubernetes GridのWorkload Clusterを作成します。
次の画面は、新しく作ったWorkload Clusterの設定をTanzu Mission Controlで見たものですが、構築してすぐに関わらず、すでにCluster Group単位のCD機能が有効化されています。
次は、新しく作ったWorkload ClusterのNamespaceの一覧を表示したものですが、tmc-clustergroup-cd-demoのNamespaceが作られています。
今回は簡単なリソースを作っただけですが、Tanzu Mission ControlのCD機能を使うことで、複数のTanzu Kubernetes Gridにまとめてリソースを作成させることや初期構築時にリソースを自動で作らせることが出来ます。
考えられるユースケース
VMwareのエッジソリューション(Edge Compute Stack)では、Tanzu Kubernetes GridとTanzu Mission Controlが使われています。多数の拠点にKubernetesを展開する際に手動でリソースの作成すると大変ですが、今回の仕組みを使うことで各種リソース作成を自動化することが出来ます。
今回のネタを書く際に参考にした記事