vSphere 7.0U2でTanzu Kubernetes Grid ServiceでNSX-ALBに対応しましたが、その後リリースされたTanzu Kubernetes Grid(TKG) 1.3でも、Kubernetesクラスター向けのロードバランサーとしてNSX-ALBの利用が可能になったので、TKG 1.3でNSX-ALBを利用してみました。
TKG 1.3 + NSX-ALBを利用するための要件
Docker
ブートストラップノードとしてLinuxを利用しました。ブートストラップノードではkindを利用してManagement Clusterを作成するため、dockerがインストールされている必要があります。
OVAのインポートとテンプレート化
VMwareが提供するTKG向けのOVAをvSphere環境にインポートして、テンプレート化しておきます。vSphere向けにはPhotonとUbuntuのテンプレートが提供されています。デフォルトではUbuntuが利用されますが、Photonのほうがサイズが小さいのでクラスタ作成を少しでも高速化したい場合は、Photonを利用するのが良いでしょう。Managemet Cluster向けにはv1.20.4が利用されます。
- photon-3-kube-v1.20.4-vmware.1-tkg.0-2326554155028348692.ova
- ubuntu-2004-kube-v1.20.4-vmware.1-tkg.0-16153464878630780629.ova
NSX-ALB Controllerとネットワーク
Kubernetesノードが接続されるネットワークと、NSX-ALBがロードバランサー用のVIPを利用するネットワークを分離する必要があります。Kubernetesノードが接続されるネットワークでは、ノードプロビジョニング時にDHCPサーバーが必要となります。
NSX-ALBはcontrollerの要件はこちら(AKO : Avi Kubernetes Operator)とほぼ同じです。
- Controller OVAのデプロイ
- CloudとしてvSphere環境を登録
- IPAM Profileの作成してCloudに設定
- Management NetworkでSEが利用するポートグループとIP Addressプールを指定
- NetworksとしてVIPネットワーク用のポートグループにIP Adressプールを指定
- SANを指定してControllerの証明書を再作成
Tanzu CLIのセットアップ
TKG 1.2まではtkgコマンドでManagement ClusterやTKCを作成していましたが、TKG 1.3からtanzuコマンドに変更されています。ブートストラップノードにtanzu CLIをインストールします。
$ cd $HOME
$ mkdir tanzu
$ tar xvf tanzu-cli-bundle-linux-amd64.tar -C tanzu/
$ cd tanzu/cli/
$ sudo install core/v1.3.0/tanzu-core-linux_amd64 /usr/local/bin/tanzu
tanzu CLIはプラグイン機構になっているので、tanzu-cli-bundleに含まれているプラグインを全て追加します。(プラグインの実体は$HOME/tanzu/cli
配下にあります。)
Management Clusterの準備
vSphere環境にManagement Clsuterを作成します。tanzuコマンドに--ui
オプションを付けるとGUI経由で各種パラメータを入力することができますが、各種パラメータを設定ファイルとして作成し、Management Clusterを構築することも可能です。
設定ファイルの作成
Management Clusterを構築するために必要なパラメータをmanagement-cluster.yaml
として作成します。vCenterへのアクセス情報や、Management ClusterのAPIに利用するIPアドレス(VSPHERE_CONTROL_PLANE_ENDPOINT
)を指定します。
#! ---------------------------------------------------------------------
#! Basic cluster creation configuration
#! ---------------------------------------------------------------------
CLUSTER_NAME: mgmt
CLUSTER_PLAN: dev
INFRASTRUCTURE_PROVIDER: vsphere
ENABLE_CEIP_PARTICIPATION: true
ENABLE_AUDIT_LOGGING: true
CLUSTER_CIDR: 100.96.0.0/11
SERVICE_CIDR: 100.64.0.0/13
#! ---------------------------------------------------------------------
#! vSphere configuration
#! ---------------------------------------------------------------------
VSPHERE_SERVER: vcenter.example.com
VSPHERE_USERNAME: administrator@vsphere.local
VSPHERE_PASSWORD: password
VSPHERE_DATACENTER: /Datacenter
VSPHERE_RESOURCE_POOL: /Datacenter/host/Cluster
VSPHERE_DATASTORE: /Datacenter/datastore/Datastore
VSPHERE_FOLDER: /Datacenter/vm
VSPHERE_NETWORK: wld
VSPHERE_CONTROL_PLANE_ENDPOINT: 192.168.15.100
VIP_NETWORK_INTERFACE: "eth0"
VSPHERE_SSH_AUTHORIZED_KEY: ssh-rsa AAAAB3NzaC....
VSPHERE_STORAGE_POLICY_ID: "tkg"
VSPHERE_INSECURE: true
DEPLOY_TKG_ON_VSPHERE7: true
ENABLE_TKGS_ON_VSPHERE7: false
#! ---------------------------------------------------------------------
#! Node configuration
#! ---------------------------------------------------------------------
SIZE: small
OS_NAME: "photon"
#! ---------------------------------------------------------------------
#! Machine Health Check configuration
#! ---------------------------------------------------------------------
ENABLE_MHC: true
MHC_UNKNOWN_STATUS_TIMEOUT: 5m
MHC_FALSE_STATUS_TIMEOUT: 12m
クラスターに対する認証にPinnipedを利用する場合、OIDCもしくはLDAPの設定を指定します。以下はLDAPの設定例です。(LDAP_HOSTへの接続はLDAPSが利用されます。)
#! ---------------------------------------------------------------------
#! Identity management configuration
#! ---------------------------------------------------------------------
IDENTITY_MANAGEMENT_TYPE: "ldap"
LDAP_BIND_DN: "administrator@example.com"
LDAP_BIND_PASSWORD: "password"
LDAP_HOST: 10.44.59.1:686
LDAP_USER_SEARCH_BASE_DN: cn=users,dc=example,dc=com
LDAP_USER_SEARCH_FILTER:
LDAP_USER_SEARCH_USERNAME: sAMAccountName
LDAP_USER_SEARCH_ID_ATTRIBUTE: sAMAccountName
LDAP_USER_SEARCH_EMAIL_ATTRIBUTE: mail
LDAP_USER_SEARCH_NAME_ATTRIBUTE: cn
LDAP_GROUP_SEARCH_BASE_DN: cn=users,dc=example,dc=com
LDAP_GROUP_SEARCH_FILTER:
LDAP_GROUP_SEARCH_USER_ATTRIBUTE: dn
LDAP_GROUP_SEARCH_GROUP_ATTRIBUTE:
LDAP_GROUP_SEARCH_NAME_ATTRIBUTE: cn
NSX-ALBを利用するためにNSX-ALBのControllerへの接続情報やポートグループを指定します。AVI_CA_DATA_B64
の値にはControllerの証明書をbase64エンコードしたものを設定します。この証明書はAVI_CONTROLLER
の値がSAN(Subject Alternative Name)として指定されている必要があります。
#! ---------------------------------------------------------------------
#! NSX Advanced Load Balancer configuration
#! ---------------------------------------------------------------------
AVI_ENABLE: true
AVI_NAMESPACE: "tkg-system-networking"
AVI_DISABLE_INGRESS_CLASS: true
AVI_AKO_IMAGE_PULL_POLICY: IfNotPresent
AVI_ADMIN_CREDENTIAL_NAME: avi-controller-credentials
AVI_CA_NAME: avi-controller-ca
AVI_CONTROLLER: 192.168.11.2
AVI_USERNAME: "admin"
AVI_PASSWORD: "password"
AVI_CLOUD_NAME: "Default-Cloud"
AVI_SERVICE_ENGINE_GROUP: "Default-Group"
AVI_DATA_NETWORK: "wld"
AVI_DATA_NETWORK_CIDR: "192.168.15.0/24"
AVI_CA_DATA_B64: "...."
AVI_LABELS: ""
Management Clusterの作成
上記設定ファイル(management-cluster.yaml)を指定して、tanzu management-cluster create
コマンドを利用してクラスターを作成します。このときtanzuコマンドを実行したノードのdockerでkindを利用してManagement Clusterが構成されます。
$ tanzu management-cluster create -f management-cluster.yaml
Validating the pre-requisites...
vSphere 7.0 Environment Detected.
You have connected to a vSphere 7.0 environment which does not have vSphere with Tanzu enabled. vSphere with Tanzu includes
an integrated Tanzu Kubernetes Grid Service which turns a vSphere cluster into a platform for running Kubernetes workloads in dedicated
resource pools. Configuring Tanzu Kubernetes Grid Service is done through vSphere HTML5 client.
Tanzu Kubernetes Grid Service is the preferred way to consume Tanzu Kubernetes Grid in vSphere 7.0 environments. Alternatively you may
deploy a non-integrated Tanzu Kubernetes Grid instance on vSphere 7.0.
Deploying TKG management cluster on vSphere 7.0 ...
Setting up management cluster...
Validating configuration...
Using infrastructure provider vsphere:v0.7.6
Generating cluster configuration...
Setting up bootstrapper...
Bootstrapper created. Kubeconfig: /home/nos/.kube-tkg/tmp/config_fw3lW624
Installing providers on bootstrapper...
Fetching providers
Installing cert-manager Version="v0.16.1"
Waiting for cert-manager to be available...
Installing Provider="cluster-api" Version="v0.3.14" TargetNamespace="capi-system"
Installing Provider="bootstrap-kubeadm" Version="v0.3.14" TargetNamespace="capi-kubeadm-bootstrap-system"
Installing Provider="control-plane-kubeadm" Version="v0.3.14" TargetNamespace="capi-kubeadm-control-plane-system"
Installing Provider="infrastructure-vsphere" Version="v0.7.6" TargetNamespace="capv-system"
Start creating management cluster...
Saving management cluster kubeconfig into /home/nos/.kube/config
Installing providers on management cluster...
Fetching providers
Installing cert-manager Version="v0.16.1"
Waiting for cert-manager to be available...
Installing Provider="cluster-api" Version="v0.3.14" TargetNamespace="capi-system"
Installing Provider="bootstrap-kubeadm" Version="v0.3.14" TargetNamespace="capi-kubeadm-bootstrap-system"
Installing Provider="control-plane-kubeadm" Version="v0.3.14" TargetNamespace="capi-kubeadm-control-plane-system"
Installing Provider="infrastructure-vsphere" Version="v0.7.6" TargetNamespace="capv-system"
Waiting for the management cluster to get ready for move...
Waiting for addons installation...
Moving all Cluster API objects from bootstrap cluster to management cluster...
Performing move...
Discovering Cluster API objects
Moving Cluster API objects Clusters=1
Creating objects in the target cluster
Deleting objects from the source cluster
Context set for management cluster mgmt as 'mgmt-admin@mgmt'.
Management cluster created!
You can now create your first workload cluster by running the following:
tanzu cluster create [name] -f [file]
Management Clusterの状態確認
vCenter上にはManagement ClusterのVMが作成されています。OS_NAME: "photon"
としたので、Management ClusterはPhotonイメージを利用して作成されます。
SIZE: small
としたので、MasterとWorkerがそれぞれ1台で構成されます。
tanzu CLIでManagement Clusterの状態を確認することが可能です。
$ tanzu management-cluster get
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES
mgmt tkg-system running 1/1 1/1 v1.20.4+vmware.1 management
Details:
NAME READY SEVERITY REASON SINCE MESSAGE
/mgmt True 4s
├─ClusterInfrastructure - VSphereCluster/mgmt True 9s
├─ControlPlane - KubeadmControlPlane/mgmt-control-plane True 4s
│ └─Machine/mgmt-control-plane-4dcbv True 6s
└─Workers
└─MachineDeployment/mgmt-md-0
└─Machine/mgmt-md-0-7d4759ff6-zzdfk False Info WaitingForClusterInfrastructure 9s
Providers:
NAMESPACE NAME TYPE PROVIDERNAME VERSION WATCHNAMESPACE
capi-kubeadm-bootstrap-system bootstrap-kubeadm BootstrapProvider kubeadm v0.3.14
capi-kubeadm-control-plane-system control-plane-kubeadm ControlPlaneProvider kubeadm v0.3.14
capi-system cluster-api CoreProvider cluster-api v0.3.14
capv-system infrastructure-vsphere InfrastructureProvider vsphere v0.7.6
Management Cluster用のContextを指定してManagement Clusterを確認します。
$ kubectl config use-context mgmt-admin@mgmt
Switched to context "mgmt-admin@mgmt".
$ kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
mgmt-control-plane-4dcbv Ready control-plane,master 8m29s v1.20.4+vmware.1 192.168.11.111 192.168.11.111 VMware Photon OS/Linux 4.19.174-5.ph3 containerd://1.4.3
mgmt-md-0-7d4759ff6-zzdfk Ready <none> 3m17s v1.20.4+vmware.1 192.168.11.114 192.168.11.114 VMware Photon OS/Linux 4.19.174-5.ph3 containerd://1.4.3
Management Cluster内はCluster APIが構成され、NSX-ALBを利用するためのAKOや認証用のPinnipedなどが実行されています。
$ kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
capi-kubeadm-bootstrap-system capi-kubeadm-bootstrap-controller-manager-5bdd64499b-4wmr9 2/2 Running 0 4m2s
capi-kubeadm-control-plane-system capi-kubeadm-control-plane-controller-manager-7f89b8594d-pjhdr 2/2 Running 0 3m58s
capi-system capi-controller-manager-c4f5f9c76-sktgx 2/2 Running 0 4m7s
capi-webhook-system capi-controller-manager-768b989cbc-msrsq 2/2 Running 0 4m11s
capi-webhook-system capi-kubeadm-bootstrap-controller-manager-67444bbcc9-6dsr2 2/2 Running 0 4m5s
capi-webhook-system capi-kubeadm-control-plane-controller-manager-5466b4d4d6-62fs2 2/2 Running 0 4m
capi-webhook-system capv-controller-manager-7cb98c468d-xpj5d 2/2 Running 0 3m55s
capv-system capv-controller-manager-767cc6b6bf-7brx4 2/2 Running 0 3m51s
cert-manager cert-manager-6cbfc68c4b-2hnjp 1/1 Running 0 9m40s
cert-manager cert-manager-cainjector-796775c48f-vwqxd 1/1 Running 0 9m40s
cert-manager cert-manager-webhook-7646d5bc94-sf527 1/1 Running 0 9m40s
kube-system antrea-agent-lwksj 2/2 Running 0 9m22s
kube-system antrea-agent-zx5km 2/2 Running 0 5m12s
kube-system antrea-controller-58b6b4d7dc-cs6hq 1/1 Running 0 9m22s
kube-system coredns-68d49685bd-6ck5s 1/1 Running 0 10m
kube-system coredns-68d49685bd-826zr 1/1 Running 0 10m
kube-system etcd-mgmt-control-plane-4dcbv 1/1 Running 0 10m
kube-system kube-apiserver-mgmt-control-plane-4dcbv 1/1 Running 0 10m
kube-system kube-controller-manager-mgmt-control-plane-4dcbv 1/1 Running 0 10m
kube-system kube-proxy-4lkmq 1/1 Running 0 10m
kube-system kube-proxy-dgzb7 1/1 Running 0 5m12s
kube-system kube-scheduler-mgmt-control-plane-4dcbv 1/1 Running 0 10m
kube-system kube-vip-mgmt-control-plane-4dcbv 1/1 Running 0 10m
kube-system metrics-server-8499864cb4-nq7tv 1/1 Running 0 2m
kube-system vsphere-cloud-controller-manager-ct26h 1/1 Running 0 15s
kube-system vsphere-csi-controller-79485776c9-4dkgk 5/5 Running 0 69s
kube-system vsphere-csi-node-5788m 3/3 Running 0 69s
kube-system vsphere-csi-node-jbz5q 3/3 Running 0 69s
pinniped-concierge pinniped-concierge-6d5d7b6cff-5nvlt 1/1 Running 0 2m2s
pinniped-concierge pinniped-concierge-6d5d7b6cff-6l6dr 1/1 Running 0 2m2s
pinniped-concierge pinniped-concierge-kube-cert-agent-d38c36a7 1/1 Running 0 93s
pinniped-supervisor pinniped-post-deploy-job-ver-1-96kk8 0/1 Completed 0 2m2s
pinniped-supervisor pinniped-supervisor-746695b648-k9clf 1/1 Running 0 64s
pinniped-supervisor pinniped-supervisor-746695b648-m9c2s 1/1 Running 0 64s
tanzu-system-auth dex-5db8466865-dzsq4 1/1 Running 0 58s
tkg-system-networking ako-operator-controller-manager-7bf844694d-72b69 2/2 Running 0 10m
tkg-system kapp-controller-5b845bdfdd-nxvrs 1/1 Running 0 10m
tkg-system tanzu-addons-controller-manager-6d56c59d4-h5hp6 1/1 Running 6 9m25s
tkr-system tkr-controller-manager-f7bbb4bd4-8btc4 1/1 Running 0 10m
Tanzu Kubernetes Clusterの作成
設定ファイルの作成
Tanzu Kubernetes Clusterも設定ファイルに基づいて作成されます。(TKG 1.2まではtkg CLIの引数だけでクラスターを作成することが可能でしたが、TKG 1.3のtanzu CLIでは設定ファイルを利用してクラスターを作成する必要があります)設定ファイルはManagement Cluster向けのものと似ていますが、一部のパラメータはTKCに対応していません。(Tanzu CLI Configuration File Variable Reference)
Management Clusterと同じく、VSPHERE_CONTROL_PLANE_ENDPOINT
に対してIPアドレスを指定します。このアドレスはkube-vipにより利用され、Kubernetes APIのIPアドレスとして機能します。
#! ---------------------------------------------------------------------
#! Basic cluster creation configuration
#! ---------------------------------------------------------------------
CLUSTER_NAME: cl01
CLUSTER_PLAN: dev
INFRASTRUCTURE_PROVIDER: vsphere
ENABLE_CEIP_PARTICIPATION: true
ENABLE_AUDIT_LOGGING: true
CLUSTER_CIDR: 100.96.0.0/11
SERVICE_CIDR: 100.64.0.0/13
#! ---------------------------------------------------------------------
#! vSphere configuration
#! ---------------------------------------------------------------------
VSPHERE_SERVER: vcenter.example.com
VSPHERE_USERNAME: administrator@vsphere.local
VSPHERE_PASSWORD: password
VSPHERE_DATACENTER: /Datacenter
VSPHERE_RESOURCE_POOL: /Datacenter/host/Cluster
VSPHERE_DATASTORE: /Datacenter/datastore/Datastore
VSPHERE_FOLDER: /Datacenter/vm
VSPHERE_NETWORK: wld
VSPHERE_CONTROL_PLANE_ENDPOINT: 192.168.15.99
VIP_NETWORK_INTERFACE: "eth0"
VSPHERE_SSH_AUTHORIZED_KEY: ssh-rsa AAAAB3NzaC....
VSPHERE_STORAGE_POLICY_ID: "tkg"
VSPHERE_TLS_THUMBPRINT:
VSPHERE_INSECURE: true
DEPLOY_TKG_ON_VSPHERE7: true
ENABLE_TKGS_ON_VSPHERE7: false
#! ---------------------------------------------------------------------
#! Node configuration
#! ---------------------------------------------------------------------
SIZE: small
OS_NAME: "photon"
#! ---------------------------------------------------------------------
#! Machine Health Check configuration
#! ---------------------------------------------------------------------
ENABLE_MHC: true
MHC_UNKNOWN_STATUS_TIMEOUT: 5m
MHC_FALSE_STATUS_TIMEOUT: 12m
Tanzu Kubernetes Clusterの作成
上記設定ファイル(c1.yaml)を指定して、tanzu cluster create
コマンドを利用してTanzu Kubernetes Clusterを作成します。コマンドを実行すると、Management ClusterのCluster APIがvSphere上にKubernetesクラスターをプロビジョニングします。
$ tanzu cluster create cl1 -f cl1.yaml
Validating configuration...
Creating workload cluster 'cl1'...
Waiting for cluster to be initialized...
Waiting for cluster nodes to be available...
Waiting for addons installation...
Workload cluster 'cl1' created
$ tanzu cluster list
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN
cl1 default running 1/1 1/1 v1.20.4+vmware.1 <none> dev
$ tanzu cluster get cl1
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES
cl1 default running 1/1 1/1 v1.20.4+vmware.1 <none>
ℹ
Details:
NAME READY SEVERITY REASON SINCE MESSAGE
/cl1 True 10m
├─ClusterInfrastructure - VSphereCluster/cl1 True 16m
├─ControlPlane - KubeadmControlPlane/cl1-control-plane True 10m
│ └─Machine/cl1-control-plane-ckctq True 11m
└─Workers
└─MachineDeployment/cl1-md-0
└─Machine/cl1-md-0-76db8d75b7-bc2tk True 4m43s
Tanzu Kubernetres Clusterを構成するControlPlane/Worker VMが作成されます。cl1.yamlでもOS_NAME: "photon"
としたので、TKCもPhotonイメージを利用して作成されます。
Tanzu Kubernetes Clusterへの接続
tanzu kubeconfig get CLUSTER_NAME --admin
コマンドで作成したTKCのkubeconfigをContextに追加することが可能です。追加したContextに切り替えてクラスターに接続します。
$ tanzu cluster kubeconfig get cl1 --admin
Credentials of workload cluster 'cl1' have been saved
You can now access the cluster by running 'kubectl config use-context cl1-admin@cl1'
$ kubectl config use-context cl1-admin@cl1
Switched to context "cl1-admin@cl1".
kubectl config use-context cl1-admin@cl1
Switched to context "cl1-admin@cl1".
$ kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
mgmt-control-plane-4dcbv Ready control-plane,master 28m v1.20.4+vmware.1 192.168.11.111 192.168.11.111 VMware Photon OS/Linux 4.19.174-5.ph3 containerd://1.4.3
mgmt-md-0-7d4759ff6-zzdfk Ready <none> 22m v1.20.4+vmware.1 192.168.11.114 192.168.11.114 VMware Photon OS/Linux 4.19.174-5.ph3 containerd://1.4.3
Tanzu Kubernetes Clusterの利用
クラスターにDeploymentを作成し、LoadBalancer Serviceとして公開してみます。
$ kubectl create deploy nginx --image=nginxdemos/hello
deployment.apps/nginx created
$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-744698654f-k2wrv 1/1 Running 0 23s 100.96.1.6 cl1-md-0-76db8d75b7-bc2tk <none> <none>
$ kubectl expose deploy nginx --port=80 --type=LoadBalancer
service/nginx exposed
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 100.64.0.1 <none> 443/TCP 17m
nginx LoadBalancer 100.65.79.125 192.168.15.1 80:31742/TCP 3s
LoadBalancer Serviceを作成したタイミングで、EXTERNAL-IPが割り当てられ、NSX-ALBで2台のSE(Service Engine)のプロビジョニングが開始されます。
しばらくして、SEの作成が完了するとEXTERNAL-IP経由でPodにアクセスすることが可能です。
Pinnpiedによるログイン
ブートストラップノード以外からtanzu CLIを利用する場合、Pinnpiedを利用してOIDCもしくはLDAPユーザーでログインすることが可能です。ブートストラップノードから、Management ClusterとTKCに対して、ログインユーザー向けのClusterRoleBiindingを作成しておきます。
$ kubectl config use-context cl1-admin@cl1
Switched to context "cl1-admin@cl1".
$ kubectl create clusterrolebinding id-mgmt-rb --clusterrole cluster-admin --user masanara
clusterrolebinding.rbac.authorization.k8s.io/id-mgmt-rb created
$ kubectl config use-context mgmt-admin@mgmt
Switched to context "mgmt-admin@mgmt".
$ kubectl create clusterrolebinding id-mgmt-rb --clusterrole cluster-admin --user masanara
clusterrolebinding.rbac.authorization.k8s.io/id-mgmt-rb created
外部のホストにtanzu CLIとkubectlをインストールして、Management Clusterにアクセスしてみます。
C:\> tanzu login --endpoint "https://192.168.15.100:6443" --name tkg
tanzu login
のエンドポイントとしてManagement ClusterのControl Planeアドレスを指定すると、Management ClsuterのDexにリダイレクトされ、LDAPの認証情報を入力します。
LDAPユーザー名・パスワードを入力し、「you have been logged in and may now close this tab」と表示されたらブラウザを閉じてコマンドプロンプトに戻ります。
ログインが完了するため、クラスター一覧を確認できます。
C:\> tanzu login --endpoint "https://192.168.15.100:6443" --name tkg
✔ successfully logged in to management cluster using the kubeconfig tkg
C:\>tanzu cluster list
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN
cl1 default running 1/1 1/1 v1.20.4+vmware.1 <none> dev
クラスターのkubeconfigを取得し、Contextを切り替えるとTKCにアクセス可能です。
C:\>tanzu cluster kubeconfig get cl1
↳ You can now access the cluster by running 'kubectl config use-context tanzu-cli-cl1@cl1'
C:\>kubectl config use-context tanzu-cli-cl1@cl1
Switched to context "tanzu-cli-cl1@cl1".
C:\>kubectl get node
NAME STATUS ROLES AGE VERSION
cl1-control-plane-ckctq Ready control-plane,master 66m v1.20.4+vmware.1
cl1-md-0-76db8d75b7-bc2tk Ready <none> 61m v1.20.4+vmware.1