Consulte este ejemplo para aprovisionar un clúster de TKGS mediante uno o varios nombres de dominio completo (FQDN).
Compatibilidad con FQDN
Puede utilizar la API v1beta1 para aprovisionar un clúster de TKG con un FQDN. La API v1beta1 del clúster incluye una variable denominada kubeAPIServerFQDNs
que contiene al menos una cadena de FQDN que se generará en el certificado TLS para el servidor de API de Kubernetes.
Cuando se emite el comando kubectl vsphere login
para un clúster con el FQDN configurado, el servicio de autenticación selecciona la primera entrada de FQDN de la lista y la agrega a kubeconfig como la opción preferida para interactuar con el clúster. Se supone que el primer FQDN de la lista se puede resolver. No se requieren cambios en el inicio de sesión del clúster.
El certificado de API de Kubernetes que se genere incluirá todos los FQDN que haya especificado en la variable kubeAPIServerFQDNs
. El sistema no intentará utilizar ningún otro FQDN de la lista que no sea el primero. El sistema no intenta resolver el FQDN. Si desea utilizar un FQDN diferente de la lista, puede editar manualmente el archivo kubeconfig generado y agregar el FQDN deseado.
Requisitos de FQDN
El uso de un FQDN es opcional. La funcionalidad no cambia si no utiliza uno. La funcionalidad que se describe aquí es específica de los clústeres de carga de trabajo de TKG. Para utilizar un FQDN con Supervisor, consulte ese tema en la documentación de Supervisor.
- Use entornos vSphere 8.0 U2 P03 y versiones posteriores.
- Supervisor se actualizó a la versión de revisión más reciente.
- Solo se admiten clústeres de API v1beta1; no se admiten clústeres de API v1alpha3.
- DNS está configurado para resolver el FQDN seleccionado en una dirección IP válida.
Ejemplo de FQDN
Utilice la API v1beta1 del clúster para crear un clúster con un FQDN.
El valor spec.topology.variables.kupeAPIServerFQDNs
es una matriz de 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
Verificación de FQDN
kubeconfig
y que todos los FQDN de la lista de variables estén en el certificado TLS del servidor de API de Kubernetes.
- Inicie sesión en el clúster de TKG mediante Kubectl.
kubectl vsphere login --server=SVCP IP or FQDN --vsphere-username USERNAME --tanzu-kubernetes-cluster-name CLUSTER-NAME --tanzu-kubernetes-cluster-namespace VSPHERE-NS
- Puede ver el FQDN en el archivo
kubeconfig
.cat ~/.kube/config
- Compruebe que la primera variable FQDN de la lista esté incluida en el archivo
kubeconfig
.Por ejemplo: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
- Con vSphere Client, obtenga la dirección IP del clúster de TKGS en .
- Realice una entrada de DNS manual en el archivo
/etc/hosts
local con la dirección IP y el FQDN.Por ejemplo:sudo vi /etc/hosts 127.0.0.1 localhost 127.0.1.1 ubuntu-client-vm 10.199.155.77 demo.fqdn.com ...
- Utilice el comando
openssl s_client
para ver el certificado TLS.echo | openssl s_client -servername hostname -connect FQDN:PORT 2>/dev/null | openssl x509 -text
FQDN
es el primero en la lista de variableskubeAPIServerFQDNs
.Por ejemplo:echo | openssl s_client -servername hostname -connect demo.fqdn.com:6443 2>/dev/null | openssl x509 -text
- En el campo
Subject Alternative Name
, deben estar todos los FQDN incluidos.X509v3 Subject Alternative Name: DNS:demo.fqdn.com, DNS:explore.fqdn.com, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.def
Debido a que el certificado TLS para el servidor de API de Kubernetes incluye todos los FQDN de la lista de
kubeAPIServerFQDNs
, puede actualizar manualmente el archivokubeconfig
para utilizar el segundo (o tercer, etc.) FQDN en la lista y esto debería funcionar (suponiendo que se pueda resolver).