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.

Per eseguire il provisioning di un cluster TKG con un nome di dominio completo (FQDN), assicurarsi che siano soddisfatti i requisiti seguenti.
  • 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
Importante: La funzionalità del nome di dominio completo (FQDN) è disponibile solo se si utilizza l'API v1beta1 per eseguire il provisioning di un cluster CAPI. Non è possibile eseguire il provisioning di un TKC utilizzando l'API v1alpha3 con un nome di dominio completo (FQDN).

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).

Il sistema selezionerà il primo nome di dominio completo (FQDN) nell'elenco, che in questo esempio è 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)

Completare la procedura seguente per verificare che il primo nome di dominio completo (FQDN) nell'elenco di variabili sia incluso nel file 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.
  1. 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
  2. Per visualizzare il nome di dominio completo (FQDN) nel file kubeconfig.
    cat ~/.kube/config
  3. 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
    
  4. Utilizzando vSphere Client, recuperare l'indirizzo IP per il cluster TKGS in Gestione carico di lavoro > Spazio dei nomi > Elabora > Cluster Tanzu Kubernetes > Indirizzo piano di controllo.
  5. 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
    ...
  6. 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 di kubeAPIServerFQDNs.

    Ad esempio:
    echo | openssl s_client -servername hostname -connect demo.fqdn.com:6443 2>/dev/null | openssl x509 -text
  7. 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 file kubeconfig 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).