Fare riferimento a questo esempio per eseguire il provisioning di un cluster TKGS utilizzando uno o più nomi di dominio completi (FQDN).
Supporto per il nome di dominio completo (FQDN)
È possibile utilizzare l'API v1beta1 per eseguire il provisioning di un cluster TKG con un nome di dominio completo (FQDN). L'API v1beta1 del cluster include una variabile denominata kubeAPIServerFQDNs
che contiene almeno una stringa del nome di dominio completo (FQDN) da generare nel certificato TLS per il server dell'API Kubernetes.
Quando il comando kubectl vsphere login
viene emesso per un cluster con nome di dominio completo (FQDN) configurato, il servizio di autenticazione seleziona la prima voce di nome di dominio completo (FQDN) nell'elenco e la aggiunge a kubeconfig come scelta preferita per l'interazione con il cluster. Si presuppone che il primo nome di dominio completo (FQDN) nell'elenco sia risolvibile. Non sono necessarie modifiche per l'accesso al cluster.
Il certificato dell'API Kubernetes generato includerà tutti i nomi di dominio completi (FQDN) specificati nella variabile kubeAPIServerFQDNs
. Il sistema non tenterà di utilizzare altri nomi di dominio completi (FQDN) nell'elenco oltre al primo. Il sistema non tenta di risolvere il nome di dominio completo (FQDN). Se si desidera utilizzare un altro nome di dominio completo (FQDN) nell'elenco, è possibile modificare manualmente il file kubeconfig generato e aggiungere il nome di dominio completo (FQDN) desiderato.
Requisiti del nome di dominio completo (FQDN)
L'utilizzo di un nome di dominio completo (FQDN) è facoltativo. La funzionalità non cambia se non si utilizza un nome di dominio completo (FQDN). La funzionalità descritta qui è specifica dei cluster del carico di lavoro TKG. Per utilizzare un nome di dominio completo (FQDN) con Supervisore, fare riferimento a tale argomento nella documentazione di Supervisore.
- vSphere 8.0 U2 P03 e ambienti successivi
- Supervisore aggiornato all'ultima versione della patch
- Sono supportati solo cluster dell'API v1beta1. Non è disponibile alcun supporto per i cluster dell'API v1alpha3
- DNS è configurato per risolvere il nome di dominio completo (FQDN) scelto in un indirizzo IP valido
Esempio di nome di dominio completo (FQDN)
Utilizzare l'API v1beta1 del cluster per creare un cluster con un nome di dominio completo (FQDN).
Il valore spec.topology.variables.kupeAPIServerFQDNs
è un array di nomi di dominio completi (FQDN).
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
Verifica del nome di dominio completo (FQDN)
kubeconfig
e che tutti i nomi di dominio completi (FQDN) nell'elenco delle variabili si trovino nel certificato TLS per il server dell'API Kubernetes.
- Accedere al cluster TKG utilizzando kubectl.
kubectl vsphere login --server=SVCP IP or FQDN --vsphere-username USERNAME --tanzu-kubernetes-cluster-name CLUSTER-NAME --tanzu-kubernetes-cluster-namespace VSPHERE-NS
- Per visualizzare il nome di dominio completo (FQDN) nel file
kubeconfig
.cat ~/.kube/config
- Verificare che la prima variabile FQDN nell'elenco sia inclusa in
kubeconfig
.Ad esempio: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
- Utilizzando vSphere Client, recuperare l'indirizzo IP per il cluster TKGS in .
- Creare una voce DNS manuale nel file
/etc/hosts
locale con l'indirizzo IP e il nome di dominio completo (FQDN).Ad esempio:sudo vi /etc/hosts 127.0.0.1 localhost 127.0.1.1 ubuntu-client-vm 10.199.155.77 demo.fqdn.com ...
- Utilizzare il comando
openssl s_client
per visualizzare il certificato TLS.echo | openssl s_client -servername hostname -connect FQDN:PORT 2>/dev/null | openssl x509 -text
Dove
FQDN
è il primo nell'elenco di variabili dikubeAPIServerFQDNs
.Ad esempio:echo | openssl s_client -servername hostname -connect demo.fqdn.com:6443 2>/dev/null | openssl x509 -text
- Nel campo
Subject Alternative Name
è necessario includere tutti i nomi di dominio completi (FQDN).X509v3 Subject Alternative Name: DNS:demo.fqdn.com, DNS:explore.fqdn.com, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.def
Poiché il certificato TLS per il server dell'API Kubernetes include tutti i nomi di dominio completi (FQDN) nell'elenco
kubeAPIServerFQDNs
, è possibile aggiornare manualmente il filekubeconfig
in modo che utilizzi il secondo (o il terzo e così via) nome di dominio completo (FQDN) nell'elenco e funzionerà (supponendo che sia risolvibile).