vm.gowatana.jp

NEOにほんごVMware(仮)

Tanzu Kubernetes Grid 2.4 の環境構築。(with NSX ALB)

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)ファイルの内容を記載します。

gist.github.com

 

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 の名前に置き換えました。

gist.github.com

 

この 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

gist.github.com

 

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 の環境構築でした。