Die Standarddatei kubeconfig in einem VMware vSphere with Tanzu Kubernetes-Cluster mit Gastzugriff enthält ein Token, das standardmäßig nach zehn Stunden abläuft und zu einer Warnmeldung führt. Um die Warnung zu vermeiden, arbeiten Sie mit Ihrem Kubernetes-Infrastrukturadministrator zusammen, um eine gültige Konfigurationsdatei für den TKG-Cluster in Supervisor mit einem nicht ablaufenden Token zu generieren, das Sie während der NSX Application Platform-Bereitstellung verwenden können.
Wenn das Token in der Standarddatei kubeconfig abläuft, wird auf der NSX Manager-Benutzeroberfläche für die NSX Application Platform die folgende Warnmeldung angezeigt.
Verbindung nicht möglich. Im System ist ein Konnektivitätsproblem aufgrund des Ablaufs der Kubernetes-Konfiguration aufgetreten. Aktualisieren Sie die Kubernetes-Konfiguration, um den Fehler zu beheben.
Die Warnung wirkt sich weder auf die Funktionalität der
NSX Application Platform noch auf die derzeit aktivierten NSX-Sicherheitsfunktionen aus. Wenn Sie das Standard-Token jedoch zehn Stunden nach einer
NSX Application Platform-Bereitstellung auf dem Tanzu-Kubernetes-Cluster mit Gastzugriff nicht ersetzen, müssen Sie bei jeder Durchführung der folgenden Vorgänge ein gültiges (nicht abgelaufenes) Token generieren:
- Bereitstellen der NSX Application Platform
- Aktualisieren der NSX Application Platform
- Löschen der NSX Application Platform
Um eine Konfigurationsdatei für einen TKG-Cluster in Supervisor mit einem nicht ablaufenden Token zu generieren, das Sie während der NSX Application Platform-Bereitstellung verwenden können, wenden Sie sich mithilfe des folgenden Verfahrens an Ihren Kubernetes-Infrastrukturadministrator.
Prozedur
- Melden Sie sich mithilfe des folgenden Befehls beim vSphere with Tanzu Kubernetes-Cluster als Gast an.
kubectl vsphere login --server <supervisor-cluster_ip> -u <user> --tanzu-kubernetes-cluster-name <tkg-cluster-name> --tanzu-kubernetes-cluster-namespace <namespace>
Die Parameter lauten wie folgt:
- <supervisor-cluster_ip> ist die Knotenadresse der Steuerungsebene, auf die Sie im vSphere Client über Arbeitslastverwaltung > Supervisor-Cluster zugreifen können.
- <user> ist das Konto, das Administratorzugriff auf den TKG-Cluster in Supervisor hat.
- <tkg-cluster-name> ist der Name des TKG-Clusters in Supervisor.
- <namespace> ist der vSphere.Namespace, in dem sich dieser Cluster befindet.
Beispiel:
kubectl vsphere login --server 192.111.33.22 -u [email protected] --tanzu-kubernetes-cluster-name napp-tkg-cluster --tanzu-kubernetes-cluster-namespace napp
- Führen Sie jeden der folgenden Befehle separat aus, um ein Administratordienstkonto zu generieren und eine Clusterrollenbindung zu erstellen.
kubectl create serviceaccount napp-admin -n kube-system
kubectl create clusterrolebinding napp-admin --serviceaccount=kube-system:napp-admin --clusterrole=cluster-admin
- (Erforderlich) (Für Kubernetes Version 1.24 und höher) Erstellen Sie das Authentifizierungstoken für das Administratordienstkonto manuell. Verwenden Sie die folgenden Informationen.
- Erstellen Sie eine YAML-Datei mit einem Dienstkonto. Verwenden Sie den folgenden Inhalt für eine YAML-Beispieldatei mit dem Namen 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"
- Verwenden Sie den folgenden Befehl, um das Authentifizierungstoken mit einem Dienstkonto zu erstellen.
kubectl apply -f <filename create above.yaml>
Bei Verwendung der YAML-Beispieldatei im vorherigen Schritt lautet der zu verwendende Befehl wie folgt.
kubectl apply -f napp-admin.yaml
Das Authentifizierungstoken oder der geheime Schlüssel wird generiert.
- Um das Authentifizierungstoken für das Administratordienstkonto und die Zertifizierungsstelle des Clusters abzurufen, führen Sie die folgenden Befehle separat aus.
Verwenden Sie für unterstützte Kubernetes-Version 1.24 und höher die folgenden Befehle.
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
Verwenden Sie für unterstützte Kubernetes-Versionen vor Version 1.24 die folgenden Befehle.
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
- Rufen Sie den TKG-Cluster der Supervisor-URL ab. Führen Sie die folgenden Befehle separat an der Eingabeaufforderung aus.
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}')
- Generieren Sie eine Konfigurationsdatei mit einem nicht ablaufenden Token für den TKG-Cluster in Supervisor.
TO_BE_CREATED_KUBECONFIG_FILE="<file-name>"
Der Parameter <file-name> ist der Name der Datei kubeconfig, die Sie versuchen zu erstellen.
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
- (Optional) Löschen Sie die Datei ca.crt. Dabei handelt es sich um eine temporäre Datei, die während der Generierung der neuen Datei kubeconfig erstellt wurde.
- Verwenden Sie die neu generierte Datei kubeconfig während der NSX Application Platform-Bereitstellung.