您可以使用关键功能的全局设置自定义 Tanzu Kubernetes Grid 服务,包括容器网络接口 (CNI)、代理服务器和 TLS 证书。在实施全局功能与每个集群功能时,请注意各自的利弊和注意事项。
或者,您也可以使用全局参数配置 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 参数包括 httpProxy 、httpsProxy 和 noProxy 。所有参数都是必需项。如果缺少任何 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 块阵列,例如: 从主管集群上的工作负载网络获取所需值: 请参阅下图,了解要包括在 |
不得针对 Pod、输入和输出代理主管集群上的工作负载网络使用的子网。 无需在 系统不会自动代理 系统不会自动代理 Tanzu Kubernetes 集群的“Pod CIDR”和“服务 CIDR”。无需将它们添加到 |
trust |
trust 参数的部分标记。 |
不接受任何数据。 |
additionalTrustedCAs |
为每个受信任的 CA 接受一组包含 name 和 data 的证书。 |
不接受任何数据。 |
name |
String | TLS 证书的名称。 |
data |
String | PEM 编码的公共证书的 base64 编码字符串。 |
从 主管集群 中的工作负载网络获取所需的 noProxy
值,如下图所示。
何时使用全局或每个集群配置选项
TkgServiceConfiguration
是一个全局规范,将会影响 Tanzu Kubernetes Grid 服务 实例置备的所有 Tanzu Kubernetes 集群。
TkgServiceConfiguration
规范之前,请注意可能满足您的用例(而不是全局配置)的每个集群备用方案。
设置 | 全局选项 | 每个集群选项 |
---|---|---|
默认 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
中对 proxy
或 trust
设置进行更改,则此类更改不会影响已置备的集群。
要将全局更改传播到现有集群,必须修补 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}}}}"