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

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

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

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

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

프로시저

  1. 다음 명령을 사용하여 vSphere with Tanzu Kubernetes 게스트 클러스터에 로그인합니다.
    kubectl vsphere login --server  "<supervisor-cluster_ip>"  -u  "<user>"  --tanzu-kubernetes-cluster-name  "<tkg-cluster-name>"  --tanzu-kubernetes-cluster-namespace  "<namespace>" 
    매개 변수는 다음과 같습니다.
    • " <supervisor-cluster_ip>" 는 워크로드 관리 > 감독자 클러스터를 선택하여 vSphere Client에서 찾을 수 있는 제어부 노드 주소입니다
    • "<user>" 는 감독자의 TKG 클러스터에 대한 관리자 액세스 권한이 있는 계정입니다.
    • "<tkg-cluster-name>" 은 감독자의 TKG 클러스터의 이름입니다.
    • "<namespace>" 는 클러스터가 상주하는 vSphere 네임스페이스입니다.
    예를 들면 다음과 같습니다.
    kubectl vsphere login --server 192.111.33.22 -u [email protected] --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. (필수 사항) (Kubernetes 버전 1.24 이상) 관리자 서비스 계정에 대한 인증 토큰을 수동으로 생성합니다. 다음 정보를 사용합니다.
    1. 서비스 계정을 사용하여 YAML 파일을 생성합니다. 이름이 napp-admin.yaml인 예제 YAML 파일에 대해 다음 컨텐츠를 사용합니다.
      apiVersion: v1
      kind: Secret
      type: kubernetes.io/service-account-token
      metadata:
         name: napp-admin
         namespace: kube-system
         annotations:
            kubernetes.io/service-account.name: "napp-admin"
    2. 다음 명령을 사용하여 서비스 계정으로 인증 토큰을 생성합니다.
      kubectl apply -f  "<filename create above.yaml>" 
      이전 단계에서 예제 YAML 파일을 사용하여 사용할 명령은 다음과 같습니다.
      kubectl apply -f napp-admin.yaml
      인증 토큰 또는 암호가 생성됩니다.
  4. 관리자 서비스 계정 및 클러스터 인증 기관에 대한 인증 토큰을 가져오려면 다음 명령을 개별적으로 실행합니다.
    지원되는 Kubernetes 버전 1.24 이상의 경우 다음 명령을 사용합니다.
    SECRET=$(kubectl get secrets napp-admin -n kube-system -ojsonpath='{.metadata.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
    버전 1.24 이전의 지원되는 Kubernetes 버전에 대해 다음 명령을 사용합니다.
    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
  5. 감독자 URL에서 TKG 클러스터를 가져옵니다. 명령 프롬프트에서 다음 명령을 개별적으로 실행합니다.
    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}')
  6. 감독자의 TKG 클러스터에 관해 만료되지 않는 토큰을 사용하여 구성 파일을 생성합니다.
    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
  7. (선택 사항) kubeconfig 파일을 생성하는 동안 생성된 임시 파일인 ca.crt를 삭제합니다.
  8. 새로 생성된 kubeconfig 파일을 NSX Application Platform 배포 중에 사용합니다.