VMware Tanzu Kubernetes Grid(TKG)の Management Cluster / Workload Cluster を作成した Bootstrap マシン (の OS ユーザ)以外の環境で、Tanzu CLI によるクラスタ管理を実行できるようにしてみます。
今回の内容です。
- 今回の環境
- Management Cluster の kubeconfig の取得
- Tanzu CLI を実行環境の引越し先 準備
- Management Cluster / Workload Cluster への接続確認
今回の環境
TKG 1.6.1 の Management / Workload クラスタは、下記のように環境構築してあります。
Tanzu CLI(tanzu コマンド)は、demo-01 という OS ユーザで実行していました。
demo-01 [ ~ ]$ tanzu cluster list --include-management-cluster NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR tkg16wc01 default running 1/1 1/1 v1.23.10+vmware.1 <none> dev v1.23.10---vmware.1-tkg.1 tkg16mc01 tkg-system running 1/1 1/1 v1.23.10+vmware.1 management dev v1.23.10---vmware.1-tkg.1
tanzu config コマンドで、Management Cluster が登録されていることがわかります。この情報は、あとで実行する新規ユーザでの tanzu login コマンドでも指定します。
demo-01 [ ~ ]$ tanzu config server list NAME TYPE ENDPOINT PATH CONTEXT tkg16mc01 managementcluster /home/demo-01/.kube-tkg/config tkg16mc01-admin@tkg16mc01
今回の手順では詳細なパラメータを設定するわけではありませんが、参考情報として tanzu config get コマンドの出力も確認しておきます。
demo-01 [ ~ ]$ tanzu config get apiVersion: config.tanzu.vmware.com/v1alpha1 clientOptions: cli: bomRepo: projects.registry.vmware.com/tkg compatibilityFilePath: tkg-compatibility discoverySources: - contextType: k8s oci: image: projects.registry.vmware.com/tkg/packages/standalone-plugins:v0.25.4_vmware.1 name: default edition: tkg repositories: - gcpPluginRepository: bucketName: tanzu-cli-tkg name: core unstableVersionSelector: none features: cluster: custom-nameservers: "false" dual-stack-ipv4-primary: "false" dual-stack-ipv6-primary: "false" global: context-aware-cli-for-plugins: "true" context-target: "false" tkr-version-v1alpha3-beta: "false" management-cluster: aws-instance-types-exclude-arm: "true" custom-nameservers: "false" dual-stack-ipv4-primary: "false" dual-stack-ipv6-primary: "false" export-from-confirm: "true" import: "false" standalone-cluster-mode: "false" package: kctrl-package-command-tree: "false" contexts: - clusterOpts: context: tkg16mc01-admin@tkg16mc01 isManagementCluster: true path: /home/demo-01/.kube-tkg/config name: tkg16mc01 type: k8s current: tkg16mc01 currentContext: k8s: tkg16mc01 kind: ClientConfig metadata: creationTimestamp: null servers: - managementClusterOpts: context: tkg16mc01-admin@tkg16mc01 path: /home/demo-01/.kube-tkg/config name: tkg16mc01 type: managementcluster demo-01 [ ~ ]$
Management Cluster の kubeconfig の取得
Management Cluster に接続する kubeconfig を取得するには、自動生成される $HOME/.kube-tkg/config ファイルをコピーするか、「tanzu management-cluster kubeconfig get」コマンドに「--export-file」オプションを指定して実行します。
今回は、/home/demo-01/tkg16mc01.kubeconfig.yml ファイルとして保存します。ちなみに、management-cluster は mc に短縮できます。
demo-01 [ ~ ]$ tanzu mc kubeconfig get tkg16mc01 --admin --export-file=$HOME/tkg16mc01.kubeconfig.yml Credentials of cluster 'tkg16mc01' have been saved You can now access the cluster by running 'kubectl config use-context tkg16mc01-admin@tkg16mc01' under path '/home/demo-01/tkg16mc01.kubeconfig.yml'
Tanzu CLI を実行環境の引越し先 準備
今回は、Bootstrap マシンに新規した OS ユーザ「demo-02」で、既存の Management Cluster に接続します。
tanzu コマンドを実行する OS ユーザの作成
root ユーザにスイッチして、demo-02 ユーザを作成します。
demo-01 [ ~ ]$ su - Password: root@lab-tkg-02 [ ~ ]# useradd -m demo-02 root@lab-tkg-02 [ ~ ]# passwd demo-02 root@lab-tkg-02 [ ~ ]# id demo-02 uid=1001(demo-02) gid=100(users) groups=100(users)
Management Cluster の削除や再作成を実施する想定なら、OS ユーザを docker グループにも追加しておきます。ただし、この場合は Docker Engine がインストールされている必要があります。
root@lab-tkg-02 [ ~ ]# usermod -aG docker demo-02 root@lab-tkg-02 [ ~ ]# id demo-02 uid=1001(demo-02) gid=100(users) groups=100(users),999(docker)
kubeconfig ファイルの配置
demo-01 で取得した kubeconfig を、demo-02 がアクセスできる場所に配置します。今回は TKG Management Clusterのデフォルトのパス(/home/demo-02/.kube/config にファイルをコピーしておきます。
root@lab-tkg-02 [ ~ ]# mkdir /home/demo-02/.kube-tkg root@lab-tkg-02 [ ~ ]# cp /home/demo-01/tkg16mc01.kubeconfig.yml /home/demo-02/.kube-tkg/ root@lab-tkg-02 [ ~ ]# chown demo-02:users -R /home/demo-02/.kube-tkg
tanzu / kubectl コマンドのインストール
ここからは、demo-02 ユーザにスイッチして作業します。
demo-01 [ ~ ]$ su - demo-02
以前の Bootstrap マシンの準備と同様の手順(下記の 1-3 以降)を実施して、kubectl と tanzu コマンドをインストールしておきます。
一連の作業を実施して、demo-02 ユーザで tanzu と kubectl が実行できるようにしておきます。
demo-02 [ ~ ]$ kubectl version --short --client Client Version: v1.23.10+vmware.1 demo-02 [ ~ ]$ tanzu version version: v0.25.4 buildDate: 2022-12-22 sha: 8204f5b0d-dirty
tanzu login コマンドの実行
Management Cluster への接続情報を登録するため、tanzu login コマンドを実行します。このコマンドを実行することで、$HOME/.config/tanzu/config.yaml ファイルに Management Cluster の情報が設定されて、tanzu mc get コマンドなどでアクセスできるようになります。
demo-02 [ ~ ]$ tanzu login --name=tkg16mc01 --kubeconfig=$HOME/.kube-tkg/config --context=tkg16mc01-admin@tkg16mc01 ? successfully logged in to management cluster using the kubeconfig tkg16mc01 Checking for required plugins... Installing plugin 'cluster:v0.25.4' Installing plugin 'feature:v0.25.4' Installing plugin 'kubernetes-release:v0.25.4' Successfully installed all required plugins
あらたに cluster プラグインなどがインストールされたので、bash の TAB 補完機能を有効化している場合は、tanzu completion bash コマンドの出力を、あらためて読み込んでおきます。
demo-02 [ ~ ]$ source <(tanzu completion bash)
Management Cluster / Workload Cluster への接続確認
tanzu コマンドで、Management Cluster と Workload Cluster 両方の情報が取得できました。
demo-02 [ ~ ]$ tanzu cluster list --include-management-cluster NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR tkg16wc01 default running 1/1 1/1 v1.23.10+vmware.1 <none> dev v1.23.10---vmware.1-tkg.1 tkg16mc01 tkg-system running 1/1 1/1 v1.23.10+vmware.1 management dev v1.23.10---vmware.1-tkg.1
Workload Cluster にも、 kubeconfig を取得して kubectl を利用した接続を確認しておきます。
demo-02 [ ~ ]$ tanzu cluster kubeconfig get tkg16wc01 --admin Credentials of cluster 'tkg16wc01' have been saved You can now access the cluster by running 'kubectl config use-context tkg16wc01-admin@tkg16wc01' demo-02 [ ~ ]$ kubectl config use-context tkg16wc01-admin@tkg16wc01 Switched to context "tkg16wc01-admin@tkg16wc01". demo-02 [ ~ ]$ kubectl get nodes NAME STATUS ROLES AGE VERSION tkg16wc01-control-plane-78gjk Ready control-plane,master 24h v1.23.10+vmware.1 tkg16wc01-md-0-55b9fbdcdb-h4qp7 Ready <none> 24h v1.23.10+vmware.1
ちなみに、Kubernetes ノードの仮想マシンに SSH 接続するには、demo-01 ユーザで生成した秘密鍵($HOME/.ssh/id_rsa ファイル)も、demo-02 ユーザのアクセスできるディレクトリにコピーしておく必要があります。
以上、Tanzu CLI 実行環境の引っ越しでした。