請參閱範例,以使用容器網路介面、Proxy 伺服器和 TLS 憑證的全域組態設定來自訂 Tanzu Kubernetes Grid 服務 v1alpha2 API。

使用 v1alpha2 API 設定 Tanzu Kubernetes Grid 服務

可以透過變更預設 CNI、新增全域 Proxy 伺服器以及新增受信任的憑證來自訂 Tanzu Kubernetes Grid 服務。請參閱 Tanzu Kubernetes Grid 服務 v1alpha1 API 的組態參數
apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TkgServiceConfiguration
metadata:
  name: tkg-service-v2-configuration-example
spec:
  defaultCNI: antrea
  proxy:
    #supported format is `http://<user>:<pwd>@<ip>:<port>`
    httpProxy: http://admin:[email protected]:80
    httpsProxy: http://admin:[email protected]:80
    noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20]
  trust: 
    additionalTrustedCAs:
      - name: CompanyInternalCA-1
        data: LS0tLS1C...LS0tCg==
        #where "..." is the middle section of the long base64 string
      - name: CompanyInternalCA-2
        data: MTLtMT1C...MT0tPg==        
  defaultNodeDrainTimeout: 0
注意: 編輯 Tanzu Kubernetes Grid 服務規格會導致對該服務所佈建的所有叢集進行全域變更,包括手動或自動升級的新叢集和現有叢集。

必要條件:設定 Kubectl 編輯

若要縮放 Tanzu Kubernetes 叢集,請使用命令 kubectl edit tanzukubernetescluster/CLUSTER-NAME 更新叢集資訊清單。kubectl edit 命令會在 KUBE_EDITOR 或 EDITOR 環境變數所定義的文字編輯器中開啟叢集資訊清單。如需設定環境變數的相關指示,請參閱為 Kubectl 指定預設文字編輯器

儲存規格變更時,kubectl 報告已成功記錄編輯。若要取消,只需關閉編輯器而無需儲存。

設定預設 CNI

Tanzu Kubernetes Grid 服務 提供了 Tanzu Kubernetes 叢集的預設容器網路介面 (CNI)。可以透過預設組態來建立叢集,而無需指定 CNI。您可以透過編輯服務規格來變更預設 CNI。

Tanzu Kubernetes Grid 服務 支援兩個 CNI:Antrea 和 Calico,其中 Antrea 為預設值。如需詳細資訊,請參閱 Tanzu Kubernetes Grid 服務 叢集網路

您可以透過明確指定要使用的 CNI 來覆寫預設 CNI。或者,還可以透過編輯 CNI 的 TKG 服務控制器來變更預設 CNI。
  1. 使用 主管叢集 進行驗證。
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. 將內容切換為目標 vSphere 命名空間
    kubectl config use-context tkgs-cluster-ns
  3. 列出預設 CNI。
    kubectl get tkgserviceconfigurations
    範例結果:
    NAME                                 DEFAULT CNI
    tkg-service-configuration            antrea
    
  4. 載入以編輯 Tanzu Kubernetes Grid 服務規格。
    kubectl edit tkgserviceconfigurations tkg-service-configuration

    系統會在 KUBE_EDITOR 或 EDITOR 環境變數所定義的預設文字編輯器中開啟 tkg-service-configuration 規格。

  5. 編輯 spec.defaultCNI 值。
    例如,從以下內容進行變更:
    spec:
      defaultCNI: antrea
    變更為:
    spec:
      defaultCNI: calico
  6. 若要套用變更,請在文字編輯器中儲存該檔案。若要取消,請關閉編輯器而無需儲存。

    當您在文字編輯器中儲存變更時,kubectl 會更新 tkg-service-configuration 服務規格。

  7. 確認預設 CNI 已更新。
    kubectl get tkgserviceconfigurations
    預設 CNI 已更新。使用預設網路設定佈建的任何叢集都會使用預設 CNI。
    NAME                                 DEFAULT CNI
    tkg-service-configuration            calico
    

設定全域 Proxy 伺服器

