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.
- 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.
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.
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
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.
- 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
- Pour afficher le nom de domaine complet dans le fichier
kubeconfig
.cat ~/.kube/config
- 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
- À l'aide de vSphere Client, obtenez l'adresse IP du cluster TKGS sous .
- 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 ...
- 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
Où
FQDN
est le premier dans la liste de variableskubeAPIServerFQDNs
.Par exemple :echo | openssl s_client -servername hostname -connect demo.fqdn.com:6443 2>/dev/null | openssl x509 -text
- 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 fichierkubeconfig
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).