Il file kubeconfig predefinito in un cluster guest VMware vSphere with Tanzu Kubernetes contiene un token che per impostazione predefinita scade dopo dieci ore e genera un messaggio di avviso. Per evitare l'avviso, collaborare con l'amministratore dell'infrastruttura Kubernetes per generare un file di configurazione del cluster TKG nel supervisore valido con un token senza scadenza, che è possibile utilizzare durante la distribuzione di NSX Application Platform.

Quando il token nel file kubeconfig predefinito scade, nell'interfaccia utente di NSX Manager viene visualizzato il seguente messaggio di avviso per NSX Application Platform.

Impossibile connettersi. Nel sistema si è verificato un problema di connettività perché la configurazione di Kubernetes è scaduta. Aggiornare la configurazione di Kubernetes per risolvere.

L'avviso non influisce sulla funzionalità di NSX Application Platform né sulle funzionalità di sicurezza NSX attualmente attivate. Tuttavia, se non si sostituisce il token predefinito dieci ore dopo una distribuzione di NSX Application Platform nel cluster guest Tanzu Kubernetes, è necessario generare un token valido (non scaduto) ogni volta che si eseguono le operazioni seguenti:
  • Distribuire NSX Application Platform
  • Aggiornamento dell' NSX Application Platform
  • Eliminazione di NSX Application Platform

Per generare un file di configurazione del cluster TKG nel supervisore con un token senza scadenza che è possibile utilizzare durante la distribuzione di NSX Application Platform , collaborare con l'amministratore dell'infrastruttura Kubernetes utilizzando la procedura seguente.

Procedura

  1. Accedere al cluster guest vSphere with Tanzu Kubernetes utilizzando il comando seguente.
    kubectl vsphere login --server <supervisor-cluster_ip> -u <user> --tanzu-kubernetes-cluster-name <tkg-cluster-name> --tanzu-kubernetes-cluster-namespace <namespace>
    I parametri sono i seguenti:
    • <supervisor-cluster_ip> è l'indirizzo del nodo del piano di controllo disponibile in vSphere Client selezionando Gestione carico di lavoro > Cluster supervisore.
    • <user> è l'account che dispone dell'accesso di amministratore al cluster TKG nel supervisore.
    • <tkg-cluster-name> è il nome del cluster TKG nel supervisore.
    • <namespace> è lo spazio dei nomi vSphere in cui si trova questo cluster.
    Ad esempio,
    kubectl vsphere login --server 192.111.33.22 -u [email protected] --tanzu-kubernetes-cluster-name napp-tkg-cluster --tanzu-kubernetes-cluster-namespace napp
  2. Eseguire ciascuno dei seguenti comandi separatamente per generare un account del servizio amministratore e creare un binding dei ruoli cluster.
    kubectl create serviceaccount napp-admin -n kube-system
    
    kubectl create clusterrolebinding napp-admin --serviceaccount=kube-system:napp-admin --clusterrole=cluster-admin
  3. (Obbligatorio) (Per Kubernetes versione 1.24 e successive) Creare manualmente il token di autenticazione per l'account del servizio amministratore. Utilizzare le informazioni seguenti.
    1. Creare un file YAML con un account del servizio. Utilizzare il contenuto seguente per un file YAML di esempio denominato napp-admin.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. Utilizzare il comando seguente per creare il token di autenticazione con un account di servizio.
      kubectl apply -f <filename create above.yaml>
      Se si utilizza il file YAML di esempio del passaggio precedente, il comando da usare è il seguente.
      kubectl apply -f napp-admin.yaml
      Viene generato il token o il segreto di autenticazione.
  4. Per ottenere il token di autenticazione per l'account del servizio di amministratore e l'autorità di certificazione del cluster, eseguire i comandi seguenti separatamente.
    Per la versione 1.24 di Kubernetes e le versioni successive supportate, utilizzare i comandi seguenti.
    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
    Per le versioni di Kubernetes supportate precedenti alla 1.24, utilizzare i comandi seguenti.
    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. Recuperare il cluster TKG nell'URL del supervisore. Eseguire i seguenti comandi separatamente al prompt dei comandi.
    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. Generare un file di configurazione, con un token senza scadenza, per il cluster TKG nel supervisore.
    TO_BE_CREATED_KUBECONFIG_FILE="<file-name>"

    Il parametro <file-name> è il nome del file kubeconfig che si sta tentando di creare.

    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. (Facoltativo) Eliminare ca.crt, che è un file temporaneo creato durante la generazione del nuovo file kubeconfig.
  8. Utilizzare il file kubeconfig appena generato durante la distribuzione di NSX Application Platform.