하나 이상의 FQDN(정규화된 도메인 이름)을 사용하여 TKGS 클러스터를 프로비저닝하려면 이 예를 참조하십시오.

FQDN 지원

v1beta1 API를 사용하여 FQDN(정규화된 도메인 이름)으로 TKG 클러스터를 프로비저닝할 수 있습니다. Cluster v1beta1 API에는 Kubernetes API 서버에 대한 TLS 인증서에 생성할 하나 이상의 FQDN 문자열이 포함된 kubeAPIServerFQDNs라는 변수가 포함되어 있습니다.

FQDN이 구성된 클러스터에 대해 kubectl vsphere login 명령이 실행되면 인증 서비스는 목록에서 첫 번째 FQDN 항목을 선택하고 클러스터와 상호 작용하기 위한 기본 선택 항목으로 kubeconfig에 추가합니다. 목록의 첫 번째 FQDN을 확인할 수 있다고 가정합니다. 클러스터 로그인에는 변경이 필요하지 않습니다.

생성된 Kubernetes API 인증서에는 kubeAPIServerFQDNs 변수에 지정한 모든 FQDN이 포함됩니다. 시스템은 목록에서 첫 번째 이외의 다른 FQDN을 사용하려고 시도하지 않습니다. 시스템은 FQDN을 확인하려고 시도하지 않습니다. 목록에서 다른 FQDN을 사용하려는 경우 생성된 kubeconfig 파일을 수동으로 편집하고 원하는 FQDN을 추가할 수 있습니다.

FQDN 요구 사항

FQDN 사용은 선택 사항입니다. FQDN을 사용하지 않는 경우에도 기능은 변경되지 않습니다. 여기에 설명된 기능은 TKG 워크로드 클러스터에만 해당됩니다. 감독자에서 FQDN을 사용하려면 감독자 설명서에서 해당 항목을 참조하십시오.

FQDN을 사용하여 TKG 클러스터를 프로비저닝하려면 다음 요구 사항을 준수합니다.
  • vSphere 8.0 U2 P03 이상 환경
  • 감독자가 최신 패치 릴리스로 업데이트됨
  • v1beta1 API 클러스터만 지원됨. v1alpha3 API 클러스터는 지원되지 않음
  • 선택한 FQDN을 유효한 IP 주소로 확인하도록 DNS가 구성됨
중요: FQDN 기능은 v1beta1 API를 사용하여 CAPI 클러스터를 프로비저닝하는 경우에만 사용할 수 있습니다. FQDN과 함께 v1alpha3 API를 사용하여 TKC를 프로비저닝할 수 없습니다.

FQDN 예

Cluster v1beta1 API를 사용하여 FQDN으로 클러스터를 생성합니다.

spec.topology.variables.kupeAPIServerFQDNs 값은 FQDN 어레이입니다.

시스템에서 목록의 첫 번째 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

FQDN 확인

다음 절차를 완료하여 변수 목록의 첫 번째 FQDN이 kubeconfig 파일에 포함되어 있고 변수 목록의 모든 FQDN이 Kubernetes API 서버의 TLS 인증서에 있는지 확인합니다.
  1. Kubectl을 사용하여 TKG 클러스터에 로그인합니다.
    kubectl vsphere login --server=SVCP IP or FQDN --vsphere-username USERNAME --tanzu-kubernetes-cluster-name CLUSTER-NAME --tanzu-kubernetes-cluster-namespace VSPHERE-NS
  2. kubeconfig 파일에서 FQDN을 봅니다.
    cat ~/.kube/config
  3. 목록의 첫 번째 FQDN 변수가 kubeconfig에 포함되어 있는지 확인합니다.
    예:
    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. vSphere Client를 사용하여 워크로드 관리 > 네임스페이스 > 계산 > Tanzu Kubernetes 클러스터 > 제어부 주소에서 TKGS 클러스터의 IP 주소를 가져옵니다.
  5. IP 주소 및 FQDN을 사용하여 로컬 /etc/hosts 파일에서 수동 DNS 항목을 만듭니다.
    예:
    sudo vi /etc/hosts
    127.0.0.1 localhost
    127.0.1.1 ubuntu-client-vm
    10.199.155.77 demo.fqdn.com
    ...
  6. openssl s_client 명령을 사용하여 TLS 인증서를 봅니다.
    echo | openssl s_client -servername hostname -connect FQDN:PORT 2>/dev/null | openssl x509 -text

    여기서 FQDNkubeAPIServerFQDNs 변수 목록의 첫 번째 항목입니다.

    예:
    echo | openssl s_client -servername hostname -connect demo.fqdn.com:6443 2>/dev/null | openssl x509 -text
  7. Subject Alternative Name 필드에는 모든 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

    Kubernetes API 서버의 TLS 인증서에는 kubeAPIServerFQDNs 목록에 있는 모든 FQDN이 포함되어 있으므로 목록의 두 번째(또는 세 번째 등) FQDN을 사용하도록 kubeconfig 파일을 수동으로 업데이트하면 사용이 가능합니다(확인할 수 있다고 가정).