El archivo kubeconfig predeterminado en VMware vSphere con un clúster invitado Tanzu Kubernetes contiene un token que caduca después de diez horas de forma predeterminada y muestra un mensaje de advertencia. Para evitar la advertencia, trabaje con el administrador de su infraestructura de Kubernetes para generar un archivo de configuración de TKG Cluster on Supervisor válido con un token que no caduque y que pueda utilizar durante la implementación de NSX Application Platform.

Cuando caduque el token del archivo kubeconfig predeterminado, verá el siguiente mensaje de advertencia en la interfaz de usuario de NSX Manager de NSX Application Platform.

No se puede conectar. El sistema ha encontrado un problema de conectividad debido a la caducidad de la configuración de Kubernetes. Actualice la configuración de Kubernetes para resolverlo.

La advertencia no afecta a la funcionalidad de NSX Application Platform ni a ninguna de las funciones de seguridad de NSX activadas actualmente. Sin embargo, si no reemplaza el token predeterminado diez horas después de una implementación de NSX Application Platform en el clúster invitado Tanzu Kubernetes, deberá generar un token válido (no caducado) cada vez que realice las siguientes operaciones:
  • Implementar NSX Application Platform
  • Actualizar NSX Application Platform
  • Eliminar NSX Application Platform

Para generar un archivo de configuración de TKG Cluster on Supervisor con un token que no caduque y que pueda utilizar durante la implementación de NSX Application Platform, trabaje con su administrador de la infraestructura de Kubernetes mediante el siguiente procedimiento.

Procedimiento

  1. Inicie sesión en vSphere con el clúster invitado Tanzu Kubernetes con el siguiente comando.
    kubectl vsphere login --server <supervisor-cluster_ip> -u <user> --tanzu-kubernetes-cluster-name <tkg-cluster-name> --tanzu-kubernetes-cluster-namespace <namespace>
    Los parámetros son los siguientes:
    • <supervisor-cluster_ip> es la dirección del nodo del plano de control que se puede encontrar en el vSphere Client seleccionando Administración de cargas de trabajo > Clúster supervisor.
    • <usuario> es la cuenta que tiene acceso de administrador a TKG Cluster on Supervisor.
    • <nombre-clúster-tkg> es el nombre de TKG Cluster on Supervisor.
    • <namespace> es el espacio de nombres vSphere en el que reside este clúster.
    Por ejemplo,
    kubectl vsphere login --server 192.111.33.22 -u [email protected] --tanzu-kubernetes-cluster-name napp-tkg-cluster --tanzu-kubernetes-cluster-namespace napp
  2. Ejecute cada uno de estos comandos por separado para generar una cuenta de servicio de administrador y crear un enlace de función de clúster.
    kubectl create serviceaccount napp-admin -n kube-system
    
    kubectl create clusterrolebinding napp-admin --serviceaccount=kube-system:napp-admin --clusterrole=cluster-admin
  3. (Requerido) (Para Kubernetes 1.24 y versiones posteriores) Cree manualmente el token de autenticación para la cuenta de servicio de administrador. Utilice la siguiente información.
    1. Cree un archivo YAML con una cuenta de servicio. Utilice el siguiente contenido para un archivo YAML de ejemplo denominado 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. Utilice el siguiente comando para crear el token de autenticación con una cuenta de servicio.
      kubectl apply -f <filename create above.yaml>
      Con el archivo YAML de ejemplo del paso anterior, el comando que se debe usar es el siguiente.
      kubectl apply -f napp-admin.yaml
      Se genera el secreto o el token de autenticación.
  4. Para obtener el token de autenticación para la cuenta de servicio de administrador y la entidad de certificación del clúster, ejecute los siguientes comandos por separado.
    Para Kubernetes 1.24 y versiones posteriores compatibles, utilice los siguientes comandos.
    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
    Para las versiones de Kubernetes anteriores a la 1.24 compatibles, utilice los siguientes comandos.
    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. Obtenga el clúster de TKG en la URL de supervisor. Ejecute los siguientes comandos por separado en la línea de comandos.
    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. Genere un archivo de configuración, con un token que no caduque, para TKG Cluster on Supervisor.
    TO_BE_CREATED_KUBECONFIG_FILE="<file-name>"

    El parámetro <file-name> es el nombre del archivo kubeconfig que está intentando crear.

    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. (opcional) Elimine ca.crt, que es un archivo temporal creado durante la generación del nuevo archivo kubeconfig.
  8. Utilice el archivo kubeconfig recién generado durante la implementación de NSX Application Platform.