若要啟用全域 Proxy 伺服器,請將 Proxy 伺服器參數新增至 TkgServiceConfiguration。如需必填欄位的說明,請參閱 Tanzu Kubernetes Grid 服務 v1alpha1 API 的組態參數
  1. 使用 主管叢集 進行驗證。
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. 將內容切換為目標 vSphere 命名空間
    kubectl config use-context tkgs-cluster-ns
  3. 取得目前組態。
    kubectl get tkgserviceconfigurations
    範例結果:
    NAME                        DEFAULT CNI
    tkg-service-configuration   antrea
  4. 載入以編輯 Tanzu Kubernetes Grid 服務規格。
    kubectl edit tkgserviceconfigurations tkg-service-configuration

    系統會在 KUBE_EDITOR 或 EDITOR 環境變數所定義的預設文字編輯器中開啟 tkg-service-configuration 規格。

  5. 在每個必填欄位中新增 spec.proxy 子區段,包括 httpProxyhttpsProxynoProxy
    apiVersion: run.tanzu.vmware.com/v1alpha1
    kind: TkgServiceConfiguration
    metadata:
      ...
      name: tkg-service-configuration-example
      resourceVersion: "44170525"
      selfLink: /apis/run.tanzu.vmware.com/v1alpha1/tkgserviceconfigurations/tkg-service-configuration
      uid: 10347195-5f0f-490e-8ae1-a758a724c0bc
    spec:
      defaultCNI: antrea
      proxy:
        httpProxy: http://<user>:<pwd>@<ip>:<port>
        httpsProxy: http://<user>:<pwd>@<ip>:<port>
        noProxy: [SVC-POD-CIDRs, SVC-EGRESS-CIDRs, SVC-INGRESS-CIDRs]
  6. 使用相應的值填入每個 Proxy 欄位。如需每個欄位的說明,請參閱 Tanzu Kubernetes Grid 服務 v1alpha1 API 的組態參數

    noProxy 欄位的所需值來自主管叢集上的工作負載網路。請參閱上述主題中有關從何處取得這些值的圖片。

    例如:
    apiVersion: run.tanzu.vmware.com/v1alpha1
    kind: TkgServiceConfiguration
    metadata:
      ...
      name: tkg-service-configuration-example
      resourceVersion: "44170525"
      selfLink: /apis/run.tanzu.vmware.com/v1alpha1/tkgserviceconfigurations/tkg-service-configuration
      uid: 10347195-5f0f-490e-8ae1-a758a724c0bc
    spec:
      defaultCNI: antrea
      proxy:
        httpProxy: http://user:[email protected]:3128
        httpsProxy: http://user:[email protected]:3128
        noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20]
  7. 若要套用變更,請在文字編輯器中儲存該檔案。若要取消,請關閉編輯器而無需儲存。

    在文字編輯器中儲存變更時,kubectl 會使用 tkg-service-configuration 服務規格中定義的組態來更新 Tanzu Kubernetes Grid 服務

  8. 確認是否已使用 Proxy 設定更新 Tanzu Kubernetes Grid 服務
    kubectl get tkgserviceconfigurations -o yaml
  9. 若要驗證,請佈建 Tanzu Kubernetes 叢集。請參閱使用 TKGS v1alpha2 API 佈建 Tanzu Kubernetes 叢集的工作流程
    使用下列命令確認該叢集正在使用 Proxy。
    kubectl get tkc CLUSTER-NAME -n NAMESPACE -o yaml

以憑證為基礎的 Proxy 組態

在某些環境中,使用 Proxy 伺服器路由網際網路流量是一項硬性要求。例如,在高度管制的產業公司 (例如金融機構) 中,要求所有網際網路流量都通過企業 Proxy。

可以設定 Tanzu Kubernetes Grid 服務,以將 Tanzu Kubernetes 叢集佈建為針對輸出 HTTP/S 流量使用 Proxy 伺服器。如需詳細資訊,請參閱 Tanzu Kubernetes Grid 服務 v1alpha1 API 的組態參數

如範例所示,您可以將 Proxy 伺服器的受信任憑證新增至 TkgServiceConfiguration 規格。
apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TkgServiceConfiguration
metadata:
  name: tkg-service-configuration-example
spec:
  defaultCNI: antrea
  proxy:
    httpProxy: http://user:[email protected]:3128
    httpsProxy: http://user:[email protected]:3128
    noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20]
  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
  defaultNodeDrainTimeout: 0

外部私人登錄組態

可以使用自訂憑證設定 Tanzu Kubernetes Grid 服務,以將 Tanzu Kubernetes 叢集與外部私人登錄連線。如需詳細資訊,請參閱 將外部容器登錄與 Tanzu Kubernetes 叢集搭配使用
apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TkgServiceConfiguration
metadata:
  name: tkg-service-configuration-example
spec:
  defaultCNI: antrea
  trust:
    additionalTrustedCAs:
      - name: harbor-vm-cert
        data: <<<base64-encoded string of a PEM encoded public cert>>>>