1 つ以上の完全修飾ドメイン名 (FQDN) を使用して TKGS クラスタをプロビジョニングするには、この例を参照してください。
FQDN のサポート
v1beta1 API では、完全修飾ドメイン名 (FQDN) を使用して TKG クラスタをプロビジョニングできます。クラスタ v1beta1 API には、Kubernetes API サーバ用の TLS 証明書で生成される 1 つ以上の FQDN 文字列を含む、kubeAPIServerFQDNs
という名前の変数が含まれています。
FQDN が構成されているクラスタに対して kubectl vsphere login
コマンドを実行すると、認証サービスではリスト内の最初の FQDN エントリを選択し、クラスタ操作のために優先する選択肢として kubeconfig に追加します。リスト内の最初の FQDN が解決可能であることが前提となります。クラスタのログインに必要な変更はありません。
生成される Kubernetes API 証明書には、kubeAPIServerFQDNs
変数で指定したすべての FQDN が含まれます。システムでは、リスト内の最初の FQDN 以外の FQDN の使用を試行しません。また、FQDN の解決も試行しません。リストの別の FQDN を使用する場合は、生成された kubeconfig ファイルを手動で編集して目的の FQDN を追加できます。
FQDN の要件
FQDN の使用はオプションです。FQDN を使用しない場合、機能は変更されません。ここで説明する機能は、TKG ワークロード クラスタに固有のものです。スーパーバイザー で FQDN を使用するには、スーパーバイザー のドキュメントで該当するトピックを参照してください。
- vSphere 8.0 U2 P03 以降の環境
- スーパーバイザー が最新のパッチ リリースに更新されている
- v1beta1 API クラスタのみがサポートされている(v1alpha3 API クラスタがサポートされていない)
- 選択した FQDN を有効な IP アドレスに解決するように DNS が構成されている
FQDN の例
クラスタ 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
変数リスト内の最初の FQDN です。例: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 が含まれているため、リスト内の 2 番目(または 3 番目。以下も同様)の FQDN を使用するようにkubeconfig
ファイルを手動で更新できます。これにより、指定した FQDN が使用されます(解決可能であることが前提)。