可以使用關鍵功能的全域設定自訂 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 參數包括 httpProxyhttpsProxynoProxy。如果新增 proxy 部分,則所有三個欄位均為必填欄位。
  • 您可以使用 HTTP 連線到 Proxy 伺服器。不支援 HTTPS 連線。
  • 工作負載網路取得所需的 spec.proxy.noProxy 值。不得透過將命名空間網路 (以前稱為「網繭 CIDR」)、入口 (以前稱為「入口 CIDR」) 和出口 (以前稱為「出口 CIDR」) 包含在 noProxy 欄位中對其進行代理。請參閱以下範例影像。
  • 無需在 noProxy 欄位中包括服務 CIDR。Tanzu Kubernetes 叢集不與此子網路互動。
  • 無需在 noProxy 欄位中包括 Tanzu Kubernetes 叢集規格的 network.services.cidrBlocksnetwork.pods.cidrBlocks 值。系統不會自動代理這些子網路。
  • 無需在 noProxy 欄位中包括 localhost127.0.0.1。系統不會自動代理端點。

[工作負載網路設定] 視窗,其中反白顯示了 [命名空間網路]、[入口] 和 [出口] 欄位。

[工作負載網路設定] 視窗,其中反白顯示了 [網繭 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}}}}"