VMware vSphere with Tanzu Guest Kubernetes Cluster의 기본 kubeconfig 파일에는 기본적으로 10시간 후에 만료되는 토큰이 포함되어 있고 경고 메시지가 표시됩니다. 경고를 표시하지 않으려면 kubernetes 인프라 관리자와 협력하여 NSX Application Platform 배포 중에 사용할 수 있는 만료되지 않는 토큰을 사용하여 유효한 Tanzu Kubernetes Cluster 구성 파일을 생성합니다.

기본 kubeconfig 파일의 토큰이 만료되면 NSX Application Platform에 대한 NSX Manager UI에 다음과 같은 경고 메시지가 표시됩니다.

연결할 수 없습니다. Kubernetes 구성 만료로 인해 시스템에 연결 문제가 발생했습니다. 해결하려면 Kubernetes 구성을 업데이트하십시오.

이 경고는 NSX Application Platform 기능이나 현재 활성화된 NSX 보안 기능에는 영향을 주지 않습니다. 그러나 Tanzu Guest Kubernetes Cluster에 NSX Application Platform을 배포한 후 10시간 후에 기본 토큰을 교체하지 않으면 다음 작업을 수행할 때마다 유효한(만료되지 않은) 토큰을 생성해야 합니다.
  • NSX Application Platform 배포
  • NSX Application Platform 업그레이드
  • NSX Application Platform 삭제

NSX Application Platform 배포 중에 사용할 수 있는 만료되지 않는 토큰을 사용하여 Tanzu Kubernetes Cluster 구성 파일을 생성하려면 다음 절차를 사용하여 Kubernetes 인프라 관리자와 협력합니다.

프로시저

  1. 다음 명령을 사용하여 vSphere with Tanzu Guest Kubernetes Cluster에 로그인합니다.
    kubectl vsphere login --server  "<supervisor-cluster_ip>"  -u  "<user>"  --tanzu-kubernetes-cluster-name  "<tk-cluster-name>"  --tanzu-kubernetes-cluster-namespace  "<namespace>" 
    매개 변수는 다음과 같습니다.
    • " <supervisor-cluster_ip>" 는 워크로드 관리 > 감독자 클러스터를 선택하여 vSphere Client에서 찾을 수 있는 제어부 노드 주소입니다
    • "<user>" 는 Tanzu Kubernetes 클러스터에 대한 관리자 액세스 권한이 있는 계정입니다.
    • "<tk-cluster-name>" 은 Tanzu Kubernetes 클러스터의 이름입니다.
    • "<namespace>" 는 클러스터가 상주하는 vSphere 네임스페이스입니다.
    예를 들면 다음과 같습니다.
    kubectl vsphere login --server 192.111.33.22 -u administrator@vsphere.local --tanzu-kubernetes-cluster-name napp-tkg-cluster --tanzu-kubernetes-cluster-namespace napp
  2. 다음 명령을 개별적으로 실행하여 관리자 서비스 계정을 생성하고 클러스터 역할 바인딩을 생성합니다.
    kubectl create serviceaccount napp-admin -n kube-system
    
    kubectl create clusterrolebinding napp-admin --serviceaccount=kube-system:napp-admin --clusterrole=cluster-admin
  3. 관리자 서비스 계정 및 클러스터 인증 기관에 대한 인증 토큰을 가져오려면 다음 명령을 개별적으로 실행합니다.
    SECRET=$(kubectl get serviceaccount napp-admin -n kube-system -ojsonpath='{.secrets[].name}')
    
    TOKEN=$(kubectl get secret $SECRET -n kube-system -ojsonpath='{.data.token}' | base64 -d)
    
    kubectl get secrets $SECRET -n kube-system -o jsonpath='{.data.ca\.crt}' | base64 -d > ./ca.crt
  4. Tanzu Kubernetes 클러스터 URL을 가져옵니다. 명령 프롬프트에서 다음 명령을 개별적으로 실행합니다.
    CONTEXT=$(kubectl config view -o jsonpath='{.current-context}')
    
    CLUSTER=$(kubectl config view -o jsonpath='{.contexts[?(@.name == "'"$CONTEXT"'")].context.cluster}')
    
    URL=$(kubectl config view -o jsonpath='{.clusters[?(@.name == "'"$CLUSTER"'")].cluster.server}')
  5. Tanzu Kubernetes 클러스터에 관해 만료될 수 없는 토큰을 사용하여 구성 파일을 생성합니다.
    TO_BE_CREATED_KUBECONFIG_FILE=" "<file-name>" "

    "<file-name>" 매개 변수는 생성하려는 kubeconfig 파일의 이름입니다.

    kubectl config --kubeconfig=$TO_BE_CREATED_KUBECONFIG_FILE set-cluster $CLUSTER --server=$URL --certificate-authority=./ca.crt --embed-certs=true
    
    kubectl config --kubeconfig=$TO_BE_CREATED_KUBECONFIG_FILE set-credentials napp-admin --token=$TOKEN 
    
    kubectl config --kubeconfig=$TO_BE_CREATED_KUBECONFIG_FILE set-context $CONTEXT --cluster=$CLUSTER --user=napp-admin
    
    kubectl config --kubeconfig=$TO_BE_CREATED_KUBECONFIG_FILE use-context $CONTEXT
  6. (선택 사항) kubeconfig 파일을 생성하는 동안 생성된 임시 파일인 ca.crt를 삭제합니다.
  7. 새로 생성된 kubeconfig 파일을 NSX Application Platform 배포 중에 사용합니다.