您可以使用关键功能的全局设置自定义 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
参数为httpProxy
、httpsProxy
和noProxy
。如果添加proxy
部分,则所有三个字段均为必填字段。 - 您可以使用 HTTP 连接到代理服务器。不支持 HTTPS 连接。
- 从工作负载网络获取所需的
spec.proxy.noProxy
值。不得通过将命名空间网络(以前称为“Pod CIDR”)、输入(以前称为“输入 CIDR”)和输出(以前称为“输出 CIDR”)包含在noProxy
字段中对其进行代理。请参阅下面的示例图像。 - 无需在
noProxy
字段中包括“服务 CIDR”。Tanzu Kubernetes 集群不与此子网交互。 - 无需在
noProxy
字段中包括 Tanzu Kubernetes 集群规范的network.services.cidrBlocks
和network.pods.cidrBlocks
值。系统不会自动代理这些子网。 - 无需在
noProxy
字段中包括localhost
和127.0.0.1
。系统不会自动代理端点。
何时使用全局或每个集群配置选项
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}}}}"