透過叢集 v1beta1 API,可以預設的 ClusterClass 定義為基礎佈建叢集。
ClusterClass API v1beta1
Kubernetes 叢集 API 是一套工具,用於提供 Kubernetes 叢集的宣告式佈建、升級和運作。ClusterClass 是叢集 API 的演進版本,可用於定義管理多組叢集的生命週期的範本。TKG 服務 使用 v1beta1 API 支援 ClusterClass。
TKG 服務 隨附一個名為 tanzukubernetescluster
的預設 ClusterClass 定義。tanzukubernetescluster
ClusterClass 提供用於使用 v1beta API 建立叢集的範本。tanzukubernetescluster
ClusterClass 在所有使用者命名空間中均可用。若要基於此 ClusterClass 建立叢集,請在叢集規格中參考它。如需有關指引,請參閱 v1beta 範例。
預設 ClusterClass tanzukubernetescluster
預設 tanzukubernetescluster
ClusterClass 是不可變的。可能會在每次發佈 TKG 服務時對其進行更新。
若要檢視 TKG 服務執行個體隨附的預設 tanzukubernetescluster
ClusterClass,請完成以下步驟:
- 登入 主管。
kubectl vsphere login --server=IP-or-FQDN --vsphere-username [email protected]
- 將內容切換到佈建了 TKGS 叢集的 vSphere 命名空間。
kubeclt config use-context VSPEHRE-NS
- 取得預設
tanzukubernetescluster
ClusterClass。kubectl get clusterclass tanzukubernetescluster -o yaml
- 您可以選擇性地將預設 ClusterClass 的輸出寫入名為 tkc-dcc.yaml 的檔案。
kubectl get clusterclass tanzukubernetescluster -o yaml > tkc-dcc.yaml
用於自訂叢集的 ClusterClass 變數
可以使用變數根據 tanzukubernetescluster
ClusterClass 來自訂叢集。使用名稱-值對定義變數。語法必須符合 openAPIV3Schema 的要求。
- 虛擬機器類別
- 儲存區類別
- Proxy
- TLS 憑證
- SSH 金鑰
下列區段列出了預設 tanzukubernetescluster
ClusterClass 可用的所有變數。
key-name
)、底線 (如
KEY_NAME
) 或點 (如
key.name
)。不能在金鑰名稱中使用空格。
clusterEncryptionConfigYaml
使用 clusterEncryptionConfigYaml
變數設定叢集加密。
- clusterEncryptionConfigYaml
- 為提供加密組態詳細資料的 YAML 檔案的字串。
controlPlaneCertificateRotation
controlPlaneCertificateRotation
變數設定系統,在控制平面節點的 TLS 憑證到期之前觸發憑證推出,從而輪替這些憑證。控制平面憑證輪替可用於所有新的和現有的控制平面節點。
- controlPlaneCertificateRotation
-
布林值,用於啟用該功能以及到期前輪替憑證的天數。如需詳細資訊,請參閱
使用 Kubeadm Control Plane 提供者自動輪替憑證。
... variables: - name: controlPlaneCertificateRotation value: activate: true daysBefore: 90
controlPlaneVolumes
controlPlaneVolumes
變數為控制平面節點設定持續性磁碟區。
- controlPlaneVolumes
-
可選物件陣列,其中每個物件都包含
name
、storageClass
和mountPath
(均為字串),以及可選的capacity
物件 (包含storage
字串)。... variables: #controlPlaneVolumes is an optional set of PVCs to create and #attach to each node - name: controlPlaneVolumes value: #name of the PVC to be used as the suffix (node.name) - name: NAME #mountPath is the directory where the volume device is mounted #takes the form /dir/path mountPath: /dir/path #storageClass is the storage class to use for the PVC storageClass: tkgs-storage-profile #capacity is the PVC storage capacity capacity: #storage sets the capacity for the disk volume #if not specified defaults to storageClass capacity storage: 4Gi
defaultRegistrySecret
defaultRegistrySecret
變數為叢集設定預設的容器登錄。
- defaultRegistrySecret
- 包含預設容器登錄的公開金鑰、憑證名稱和命名空間的物件。
defaultStorageClass
使用 defaultStorageClass
變數為叢集設定預設儲存區類別。
- defaultStorageClass
-
可識別要用作預設儲存區類別的儲存區類別的字串,通常 Helm 圖和 Tanzu 套件等應用程式需要它。
... variables: - name: defaultStorageClass value: tkg2-storage-profile
extensionCert
使用 extensionCert
變數設定 TLS 憑證。
- extensionCert
-
包含具有
name
和key
字串的contentSecret
物件的物件。contentSecret
會參考為 TLS 憑證建立的 Kubernetes 密碼物件。... variables: #extensionCert specifies the cert and key for Extensions Controller #self-signed issuer and certificates must be created in advance - name: extensionCert value: contentSecret: #name specifies the name of secret name: string #key specifies the content of tls\.crt in the secret's data map key: string
kubeAPIServerFQDNs
使用 kubeAPIServerFQDNs
變數設定具有 FQDN 的叢集。
nodePoolLabels
使用 nodePoolLabels
變數為 Worker 節點設定標籤。
- nodePoolLabels
- 一或多個物件組成的陣列,每個物件均包含索引鍵/值 (均為字串) 配對。
nodePoolTaints
使用 nodePoolTaints
變數將污點套用至 Worker 節點。
- nodePoolTaints
- 物件陣列,其中每個物件都包含適用於 worker 節點的 污點。
nodePoolVolumes
使用 nodePoolVolumes
變數為叢集節點指定持續性磁碟區。
- nodePoolVolumes
-
可選物件陣列,其中每個物件都包含
name
、storageClass
和mountPath
(均為字串),以及可選的capacity
物件 (包含storage
字串)。... variables: #nodePoolVolumes is an optional set of PVCs to create and #attach to each node; use for high-churn components like containerd - name: nodePoolVolumes value: | #name of the PVC to be used as the suffix (node.name) - name: etcd #mountPath is the directory where the volume device is mounted #takes the form /dir/path mountPath: /var/lib/containerd #storageClass is the storage class to use for the PVC storageClass: tkgs-storage-profile #capacity is the PVC storage capacity capacity: #storage sets the capacity for the disk volume #if not specified defaults to storageClass capacity storage: 4Gi
ntp
使用 ntp
變數為叢集設定 NTP 伺服器。
- ntp
- 為 NTP 伺服器的 FQDN 或 IP 位址的字串。
podSecurityStandard
podSecurityStandard
變數設定叢集範圍網繭安全性。
- podSecurityStandard
-
對於 TKr v1.26 及更新版本,依預設,將使用註解標籤在命名空間層級強制執行網繭安全性 (PSA) 限制。請參閱為 TKR 1.25 及更新版本設定 PSA。
或者,也可以在佈建或更新 v1beta1 叢集時使用
podSecurityStandard
變數來設定叢集範圍 PSA。podSecurityStandard
變數可按以下方式實作:... variables: - name: podSecurityStandard value: deactivated: DEACTIVATED audit: AUDIT-PROFILE enforce: ENFORCE-PROFILE warn: WARN-PROFILE auditVersion: AUDIT-VERSION enforceVersion: ENFORCE-VERSION warnVersion: WARN-VERSION exemptions: namespaces: [EXEMPT-NS]
其中:- DEACTIVATED 值為
false
(預設值) 表示套用叢集範圍 PSA;值為true
則表示不套用。 - *-PROFILE 值表示每種模式的 PSA 設定檔,可以是
"privileged"
、"baseline"
或"restricted"
(預設值)。 - *-VERSION 值表示每種模式的 Kubernetes 版本,例如
"v1.26"
。值"latest"
為預設值。 - EXEMPT-NS 值表示要從 PSA 控制中排除的命名空間的逗號分隔清單。
備註: 系統命名空間將從網繭安全性中排除,包括 kube-system、tkg-system 和 vmware-system-cloud-provider。如果不實作
podSecurityStandard
變數,將保留預設 PSA 行為。如果叢集規格中包含podSecurityStandard
變數,變數設定將施加控制,包括其預設值,除非您覆寫預設值。以下範例顯示了預設值。... variables: - name: podSecurityStandard value: enforce: "restricted" enforce-version: "latest"
以下範例提供了稽核記錄和警告,用於確定哪些工作負載未遵循目前的網繭強化最佳做法,但僅強制執行限制性最低的原則 (「基準」,這會阻止已知的權限提升)。... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "baseline"
以下範例強制執行限制原則,但在特定命名空間上除外。... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "restricted" exemptions: namesaces: ["privileged-workload-ns"]
以下範例僅對特定 TKr 版本強制執行限制。... variables: - name: podSecurityStandard value: audit-version: "v1.26" warn-version: "v1.26" enforce-version: "v1.26"
如需更多範例,請參閱 Kubernetes 說明文件中的網繭安全性標準。
- DEACTIVATED 值為
proxy
使用 proxy
變數為叢集設定 Proxy 伺服器。
- proxy
- 具有參考 Proxy 伺服器以進行輸出叢集連線的參數的物件。
storageClass
使用 storageClass
變數為叢集設定儲存區類別。
- storageClass
-
為 vSphere 儲存區設定檔的名稱的字串,此設定檔已被指派給佈建了 TKG 叢集的
vSphere 命名空間。
... variables: - name: storageClass value: tkgs-storage-profile
storageClasses
使用 storageClasses
變數為叢集設定儲存區類別陣列。
- storageClasses
-
一或多個字串組成的陣列,每個字串均是已被指派給佈建了 TKG 叢集的
vSphere 命名空間 的 vSphere 儲存區設定檔的名稱。
... variables: - name: storageClasses value: [tkg2-storage-profile, tkg2-storage-profile-latebinding]
TKR_DATA
使用 TKR_DATA
變數指定 TKR 資訊。
- TKR_DATA
- 用於指定 TKR 版本和其他詳細資料的物件。
trust
使用 trust
變數為叢集指定一或多個受信任的 CA 憑證。
- trust
- 用於向叢集新增 TLS 憑證 (其他 CA 或終端憑證) 的物件。
user
使用 user
變數指定叢集使用者認證。
- user
- 包含 passwordSecret 物件的物件,此 passwordSecret 物件具有名稱和金鑰字串以及 sshAuthorizedKey 字串。可以使用此變數將使用者的 SSH 金鑰新增到叢集節點以進行遠端 SSH 存取。
vmClass
使用 vmClass
變數為叢集節點設定虛擬機器類別。
- vmClass
- 對應到虛擬機器類別的名稱的必要字串,該虛擬機器類別已繫結到佈建了 TKG 叢集的 vSphere 命名空間。