vm.gowatana.jp

NEOにほんごVMware(仮)

Tanzu Kubernetes Grid での Tanzu CLI 実行環境の引っ越し。

VMware Tanzu Kubernetes Grid(TKG)の Management Cluster / Workload Cluster を作成した Bootstrap マシン (の OS ユーザ)以外の環境で、Tanzu CLI によるクラスタ管理を実行できるようにしてみます。

今回の内容です。

 

今回の環境

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 実行環境の引っ越しでした。