可以使用關鍵功能的全域設定自訂 Tanzu Kubernetes Grid 服務,包括容器網路介面 (CNI)、Proxy 伺服器和 TLS 憑證。實作全域功能與每個叢集功能時,請注意各自的利弊和考量事項。

或者,也可以使用全域參數設定 Tanzu Kubernetes Grid 服務

注意: 設定 Tanzu Kubernetes Grid 服務是一項全域作業。這表示,對 TkgServiceConfiguration 規格進行的任何變更適用於該服務所佈建的所有 Tanzu Kubernetes 叢集。如果以手動方式或透過升級起始輪流更新,則叢集將透過變更的服務規格進行更新。

TkgServiceConfiguration 規格

TkgServiceConfiguration 規格提供了用於設定 Tanzu Kubernetes Grid 服務執行個體的欄位。
apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TkgServiceConfiguration
metadata:
  name: tkg-service-configuration-example
spec:
  defaultCNI: <antrea or calico>
  proxy:
    httpProxy: http://<user>:<pwd>@<ip>:<port>
    httpsProxy: http://<user>:<pwd>@<ip>:<port>
    noProxy: [<array of CIDRs to not proxy>]
  trust:
    additionalTrustedCAs:
      - name: <first-cert-name>
        data: <base64-encoded string of a PEM encoded public cert 1>
      - name: <second-cert-name>
        data: <base64-encoded string of a PEM encoded public cert 2>

TkgServiceConfiguration 規格參數

下表列出並說明每個 TkgServiceConfiguration 規格參數。如需範例,請參閱 設定 v1alpha1 API Tanzu Kubernetes Grid 服務的範例
欄位 說明
defaultCNI antrea or calico 供叢集使用的預設 CNI。預設值為 antrea。另一個支援的 CNI 為 calico
proxy proxy 參數的區段標記。 proxy 參數包括 httpProxyhttpsProxynoProxy。所有參數均為必填。如果缺少任何 proxy 參數,則無法建立 Tanzu Kubernetes 叢集。
httpProxy http://<user>:<pwd>@<ip>:<port> 格式的 URI 不允許使用 https 通訊協定。如果使用 https,則無法建立 Tanzu Kubernetes 叢集。
httpsProxy http://<user>:<pwd>@<ip>:<port> 格式的 URI 不允許使用 https 通訊協定。如果使用 https,則無法建立 Tanzu Kubernetes 叢集。
noProxy

不進行代理的一組 CIDR 區塊,例如:[10.246.0.0/16,192.168.144.0/20,192.168.128.0/20]

從主管叢集上的工作負載網路取得所需的值:Pod CIDRsIngress CIDRsEgress CIDRs

請參閱下面的影像,瞭解要包括在 noProxy 陣列欄位中的值。

不得代理由主管叢集上的工作負載網路用於網繭、入口和出口的子網路。

無需在 noProxy 欄位中包括來自主管叢集的服務 CIDR。Tanzu Kubernetes 叢集不會與此類服務互動。

不會自動代理 localhost127.0.0.1 端點。無需將其新增至 noProxy 欄位。

不會自動代理 Tanzu Kubernetes 叢集的網繭和服務 CIDR。無需將其新增至 noProxy 欄位。

trust trust 參數的區段標記。 不接受任何資料。
additionalTrustedCAs 為每個受信任的 CA 接受包含 namedata 的一組憑證。 不接受任何資料。
name 字串 TLS 憑證的名稱。
data 字串 PEM 編碼公用憑證的 Base64 編碼字串。

主管叢集上的工作負載網路取得所需的 noProxy 值,如圖所示。

[工作負載網路] 視窗,其中反白顯示了 [網繭 CIDR]、[入口 CIDR] 和 [出口 CIDR] 值。

何時使用全域組態選項或每個叢集的組態選項

TkgServiceConfiguration 是全域規格,將會影響由 Tanzu Kubernetes Grid 服務執行個體佈建的所有 Tanzu Kubernetes 叢集。

編輯 TkgServiceConfiguration 規格之前,請注意每個叢集的替代方案,這些替代方案可能滿足您的使用案例而非全域組態。
表 1. 全域組態選項與每個叢集的組態選項
設定 全域選項 每個叢集的選項
預設 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 中的 proxytrust 設定進行變更,則此類變更將不會影響已佈建的叢集。

若要將全域變更散佈到現有叢集,則必須修補 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}}}}"