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.

Cumpla los siguientes requisitos para aprovisionar un clúster de TKG con un FQDN.
  • 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.
Importante: La función FQDN solo está disponible si se utiliza la API v1beta1 para aprovisionar un clúster de CAPI. No se puede aprovisionar un TKC mediante la API v1alpha3 con un FQDN.

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.

El sistema seleccionará el primer FQDN de la lista, que en este ejemplo es 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

Complete el siguiente procedimiento para comprobar que el primer FQDN de la lista de variables esté incluido en el archivo kubeconfig y que todos los FQDN de la lista de variables estén en el certificado TLS del servidor de API de Kubernetes.
  1. 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
  2. Puede ver el FQDN en el archivo kubeconfig.
    cat ~/.kube/config
  3. 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
    
  4. Con vSphere Client, obtenga la dirección IP del clúster de TKGS en Administración de cargas de trabajo > Espacio de nombres > Recursos informáticos > Clústeres de Tanzu Kubernetes > Dirección del plano de control.
  5. 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
    ...
  6. 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 variables kubeAPIServerFQDNs.

    Por ejemplo:
    echo | openssl s_client -servername hostname -connect demo.fqdn.com:6443 2>/dev/null | openssl x509 -text
  7. 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 archivo kubeconfig para utilizar el segundo (o tercer, etc.) FQDN en la lista y esto debería funcionar (suponiendo que se pueda resolver).