Reportez-vous à cet exemple pour provisionner un cluster TKGS à l'aide d'un ou de plusieurs noms de domaine complets.

Prise en charge du nom de domaine complet

Vous pouvez utiliser l'API v1beta1 pour provisionner un cluster TKG avec un nom de domaine complet. L'API Cluster v1beta1 inclut une variable nommée kubeAPIServerFQDNs qui contient au moins une chaîne de nom de domaine complet à générer dans le certificat TLS pour le serveur d'API Kubernetes.

Lorsque la commande kubectl vsphere login est émise pour un cluster avec un nom de domaine complet configuré, le service d'authentification sélectionne la première entrée de nom de domaine complet dans la liste et l'ajoute à kubeconfig comme choix préféré pour interagir avec le cluster. Il est supposé que le premier nom de domaine complet de la liste peut être résolu. Aucune modification n'est requise pour la connexion au cluster.

Le certificat de l'API Kubernetes qui est généré inclut tous les noms de domaine complets que vous avez spécifiés dans la variable kubeAPIServerFQDNs. Le système ne tentera pas d'utiliser un autre nom de domaine complet dans la liste que le premier. Le système ne tente pas de résoudre le nom de domaine complet. Si vous souhaitez utiliser un nom de domaine complet différent de la liste, vous pouvez modifier manuellement le fichier kubeconfig généré et ajouter le nom de domaine complet souhaité.

Conditions requises pour le nom de domaine complet

L'utilisation d'un nom de domaine complet est facultative. La fonctionnalité ne change pas si vous n'utilisez pas de nom de domaine complet. La fonctionnalité décrite ici est spécifique aux clusters de charges de travail TKG. Pour utiliser un nom de domaine complet avec le Superviseur, reportez-vous à cette section dans la documentation du Superviseur.

Respectez les exigences suivantes pour provisionner un cluster TKG avec un nom de domaine complet.
  • Environnements vSphere 8.0 U2 P03 et versions ultérieures.
  • Le Superviseur est mis à jour vers la dernière version de correctif.
  • Seuls les clusters d'API v1beta1 sont pris en charge ; il n'existe aucune prise en charge pour les clusters d'API v1alpha3.
  • DNS est configuré pour résoudre le nom de domaine complet choisi en une adresse IP valide.
Important : La fonctionnalité de nom de domaine complet n'est disponible que si vous utilisez l'API v1beta1 pour provisionner un cluster CAPI. Vous ne pouvez pas provisionner un TKC à l'aide de l'API v1alpha3 avec un nom de domaine complet.

Exemple de nom de domaine complet

Utilisez l'API de cluster v1beta1 pour créer un cluster basé sur un nom de domaine complet.

La valeur spec.topology.variables.kupeAPIServerFQDNs est un groupe de noms de domaines complets.

Le système sélectionnera le premier nom de domaine complet de la liste, qui, dans cet exemple, est demo.fqdn.com.
#cluster-example-fqdn.yaml
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
  name: tkg-cluster-fqdn
  namespace: tkg-ns
spec:
  clusterNetwork:
    services:
      cidrBlocks: ["198.52.100.0/12"]
    pods:
      cidrBlocks: ["192.101.2.0/16"]
    serviceDomain: "cluster.local"
  topology:
    class: tanzukubernetescluster
    version: v1.26.5+vmware.2-fips.1-tkg.1
    controlPlane:
      replicas: 3
    workers:
      machineDeployments:
        - class: node-pool
          name: node-pool-01
          replicas: 3
    variables:
      - name: vmClass
        value: guaranteed-medium
      - name: storageClass
        value: tkgs-storage-class
      - name: defaultStorageClass
        value: tkg-storage-class
      - name: kubeAPIServerFQDNs
        value:
          - demo.fqdn.com
          - explore.fqdn.com

Vérification du nom de domaine complet

Effectuez la procédure suivante pour vérifier que le premier nom de domaine complet de la liste de variables est inclus dans le fichier kubeconfig et que tous les noms de domaine complets de la liste de variables se trouvent dans le certificat TLS du serveur d'API Kubernetes.
  1. Connectez-vous à votre cluster TKG à l'aide de Kubectl.
    kubectl vsphere login --server=SVCP IP or FQDN --vsphere-username USERNAME --tanzu-kubernetes-cluster-name CLUSTER-NAME --tanzu-kubernetes-cluster-namespace VSPHERE-NS
  2. Pour afficher le nom de domaine complet dans le fichier kubeconfig.
    cat ~/.kube/config
  3. Vérifiez que la première variable de nom de domaine complet de la liste est incluse dans le fichier kubeconfig.
    Par exemple :
    apiVersion: v1
    clusters:
    - cluster:
        insecure-skip-tls-verify: false
        server: https://10.199.155.77:6443
      name: 10.199.155.77
    - cluster:
        certificate-authority-data: LS0tLS1CRUdJTiBDRVJ...DQWRLZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXc
        ...
        CkdiL1pua09rOVVjT3BwSStCTE9ZZDR0RGd2eHo...QUp0SUUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
        server: https://demo.fqdn.com:6443
      name: demo.fqdn.com
    
  4. À l'aide de vSphere Client, obtenez l'adresse IP du cluster TKGS sous Gestion de la charge de travail > Namespace > Calcul > Clusters Tanzu Kubernetes > Adresse du plan de contrôle.
  5. Créez une entrée DNS manuelle dans le fichier /etc/hosts local avec l'adresse IP et le nom de domaine complet.
    Par exemple :
    sudo vi /etc/hosts
    127.0.0.1 localhost
    127.0.1.1 ubuntu-client-vm
    10.199.155.77 demo.fqdn.com
    ...
  6. Utilisez la commande openssl s_client pour afficher le certificat TLS.
    echo | openssl s_client -servername hostname -connect FQDN:PORT 2>/dev/null | openssl x509 -text

    FQDN est le premier dans la liste de variables kubeAPIServerFQDNs.

    Par exemple :
    echo | openssl s_client -servername hostname -connect demo.fqdn.com:6443 2>/dev/null | openssl x509 -text
  7. Dans le champ Subject Alternative Name, vous devez inclure tous les noms de domaine complets.
    X509v3 Subject Alternative Name:
        DNS:demo.fqdn.com, DNS:explore.fqdn.com, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.def

    Étant donné que le certificat TLS du serveur d'API Kubernetes inclut tous les noms de domaine complets dans la liste de kubeAPIServerFQDNs, vous pouvez mettre à jour manuellement le fichier kubeconfig pour utiliser le deuxième (ou le troisième, etc.) nom de domaine complet de la liste, et il fonctionnerait (en supposant qu'il peut être résolu).