您可以使用关键功能的全局设置自定义 Tanzu Kubernetes Grid 服务,包括容器网络接口 (CNI)、代理服务器和 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 规范参数的可配置字段。有关示例,请参见 配置 Tanzu Kubernetes Grid 服务 v1alpha1 API 的示例
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

代理服务器配置要求

如果配置了代理服务器,则集群将使用该代理服务器传输出站 HTTP 和 HTTPS 流量。为 Tanzu Kubernetes 集群配置代理服务器时,请牢记以下要求。
  • 必需的 proxy 参数为 httpProxyhttpsProxynoProxy。如果添加 proxy 部分,则所有三个字段均为必填字段。
  • 您可以使用 HTTP 连接到代理服务器。不支持 HTTPS 连接。
  • 工作负载网络获取所需的 spec.proxy.noProxy 值。不得通过将命名空间网络(以前称为“Pod CIDR”)、输入(以前称为“输入 CIDR”)和输出(以前称为“输出 CIDR”)包含在 noProxy 字段中对其进行代理。请参阅下面的示例图像。
  • 无需在 noProxy 字段中包括“服务 CIDR”。Tanzu Kubernetes 集群不与此子网交互。
  • 无需在 noProxy 字段中包括 Tanzu Kubernetes 集群规范的 network.services.cidrBlocksnetwork.pods.cidrBlocks 值。系统不会自动代理这些子网。
  • 无需在 noProxy 字段中包括 localhost127.0.0.1。系统不会自动代理端点。

“工作负载网络”设置窗口,突出显示了“命名空间网络”、“输入”和“输出”字段。

“工作负载网络”设置窗口,突出显示了“POD CIDR”、“输入 CIDR”和“输出 CIDR”值。

何时使用全局或每个集群配置选项

TkgServiceConfiguration 是一个全局规范,将会影响 Tanzu Kubernetes Grid 服务 实例置备的所有 Tanzu Kubernetes 集群。

在编辑 TkgServiceConfiguration 规范之前,请注意可能满足您的用例(而不是全局配置)的每个集群备用方案。
表 1. 全局配置选项与每个集群配置选项
设置 全局选项 每个集群选项
默认 CNI 编辑 TkgServiceConfiguration 规范。请参见配置 Tanzu Kubernetes Grid 服务 v1alpha1 API 的示例 在集群规范中指定 CNI。例如,Antrea 是默认 CNI。要使用 Calico,请在集群 YAML 中指定它。请参见使用 Tanzu Kubernetes v1alpha1 API 置备 Tanzu Kubernetes Grid 服务 集群的示例
代理服务器 编辑 TkgServiceConfiguration 规范。请参见配置 Tanzu Kubernetes Grid 服务 v1alpha1 API 的示例 在集群规范中包括代理服务器配置参数。请参见使用 Tanzu Kubernetes v1alpha1 API 置备 Tanzu Kubernetes Grid 服务 集群的示例
信任证书 编辑 TkgServiceConfiguration 规范。有两种用例:配置外部容器注册表和基于证书的代理配置。请参见配置 Tanzu Kubernetes Grid 服务 v1alpha1 API 的示例 是,可以基于每个集群包含自定义证书,也可以替代集群规范中全局设置的 trust 设置。请参见使用 Tanzu Kubernetes v1alpha1 API 置备 Tanzu Kubernetes Grid 服务 集群的示例
注: 如果在 TkgServiceConfiguration 上配置了全局代理,则会在集群初始部署后,将该代理信息传播到集群清单中。仅当创建集群时未显示代理配置字段的情况下,才会向集群清单中添加全局代理配置。换句话说,每个集群的配置优先,并将覆盖全局代理配置。有关详细信息,请参见 用于 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}}}}"