kind | 差异化策略的类型,包括:OverridePolicy、ClusterOverridePolicy。 |
name | 自定义差异化策略的名称。 |
namespace | 命名空间级别差异化策略所属的命名空间,当kind 选择OverridePolicy 时需要配置,直接指定已有命名空间的名称即可。 |
clusters | 差异化策略的 Yaml 配置文件中,通过targetClusters 中的clusters 来配置策略生效的成员集群,指定成员集群的 ID 即可。 overrideRules:
- targetClusters:
clusters:
- ccehg7mnqtofij7m5k0hg
- ccehg86nqtofij7m5k0ig
overriders:
jsonpatch:
...
|
clusterSelector | clusterSelector 集群标签:通过键值对形式的标签来匹配集群,差异化策略在 clusterSelector 标签匹配的成员集群内生效。 说明 控制台要求选择一种类型的集群标签进行配置,若同时配置多个标签,生效规则如下: 若使用 clusterSelector 类型的集群标签,成员集群必须匹配以下所有标签。 若同时使用 clusterSelector 和 clusterAffinity 类型的集群标签,两种标签之间的结果取交集。 当clusers 内容为空或长度为 0,且clusterSelector 和clusterAffinity 内容均为空时,表示匹配所有成员集群。
clusterSelector:
region: beijing
az: zone1
|
clusterAffinity | clusterAffinity 集群标签:通过强制调度条件中配置的选择器标签来匹配集群,差异化策略在 clusterAffinity 标签匹配的成员集群内生效。 说明 控制台要求选择一种类型的集群标签进行配置,若同时配置多个标签,生效规则如下: 若使用 clusterAffinity 类型的集群标签,成员集群只需满足以下任意一个「条件」,每个「条件」中的所有标签必须同时匹配。 若同时使用 clusterSelector 和 clusterAffinity 类型的集群标签,两种标签之间的结果取交集。 当clusers 内容为空或长度为 0,且clusterSelector 和clusterAffinity 内容均为空时,表示匹配所有成员集群。
clusterAffinity:
matchExpressions:
- key: region
operator: In
values:
- beijing
- key: provider
operator: In
values:
- volcengine
matchExpressions:
...
|
overriders | 差异化策略的 Yaml 配置文件中,使用overriders 配置覆写操作。表示对符合条件的成员集群中的资源进行具体的覆写操作,每个overriders 中支持多条覆写规则。
目前支持的覆写方法包括:jsonpatch 覆写语法、高级覆写语法,可根据实际情况按需选择。 |
jsonpatch | jsonpatch 是通用的覆写语法,适用于指定路径整体覆写字段的场景,资源覆盖面广但覆写颗粒度较粗。语法和示例介绍如下:
path:jsonpatch 中的path 表示目标覆写字段的路径。 operator:jsonpatch 中的operator 表示支持的操作,包括:add、remove、replace。 add: 向资源追加一个或多个元素。 remove: 从资源中删除一个或多个元素。 replace: 替换资源中的一个或多个元素。
value:jsonpatch 中的value 表示目标覆写字段的值。
overrideRules:
- targetClusters:
...
overriders:
jsonpatch:
- path: "/spec/template/spec/containers/0/image"
operator: replace
value: "nginx:test"
- path: /data/example
operator: add
value: 2
- path: /data/example
operator:remove
...
|
image | 封装覆写策略中的一种,可针对 image 资源进行细粒度字段覆写。镜像仓库地址组成为:[Registry '/'] Repository [ ":" Tag ][ "@" Digest ] ,在「image」中通过提供一下配置字段与配置方式实现镜像地址的覆写。
Kubernetes 原生资源和 CRD 资源的语法略有差异,如下介绍。 |
Kubernetes 原生资源: 针对 Deployment、StatefulSet、DaemonSet、Job、CronJob、Pod 资源,需要覆写的镜像地址路径明确,作为内置资源可直接指定 containerNames。 - containerNames:可选项,表示要操作 Pod 中的 Container 名称。不指定时表示适用于所有 Container;指定时表示仅适用于目标 Container。
说明 内置资源本质上是通过 container 名称明确覆写路径,原生资源也可以直接指定 CRD 中的 path 路径。 imageComponent:必填项,表示要操作的镜像仓库地址的哪个组成部分,可选值如下。 Registry:镜像所在仓库地址。 Repository:镜像名称。 Tag:镜像版本号。 Digest:镜像标识符。
operator:必填项,表示要对以上目标的操作方式,可选值如下。 addIfAbsent:将定义的值添加到目标现有值。例如:添加镜像 tag 或 digest。 overwrite:将定义的值替换目标现有值。例如:将 Registry 替换为相应环境的仓库地址。 delete:将目标的现有值整体删除。例如:将 Registry 统一删除。
value:必填项,表示以上操作中需要追加或替换的值。
overrideRules:
- targetClusters:
...
overriders:
image:
- containerNames:
- "server-1"
- "server-2"
operations:
- imageComponent: Registry
operator: addIfAbsent
value: cluster.io
|
CRD 资源: 因镜像地址路径不明确,用户需要手动指定需要覆写的路径 path。 imagePath:表示要进行覆写操作的资源路径,例如:/spec/template/spec/containers/0/image 。 imageComponent:同 Kubernetes 原生资源中的使用逻辑。 operator:同 Kubernetes 原生资源中的使用逻辑。 value:同 Kubernetes 原生资源中的使用逻辑。
overrideRules:
- targetClusters:
...
overriders:
image:
- imagePath: "/spec/templates/0/container/image"
operations:
- imageComponent: Registry
operator: addIfAbsent
value: cluster.io
- imageComponent: Repository
operator: overwrite
value: "over/echo-server"
- imageComponent: Tag
operator: delete
- imageComponent: Digest
operator: addIfAbsent
value: "sha256:aaaaf56b44807c6408d1726"
|
Command/Args | 封装覆写策略中的一种,可针对 Command 或 Args 资源进行细粒度字段覆写。 containerNames:可选项,表示要操作 Pod 中的 Container 名称。不指定时表示适用于所有 Container;指定时表示仅适用于目标 Container。 operator:必填项,表示要对以上目标的操作方式,可选值如下。 append:将定义的值追加到目标现有值。例如:在现有命令后追加补充命令。 overwrite:将定义的值替换目标现有值。例如:将已有命令整体替换为新命令。 delete:将目标的现有值整体删除。例如:将已有命令整体删除。
value:必填项,表示以上操作中需要追加或替换的值。
overrideRules:
- targetClusters:
...
overriders:
command:
- containerName: "server-1"
operator: append
value:
- "/bin/sh"
- "-c"
- "sleep 10s"
- containerName: "server-1"
operator: overwrite
value:
- "/bin/sh"
- "-c"
- "sleep 10s"
- containerName: "server-2"
operator: delete
value:
- "sleep 10s"
args:
- containerName: "server-1"
operator: append
value:
- "-v=4"
- "--enable-profiling"
|
Labels/Annotations | 封装覆写策略中的一种,可针对 Labels 或 Annotations 资源进行细粒度字段覆写。 overrideRules:
- targetClusters:
...
overriders:
labels:
- operator: addIfAbsent
value:
app: "chat"
- operator: overwrite
value:
version: "v1.1.0"
- operator: delete
value:
action: ""
annotations:
- operator: addIfAbsent
value:
imageregistry: "docker"
|