하나 이상의 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을 사용하려면 감독자 설명서에서 해당 항목을 참조하십시오.
- vSphere 8.0 U2 P03 이상 환경
- 감독자가 최신 패치 릴리스로 업데이트됨
- v1beta1 API 클러스터만 지원됨. v1alpha3 API 클러스터는 지원되지 않음
- 선택한 FQDN을 유효한 IP 주소로 확인하도록 DNS가 구성됨
FQDN 예
Cluster v1beta1 API를 사용하여 FQDN으로 클러스터를 생성합니다.
spec.topology.variables.kupeAPIServerFQDNs
값은 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 확인
kubeconfig
파일에 포함되어 있고 변수 목록의 모든 FQDN이 Kubernetes API 서버의 TLS 인증서에 있는지 확인합니다.
- 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
kubeconfig
파일에서 FQDN을 봅니다.cat ~/.kube/config
- 목록의 첫 번째 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
- vSphere Client를 사용하여 에서 TKGS 클러스터의 IP 주소를 가져옵니다.
- 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 ...
openssl s_client
명령을 사용하여 TLS 인증서를 봅니다.echo | openssl s_client -servername hostname -connect FQDN:PORT 2>/dev/null | openssl x509 -text
여기서
FQDN
은kubeAPIServerFQDNs
변수 목록의 첫 번째 항목입니다.예:echo | openssl s_client -servername hostname -connect demo.fqdn.com:6443 2>/dev/null | openssl x509 -text
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
파일을 수동으로 업데이트하면 사용이 가능합니다(확인할 수 있다고 가정).