您可以使用关键功能的全局设置自定义 Tanzu Kubernetes Grid 服务,包括容器网络接口 (CNI)、代理服务器和 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 规范参数。有关示例,请参见 配置 Tanzu Kubernetes Grid 服务 v1alpha1 API 的示例
字段 描述
defaultCNI antrea or calico 集群使用的默认 CNI。默认值为 antrea。支持的另一个 CNI 是 calico
proxy proxy 参数的部分标记。 proxy 参数包括 httpProxyhttpsProxynoProxy。所有参数都是必需项。如果缺少任何 proxy 参数,便无法创建 Tanzu Kubernetes 集群。
httpProxy URI,格式为 http://<user>:<pwd>@<ip>:<port> 不允许使用 https 协议。如果使用 https,则无法创建 Tanzu Kubernetes 集群。
httpsProxy URI,格式为 http://<user>:<pwd>@<ip>:<port> 不允许使用 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 阵列字段中的值。

不得针对 Pod、输入和输出代理主管集群上的工作负载网络使用的子网。

无需在 noProxy 字段中包括主管集群的“服务 CIDR”。Tanzu Kubernetes 集群不与此类服务交互。

系统不会自动代理 localhost127.0.0.1 端点。无需将它们添加到 noProxy 字段中。

系统不会自动代理 Tanzu Kubernetes 集群的“Pod CIDR”和“服务 CIDR”。无需将它们添加到 noProxy 字段中。

trust trust 参数的部分标记。 不接受任何数据。
additionalTrustedCAs 为每个受信任的 CA 接受一组包含 namedata 的证书。 不接受任何数据。
name String TLS 证书的名称。
data String PEM 编码的公共证书的 base64 编码字符串。

主管集群 中的工作负载网络获取所需的 noProxy 值,如下图所示。

“工作负载网络”窗口,突出显示了“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}}}}"