您可以為使用 v1alpha3 API 佈建的 TKG 叢集自訂 TKG 服務組態,包括容器網路介面 (CNI)、Proxy 伺服器和 TLS 憑證。
關於自訂 TkgServiceConfiguration
您可以透過編輯 TkgServiceConfiguration 來為 Tanzu Kubernetes 叢集設定全域設定。透過此組態可以設定預設 CNI,新增全域 Proxy 伺服器以及新增一或多個受信任的 TLS 憑證。
注意: 自訂
TkgServiceConfiguration 是一項全域作業。對
TkgServiceConfiguration
物件進行的任何變更適用於該服務所佈建的所有 TKG 叢集。如果以手動方式或透過升級起始輪流更新,則叢集將透過變更的服務規格進行更新。
備註:
TkgServiceConfiguration 自訂適用於使用 v1alpha3 API 佈建的
Tanzu Kubernetes 叢集。它不適用於使用 v1beta1 API 佈建的叢集。
TkgServiceConfiguration 規格
TkgServiceConfiguration
規格提供了用於設定
Tanzu Kubernetes Grid 執行個體的欄位。
重要: 有效金鑰名稱只能包含英數字元、破折號 (如
key-name
)、底線 (如
KEY_NAME
) 或點 (如
key.name
)。不能在金鑰名稱中使用空格。
apiVersion: run.tanzu.vmware.com/v1alpha3 kind: TkgServiceConfiguration metadata: name: tkg-service-configuration-spec spec: defaultCNI: string proxy: httpProxy: string httpsProxy: string noProxy: [string] trust: additionalTrustedCAs: - name: string data: string defaultNodeDrainTimeout: time
標註的 TkgServiceConfiguration 規格
下列 YAML 列出並說明了每個
TkgServiceConfiguration
規格參數的可設定欄位。
apiVersion: run.tanzu.vmware.com/v1alpha3 kind: TkgServiceConfiguration #valid config key must consist of alphanumeric characters, '-', '_' or '.' metadata: name: tkg-service-configuration-spec spec: #defaultCNI is the default CNI for all Tanzu Kubernetes #clusters to use unless overridden on a per-cluster basis #supported values are antrea, calico, antrea-nsx-routed #defaults to antrea defaultCNI: string #proxy configures a proxy server to be used inside all #clusters provisioned by this TKGS instance #if implemented all fields are required #if omitted no proxy is configured proxy: #httpProxy is the proxy URI for HTTP connections #to endpionts outside the clusters #takes the form http://<user>:<pwd>@<ip>:<port> httpProxy: string #httpsProxy is the proxy URI for HTTPS connections #to endpoints outside the clusters #takes the frorm http://<user>:<pwd>@<ip>:<port> httpsProxy: string #noProxy is the list of destination domain names, domains, #IP addresses, and other network CIDRs to exclude from proxying #must include from Workload Network: [Namespace Netowrk, Ingress, Egress] noProxy: [string] #trust configures additional trusted certificates #for the clusters provisioned by this TKGS instance #if omitted no additional certificate is configured trust: #additionalTrustedCAs are additional trusted certificates #can be additional CAs or end certificates additionalTrustedCAs: #name is the name of the additional trusted certificate #must match the name used in the filename - name: string #data holds the contents of the additional trusted cert #PEM Public Certificate data encoded as a base64 string data: string #defaultNodeDrainTimeout is the total amount of time the #controller spends draining a node; default is undefined #which is the value of 0, meaning the node is drained #without any time limitations; note that `nodeDrainTimeout` #is different from `kubectl drain --timeout` defaultNodeDrainTimeout: time
備註: 如果在
TkgServiceConfiguration
上設定了全域 Proxy,該 Proxy 資訊將在初始部署該叢集後散佈到叢集資訊清單。只有在建立叢集時不存在 Proxy 組態欄位的情況下,全域 Proxy 組態才會新增至叢集資訊清單。換句話說,每個叢集的組態優先,而且將覆寫全域 Proxy 組態。
TkgServiceConfiguration 規格範例
下列 YAML 列出並說明了每個 TkgServiceConfiguration
規格參數的可設定欄位。
apiVersion: run.tanzu.vmware.com/v1alpha3 kind: TkgServiceConfiguration metadata: name: tkgserviceconfiguration_example spec: defaultCNI: calico proxy: #supported format is `http://<user>:<pwd>@<ip>:<port>` httpProxy: http://admin:[email protected]:80 httpsProxy: http://admin:[email protected]:80 #noProxy vaulues are from Workload Network: [Namespace Network, Ingress, Egress] noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20] trust: additionalTrustedCAs: #name is the name of the public cert - name: CompanyInternalCA-1 #data is base64-encoded string of a PEM encoded public cert data: LS0tLS1C...LS0tCg== #where "..." is the middle section of the long base64 string - name: CompanyInternalCA-2 data: MTLtMT1C...MT0tPg== defaultNodeDrainTimeout: 0
編輯 TkgServiceConfiguration
請參閱以下程序編輯
TkgServiceConfiguration 規格。
- 設定 Kubectl 編輯。請參閱為 Kubectl 設定文字編輯器。
- 使用 主管 進行驗證。
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- 將內容切換為目標 vSphere 命名空間。
kubectl config use-context vSphere-Namespace
- 取得 TkgServiceConfiguration 規格。
kubectl get tkgserviceconfigurations
- 載入以編輯 TkgServiceConfiguration 規格。
kubectl edit tkgserviceconfigurations tkg-service-configuration
系統會在 KUBE_EDITOR 或 EDITOR 環境變數所定義的預設文字編輯器中開啟
tkg-service-configuration
規格。 - 根據您的需求編輯 TkgServiceConfiguration。
- 若要套用變更,請在文字編輯器中儲存該檔案。若要取消,請關閉編輯器而無需儲存。
當您在文字編輯器中儲存變更時,kubectl 會更新
tkg-service-configuration
服務規格。 - 驗證 TkgServiceConfiguration 規格是否已更新。
kubectl get tkgserviceconfigurations
將全域組態變更散佈到現有叢集
在 TkgServiceConfiguration
中的全域層級進行的設定可能不會自動散佈到現有叢集。例如,如果您對 TkgServiceConfiguration
中的 proxy
或 trust
設定進行變更,則此類變更可能不會影響已佈建的叢集。
若要手動將全域變更散佈到現有叢集,則必須修補 Tanzu Kubernetes 叢集,使叢集繼承對 TkgServiceConfiguration
所做的變更。
例如:
kubectl patch tkc <CLUSTER_NAME> -n <NAMESPACE> --type merge -p "{\"spec\":{\"settings\":{\"network\":{\"proxy\": null}}}}"
kubectl patch tkc <CLUSTER_NAME> -n <NAMESPACE> --type merge -p "{\"spec\":{\"settings\":{\"network\":{\"trust\": null}}}}"