可以使用關鍵功能的全域設定自訂 Tanzu Kubernetes Grid 服務,包括容器網路介面 (CNI)、Proxy 伺服器和 TLS 憑證。實作全域功能與每個叢集功能時,請注意各自的利弊和考量事項。
TkgServiceConfiguration v1alpha2 規格
TkgServiceConfiguration
規格提供了用於設定
Tanzu Kubernetes Grid 服務執行個體的欄位。
apiVersion: run.tanzu.vmware.com/v1alpha2 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
注意: 設定
Tanzu Kubernetes Grid 服務是一項全域作業。對
TkgServiceConfiguration
規格進行的任何變更適用於該服務所佈建的所有
Tanzu Kubernetes 叢集。如果以手動方式或透過升級起始輪流更新,則叢集將透過變更的服務規格進行更新。
標註 TkgServiceConfiguration v1alpha2 規格
下列 YAML 列出並說明了每個
TkgServiceConfiguration
規格參數的可設定欄位。如需範例,請參閱
設定 v1alpha1 API Tanzu Kubernetes Grid 服務的範例。
apiVersion: run.tanzu.vmware.com/v1alpha2 kind: TkgServiceConfiguration 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 Supervisor Cluster Pod, Egress, Ingress CIDRs 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
Proxy 伺服器組態需求
如果設定了 Proxy 伺服器,則叢集會將其用於輸出 HTTP 和 HTTPS 流量。為
Tanzu Kubernetes 叢集設定 Proxy 伺服器時,請注意以下需求。
- 必要的
proxy
參數包括httpProxy
、httpsProxy
和noProxy
。如果新增proxy
部分,則所有三個欄位均為必填欄位。 - 您可以使用 HTTP 連線到 Proxy 伺服器。不支援 HTTPS 連線。
- 從工作負載網路取得所需的
spec.proxy.noProxy
值。不得透過將命名空間網路 (以前稱為「網繭 CIDR」)、入口 (以前稱為「入口 CIDR」) 和出口 (以前稱為「出口 CIDR」) 包含在noProxy
欄位中對其進行代理。請參閱以下範例影像。 - 無需在
noProxy
欄位中包括服務 CIDR。Tanzu Kubernetes 叢集不與此子網路互動。 - 無需在
noProxy
欄位中包括 Tanzu Kubernetes 叢集規格的network.services.cidrBlocks
和network.pods.cidrBlocks
值。系統不會自動代理這些子網路。 - 無需在
noProxy
欄位中包括localhost
和127.0.0.1
。系統不會自動代理端點。
何時使用全域組態選項或每個叢集的組態選項
TkgServiceConfiguration
是全域規格,將會影響由 Tanzu Kubernetes Grid 服務執行個體佈建的所有 Tanzu Kubernetes 叢集。
編輯
TkgServiceConfiguration
規格之前,請注意每個叢集的替代方案,這些替代方案可能滿足您的使用案例而非全域組態。
設定 | 全域選項 | 每個叢集的選項 |
---|---|---|
預設 CNI | 編輯 TkgServiceConfiguration 規格。請參閱設定 v1alpha1 API Tanzu Kubernetes Grid 服務的範例。 |
在叢集規格中指定 CNI。例如,Antrea 為預設 CNI。若要使用 Calico,請在叢集 YAML 中加以指定。請參閱 使用 Tanzu Kubernetes Grid 服務 v1alpha1 API 佈建 Tanzu Kubernetes 叢集的範例 |
Proxy 伺服器 | 編輯 TkgServiceConfiguration 規格。請參閱設定 v1alpha1 API Tanzu Kubernetes Grid 服務的範例。 |
在叢集規格中包括 Proxy 伺服器組態參數。請參閱使用 Tanzu Kubernetes Grid 服務 v1alpha1 API 佈建 Tanzu Kubernetes 叢集的範例。 |
信任憑證 | 編輯 TkgServiceConfiguration 規格。有兩種使用案例:設定外部容器登錄和以憑證為基礎的 Proxy 組態。請參閱 設定 v1alpha1 API Tanzu Kubernetes Grid 服務的範例 |
是,可以根據每個叢集包含自訂憑證,或覆寫叢集規格中全域設定的 trust 設定。請參閱使用 Tanzu Kubernetes Grid 服務 v1alpha1 API 佈建 Tanzu Kubernetes 叢集的範例。 |
備註: 如果在
TkgServiceConfiguration
上設定了全域 Proxy,該 Proxy 資訊將在初始部署該叢集後散佈到叢集資訊清單。只有在建立叢集時不存在 Proxy 組態欄位的情況下,全域 Proxy 組態才會新增至叢集資訊清單。換句話說,每個叢集的組態優先,而且將覆寫全域 Proxy 組態。如需詳細資訊,請參閱
Tanzu Kubernetes Grid 服務 v1alpha1 API 的組態參數。
編輯 TkgServiceConfiguration
規格之前,請注意在全域層級套用設定的後果。
欄位 | 已套用 | 新增/變更時對現有叢集的影響 | 建立叢集時的每個叢集覆寫 | 更新叢集時的每個叢集覆寫 |
---|---|---|---|---|
defaultCNI |
全域 | 無 | 是,可以在建立叢集時覆寫全域設定 | 否,無法變更現有叢集的 CNI;如果在建立叢集時使用了全域設定的預設 CNI,則無法進行變更 |
proxy |
全域 | 無 | 是,可以在建立叢集時覆寫全域設定 | 是,對於 U2+,可以在更新叢集時覆寫全域設定 |
trust |
全域 | 無 | 是,可以在建立叢集時覆寫全域設定 | 是,對於 U2+,可以在更新叢集時覆寫全域設定 |
將全域組態變更散佈到現有叢集
在 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}}}}"