Tanzu Kubernetes Grid(TKG)2.4 + NSX ALB で環境構築してみます。今回は、スタンドアロンの(vSphere with Tanzu は利用しない)TKG です。
TKG 2.4 のリリースノートはこちら。
以前に投稿した TKG 2.1 と同様、用意が簡単なので古い形式の YAML ファイルをもとに Management Cluster & Workload Cluster を作成してしまいます。
今回の内容です。
今回の環境
NSX ALB は、以前の投稿で紹介したようにセットアップしておきます。
1. ソフトウェアのダウンロード
VMware Customer Connect から、TKG 関連のソフトウェアをダウンロードしておきます。
1-1. VMware Tanzu Kubernetes Grid 2.4.0
TKG 2.4 を、VMware Customer Connect からダウンロードしておきます。
今回は、Linux の Bootstrap マシンで最低限必要になるファイルをダウンロードしておきます。
Kubernetes OVAs for VMware Tanzu Kubernetes Grid 2.4.0
- Workload Cluster の Kubernetes バージョンとしては v1.25.13、v1.26.8、v1.27.5 から選択できます。しかし、Management Cluster をデプロイするには v1.27.5 の OVA が必要です。そこで、今回は、Photon v3 Kubernetes v1.27.5 OVA をダウンロードしておきます。
- ダウンロードするファイルは、photon-3-kube-v1.27.5+vmware.1-tkg.1-cac282289bb29b217b808a2b9b0c0c46.ova
- Photon OS または Ubuntu の OVA が利用できるが、今回は Photon OS のものを利用します。
ダウンロードした OVA ファイルは、vCenter Server から「photon-3-kube-v1.27.5+vmware.1」という名前でデプロイして、テンプレートに変換しておきます。
Kubectl 1.27.5 for VMware Tanzu Kubernetes Grid 2.4.0
kubectl も、Linux 用のものをダウンロードしておきます。
- ファイル名: kubectl-linux-v1.27.5+vmware.1.gz
1-2. VMware Tanzu CLI 1.1.0
Tanzu CLI は、以前は TKG のページで提供されていましたが、現在は独立したページに移動されました。
今回は Linux マシンから TKG を操作するので、「VMware Tanzu CLI for Linux」をダウンロードしておきます。
- ファイル名: tanzu-cli-linux-amd64.tar.gz
- アーカイブ ファイル名にバージョン文字列が含まれていないので、ダウンロード後に他バージョンのファイルと間違えないように要注意。
2. Bootstrap マシンでの準備
今回は、下記の投稿と同様に構築した Bootstrap マシンを使用しています。
2-1. OS 環境の準備
Management Cluster を作成するために、Photon OS のマシンで、Docker のサービスを起動してあります。
root@lab-tkg-02 [ ~ ]# cat /etc/photon-release VMware Photon OS 4.0 PHOTON_BUILD_NUMBER=2f5aad892 root@lab-tkg-02 [ ~ ]# systemctl is-active docker active
TKG を操作する OS ユーザを追加作成します。
root@lab-tkg-02 [ ~ ]# useradd -m demo-01 root@lab-tkg-02 [ ~ ]# passwd demo-01 root@lab-tkg-02 [ ~ ]# usermod -aG docker demo-01
ここからは、追加作成したユーザで作業します。
root@lab-tkg-02 [ ~ ]# su - demo-01 demo-03 [ ~ ]$
SSH 鍵のペアを作成しておきます。ここで生成された $HOME/.ssh/id_rsa.pub ファイルの内容は、あとで Management / Workload Cluster の YAML に記載するので、cat コマンドで表示しておきます。
$ ssh-keygen -P '' -f $HOME/.ssh/id_rsa $ cat $HOME/.ssh/id_rsa.pub
TKG 関連の CLI を配置するディレクトリを作成して、PATH を通しておきます。
$ mkdir $HOME/bin $ echo 'export PATH=$HOME/bin:$PATH' >> $HOME/.bash_profile $ export PATH=$HOME/bin:$PATH
Tanzu CLI と kubectl のファイルを、scp などで転送しておきます。
$ ls -1 kubectl-linux-v1.27.5+vmware.1.gz tanzu-cli-linux-amd64.tar.gz
2-2. Tanzu CLI のインストール
Tanzu CLI を展開します。
$ tar zxvf tanzu-cli-linux-amd64.tar.gz v1.1.0/ v1.1.0/tanzu-cli-linux_amd64
今回は、$HOME/bin ディレクトリにインストールします。
$ install ./v1.1.0/tanzu-cli-linux_amd64 $HOME/bin/tanzu
tanzu コマンドが実行できるようになったことを確認しておきます。
$ tanzu version version: v1.1.0 buildDate: 2023-11-01 sha: d0679f5a arch: amd64
CEIP の参加有無についての回答を、自動応答するように環境変数に格納しておきます。今回はラボ環境なので「no」にしておきます。
$ export TANZU_CLI_CEIP_OPT_IN_PROMPT_ANSWER=no
インストールできる Tanzu CLI の Plugin を確認します。
$ tanzu plugin group search -n vmware-tkg/default --show-details name: vmware-tkg/default description: Plugins for TKG latest: v2.4.0 versions: - v1.6.0 - v1.6.1 - v2.1.0 - v2.1.1 - v2.2.0 - v2.3.0 - v2.3.1 - v2.4.0
TKG 2.4.0 に対応した Plugin をインストールします。
$ tanzu plugin install --group vmware-tkg/default:v2.4.0 [i] The following plugins will be installed from plugin group 'vmware-tkg/default:v2.4.0' NAME TARGET VERSION isolated-cluster global v0.31.0 management-cluster kubernetes v0.31.0 package kubernetes v0.31.0 pinniped-auth global v0.31.0 secret kubernetes v0.31.0 telemetry kubernetes v0.31.0 [i] Installing plugin 'isolated-cluster:v0.31.0' with target 'global' [i] Installing plugin 'management-cluster:v0.31.0' with target 'kubernetes' [i] Installing plugin 'package:v0.31.0' with target 'kubernetes' [i] Installing plugin 'pinniped-auth:v0.31.0' with target 'global' [i] Installing plugin 'secret:v0.31.0' with target 'kubernetes' [i] Installing plugin 'telemetry:v0.31.0' with target 'kubernetes' [ok] successfully installed all plugins from group 'vmware-tkg/default:v2.4.0'
インストールされた Plugin を確認しておきます。
$ tanzu plugin list Standalone Plugins NAME DESCRIPTION TARGET VERSION STATUS isolated-cluster Prepopulating images/bundle for internet-restricted environments global v0.31.0 installed pinniped-auth Pinniped authentication operations (usually not directly invoked) global v0.31.0 installed telemetry configure cluster-wide settings for vmware tanzu telemetry global v1.1.0 installed management-cluster Kubernetes management cluster operations kubernetes v0.31.0 installed package Tanzu package management kubernetes v0.31.0 installed secret Tanzu secret management kubernetes v0.31.0 installed telemetry configure cluster-wide settings for vmware tanzu telemetry kubernetes v0.31.0 installed
2-3. kubectl のインストール
kubectl を展開します。
$ gunzip -k kubectl-linux-v1.27.5+vmware.1.gz
kubectl も、$HOME/bin ディレクトリにインストールします。
$ install kubectl-linux-v1.27.5+vmware.1 $HOME/bin/kubectl
kubectl が実行できるようになったことを確認しておきます。
$ kubectl version --short --client Flag --short has been deprecated, and will be removed in the future. The --short output will become the default. Client Version: v1.27.5+vmware.1 Kustomize Version: v5.0.1
これで、Tanzu CLI と kubectl インストールされました。
3. Management Cluster の作成
Management Cluster の YAML ファイルを用意して、Tanzu CLI でクラスタを作成します。
3-1. YAML ファイルの作成
Management Cluster を定義する YAML ファイルを、下記のように作成しておきます。
tkg24mc01_avi.yml
- 1~17行目: NSX ALB の設定は、旧製品名に由来する AVI_~ パラメータで指定します。
- 1行目: AVI_CA_DATA_B64 は、NSX ALB のコントローラ証明書を Base64 エンコードした文字列を記載します。
- 15行目: VMware1! を Base64 エンコードして指定しています。
- 20行目: CLUSTER_NAME には、Kubernetes クラスタの名前を指定します。
- 32~44行目: TKG を作成する vSphere 環境について指定します。このあたりの定義にあわせて、事前に vCenter インベントリ オブジェクト(リソース プールや仮想マシン フォルダなど)は作成しておく必要があります。
- 43行目: VSPHERE_SSH_AUTHORIZED_KEY には、前の手順で作成した SSH キー ペア(id_rsa.pub)ファイルの内容を記載します。
3-2. Management Cluster の作成
tanzu mc create コマンドで、Management Cluster を作成します。
$ tanzu mc create -f tkg24mc01_avi.yml
これで、しばらく待つと Management Cluster が作成されます。同時に、新しい形式の YAML が $HOME/.config/tanzu/tkg/clusterconfigs/tkg24mc01.yaml ファイルとして自動生成されるので保管しておきます。
kubeconfig を取得して、コンテキストを切り替えます。
$ tanzu mc kubeconfig get --admin Credentials of cluster 'tkg24mc01' have been saved $ kubectl config use-context tkg24mc01-admin@tkg24mc01 Switched to context "tkg24mc01-admin@tkg24mc01".
下記のように、Kubernetes クラスタのノードが作成されました。
$ kubectl get nodes NAME STATUS ROLES AGE VERSION tkg24mc01-md-0-pnc4c-5968b88964xgsk6b-wbtcd Ready <none> 57m v1.27.5+vmware.1 tkg24mc01-ql54n-kvjdj Ready control-plane 58m v1.27.5+vmware.1
Management Cluster は、tkg-system Namespace に作成されています。
$ tanzu cluster list --include-management-cluster -A NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR tkg24mc01 tkg-system running 1/1 1/1 v1.27.5+vmware.1 management dev v1.27.5---vmware.1-tkg.1
4. Workload Cluster の作成
Management Cluster と同様に、デフォルトでは Legacy 方式の YAML では Workload Cluster 作成はできないため、新しい形式の YAML に変換してクラスタを作成します。
4-1. YAML ファイルの作成
Management Cluster の YAML のうち、クラスタ名の部分のみを置き換えた Plan-based clusters の YAML を用意します。
tkg24wc01_avi.yml
- 今回は、CLUSTER_NAME と VSPHERE_FOLDER にあるクラスタ名のみを、Workload Cluster の名前に置き換えました。
この YAML ファイルで「tanzu cluster create」を実行してみると、古い形式(Legacy configuration file)であることが検知され、Workload Cluster の作成は中断されます。そして、自動的に新しい形式にコンバートされた YAML ファイルが生成されます。
$ tanzu cluster create -f tkg24wc01_avi.yml Validating configuration... TKR Version v1.27.5+vmware.1-tkg.1, Kubernetes Version v1.27.5+vmware.1 validated and configured Warning: Pinniped configuration not found; Authentication via Pinniped will not be set up in this cluster. If you wish to set up Pinniped after the cluster is created, please refer to the documentation. Skip checking VIP overlap when the VIP is empty. Cluster's endpoint VIP will be allocated by NSX ALB IPAM. Legacy configuration file detected. The inputs from said file have been converted into the new Cluster configuration as '/home/demo-01/.config/tanzu/tkg/clusterconfigs/tkg24wc01.yaml' To create a cluster with it, please use the following command together with all customized flags set in the last step. e.g. --tkr, -v tanzu cluster create --file /home/demo-01/.config/tanzu/tkg/clusterconfigs/tkg24wc01.yaml
生成された YAML ファイルを、わかりやすい名前で保存しておきます。
$ cp $HOME/.config/tanzu/tkg/clusterconfigs/tkg24wc01.yaml tkg24wc01_avi_new.yml
コンバートされた YAML の内容です。
tkg21wc01_avi_new.yml
4-2. Workload Cluster の作成
新しい形式で生成された YAML ファイルを指定して tanzu cluster create コマンドを実行すると、Workload Cluster が作成されます。
$ tanzu cluster create -f tkg24wc01_avi_new.yml Validating configuration... cluster class based input file detected, getting tkr version from input yaml input TKR Version: v1.27.5+vmware.1-tkg.1 TKR Version v1.27.5+vmware.1-tkg.1, Kubernetes Version v1.27.5+vmware.1-tkg.1 configured Warning: Pinniped configuration not found; Authentication via Pinniped will not be set up in this cluster. If you wish to set up Pinniped after the cluster is created, please refer to the documentation. Skip checking VIP overlap when the VIP is empty. Cluster's endpoint VIP will be allocated by NSX ALB IPAM. creating workload cluster 'tkg24wc01'... waiting for cluster to be initialized... [zero or multiple KCP objects found for the given cluster, 0 tkg24wc01 default, no MachineDeployment objects found for the given cluster] cluster control plane is still being initialized: ScalingUp cluster control plane is still being initialized: WaitingForKubeadmInit waiting for cluster nodes to be available... unable to get the autoscaler deployment, maybe it is not exist waiting for addons core packages installation... Workload cluster 'tkg24wc01' created
Workload Cluster が作成されたことを確認しておきます。
$ tanzu cluster list --include-management-cluster -A NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR tkg24wc01 default running 1/1 1/1 v1.27.5+vmware.1 <none> dev v1.27.5---vmware.1-tkg.1 tkg24mc01 tkg-system running 1/1 1/1 v1.27.5+vmware.1 management dev v1.27.5---vmware.1-tkg.1
Workload Cluster の kubeconfig を取得して、コンテキストを切り替えます。
$ tanzu cluster kubeconfig get tkg24wc01 --admin Credentials of cluster 'tkg24wc01' have been saved You can now access the cluster by running 'kubectl config use-context tkg24wc01-admin@tkg24wc01' $ kubectl config use-context tkg24wc01-admin@tkg24wc01 Switched to context "tkg24wc01-admin@tkg24wc01".
Workload Cluster ノードの一覧です。
$ kubectl get nodes NAME STATUS ROLES AGE VERSION tkg24wc01-md-0-mrc99-667c5b6dcbxq9dqd-w7dc4 Ready <none> 3m52s v1.27.5+vmware.1 tkg24wc01-tv6xs-l8wfz Ready control-plane 8m12s v1.27.5+vmware.1
Workload Cluster にインストールされてたパッケージの一覧です。
$ kubectl get apps -A NAMESPACE NAME DESCRIPTION SINCE-DEPLOY AGE tkg-system tkg24wc01-antrea Reconcile succeeded 2m58s 7m36s tkg-system tkg24wc01-capabilities Reconcile succeeded 3m 7m33s tkg-system tkg24wc01-load-balancer-and-ingress-service Reconcile succeeded 3m 7m33s tkg-system tkg24wc01-metrics-server Reconcile succeeded 2m59s 7m36s tkg-system tkg24wc01-pinniped Reconcile succeeded 2m58s 7m33s tkg-system tkg24wc01-secretgen-controller Reconcile succeeded 2m58s 7m35s tkg-system tkg24wc01-tkg-storageclass Reconcile succeeded 3m 7m33s tkg-system tkg24wc01-vsphere-cpi Reconcile succeeded 2m58s 7m36s tkg-system tkg24wc01-vsphere-csi Reconcile succeeded 2m59s 7m36s
以上、TKG 2.4 の環境構築でした。