ClusterOverridePolicy v1alpha1
apiVersion: policy.karmada.io/v1alpha1
import "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1"
ClusterOverridePolicy
ClusterOverridePolicy 表示将一组资源覆盖到一个或多个集群的集群范围策略。
apiVersion:policy.karmada.io/v1alpha1
kind:ClusterOverridePolicy
metadata (ObjectMeta)
spec (OverrideSpec),必选
Spec 表示 ClusterOverridePolicy 的规范。
OverrideSpec 定义了 OverridePolicy 的规范。
spec.overrideRules ([]RuleWithCluster)
OverrideRules 定义了一组针对目标集群的覆盖规则。
RuleWithCluster 定义集群的覆盖规则。
spec.overrideRules.overriders (Overriders), 必选
Overriders 表示将应用于资源的覆盖规则。
*Overriders 提供各种表示覆盖规则的替代方案。
如果多个替代方案并存,将按以下顺序应用:ImageOverrider > CommandOverrider > ArgsOverrider > LabelsOverrider > AnnotationsOverrider > Plaintext*
spec.overrideRules.overriders.annotationsOverrider ([]LabelAnnotationOverrider)
AnnotationsOverrider 表示用于处理工作负载注解的专属规则。
LabelAnnotationOverrider 表示用于处理工作负载标签/注解的专属规则。
spec.overrideRules.overriders.annotationsOverrider.operator (string),必选
Operator 表示将应用于工作负载的运算符。
spec.overrideRules.overriders.annotationsOverrider.value (map[string]string)
Value 表示工作负载 annotation/label 的值。当运算符为“add(添加)"时,Value 中的项会附加在 annotation/label 之后。当运算符为“remove(移除)”时,Value 中与 annotation/label 匹配的项将被删除。当运算符为“replace(替换)”时,Value 中与 annotation/label 匹配的项将被替换。
spec.overrideRules.overriders.argsOverrider ([]CommandArgsOverrider)
ArgsOverrider 表示用于处理容器 args 的专属规则。
CommandArgsOverrider 表示用于处理 command/args 覆盖的专属规则。
spec.overrideRules.overriders.argsOverrider.containerName (string),必选
容器的名称。
spec.overrideRules.overriders.argsOverrider.operator (string),必选
Operator 表示将应用于 command/args 的运算符。
spec.overrideRules.overriders.argsOverrider.value ([]string)
Value 表示 command/args 的值。当运算符为“add(添加)"时,Value 中的项会附加在 command/args 之后。当运算符为“remove(移除)”时,Value 中与 command/args 匹配的项将被删除。如果 Value 为空,command/args 将保持不变。
spec.overrideRules.overriders.commandOverrider ([]CommandArgsOverrider)
CommandOverrider 表示用于处理容器 command 的专属规则。
CommandArgsOverrider 表示用于处理 command/args 覆盖的专属规则。
spec.overrideRules.overriders.commandOverrider.containerName (string),必选
容器的名称。
spec.overrideRules.overriders.commandOverrider.operator (string),必选
Operator 表示将应用于 command/args 的运算符。
spec.overrideRules.overriders.commandOverrider.value ([]string)
Value 表示 command/args 的值。当运算符为“add(添加)"时,Value 中的项会附加在 command/args 之后。当运算符为“remove(移除)”时,Value 中与 command/args 匹配的项将被删除。如果 Value 为空,command/args 将保持不变。
spec.overrideRules.overriders.imageOverrider ([]ImageOverrider)
ImageOverrider 表示用于处理镜像覆盖的专属规则。
ImageOverrider 表示用于处理镜像覆盖的专属规则。
spec.overrideRules.overriders.imageOverrider.component (string),必选
组件是镜像名称的一部分。镜像名称通常表示为[registry/]repository[:tag]。registry 可能是 - registry.k8s.io - fictional.registry.example:10443;repository 可能是 kube-apiserver - fictional/nginx;标签可能是 -latest- v1.19.1 - @sha256:dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9c
spec.overrideRules.overriders.imageOverrider.operator (string),必选
Operator 表示将应用于镜像的运算符。
spec.overrideRules.overriders.imageOverrider.predicate (ImagePredicate)
在应用规则之前,Predicate 会对镜像进行过滤。
默认值为 nil。如果设置为默认值,并且资源类型为 Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet 或 Job,系统将按照以下规则自动检测镜像字段:
- Pod: /spec/containers/<N>/image
- ReplicaSet: /spec/template/spec/containers/<N>/image
- Deployment: /spec/template/spec/containers/<N>/image
- DaemonSet: /spec/template/spec/containers/<N>/image
- StatefulSet: /spec/template/spec/containers/<N>/image
- Job: /spec/template/spec/containers/<N>/image
此外,如果资源对象有多个容器,所有镜像都将被处理。
如果值不是 nil,仅处理与过滤条件匹配的镜像。
ImagePredicate 定义了镜像的过滤条件。
spec.overrideRules.overriders.imageOverrider.predicate.path (string),必选
Path 表示目标字段的路径。
spec.overrideRules.overriders.imageOverrider.value (string)
Value 表示镜像的值。当运算符为“add(添加)”或“replace(替换)”时,不得为空。当运算符为“remove(删除)”时,默认为空且可忽略。
spec.overrideRules.overriders.labelsOverrider ([]LabelAnnotationOverrider)
LabelsOverrider 表示用于处理工作负载标签的专属规则。
LabelAnnotationOverrider表示用于处理工作负载 labels/annotations 的专属规则。
spec.overrideRules.overriders.labelsOverrider.operator (string),必选
Operator 表示将应用于工作负载的运算符。
spec.overrideRules.overriders.labelsOverrider.value (map[string]string)
Value 表示工作负载的 annotation/label 的值。当运算符为“add(添加)"时,Value 中的项会附加在 annotation/label 之后。当运算符为“remove(移除)”时,Value 中与 annotation/label 匹配的项将被删除。当运算符为“replace(替换)”时,Value 中与 annotation/label 匹配的项将被替换。
spec.overrideRules.overriders.plaintext ([]PlaintextOverrider)
Plaintext 表示用明文定义的覆盖规则。
PlaintextOverrider 根据路径、运算符和值覆盖目标字段。
spec.overrideRules.overriders.plaintext.operator (string),必选
Operator 表示对目标字段进行的操作。可用的运算符有:添加(add)、替换(replace)和删除(remove)。
spec.overrideRules.overriders.plaintext.path (string),必选
Path 表示目标字段的路径。
spec.overrideRules.overriders.plaintext.value (JSON)
Value 表示目标字段的值。当操作符为“remove(删除)”时,必须为空。
JSON 表示任何有效的 JSON 值。支持以下类型:bool、int64、float64、string、[]interface[]、map[string]interface[]和 nil
spec.overrideRules.targetCluster (ClusterAffinity)
TargetCluster 定义了对此覆盖策略的限制,此覆盖策略仅适用于分发到匹配集群的资源。nil 表示匹配所有集群。
ClusterAffinity 表示用于选择集群的过滤条件。
spec.overrideRules.targetCluster.clusterNames ([]string)
ClusterNames 罗列待选择的集群。
spec.overrideRules.targetCluster.exclude ([]string)
ExcludedClusters 罗列待忽略的集群。
spec.overrideRules.targetCluster.fieldSelector (FieldSelector)
FieldSelector 是一个按字段选择成员集群的过滤器。匹配表达式的键(字段)为 provider、region 或 zone,匹配表达式的运算符为 In 或 NotIn。如果值不为 nil,也未留空,仅选择与此过滤器匹配的集群。
FieldSelector 是一个字段过滤器。
spec.overrideRules.targetCluster.fieldSelector.matchExpressions ([][NodeSelectorRequirement](../common-definitions/node-selector-requirement#nodeselectorrequirement))
字段选择器要求列表。
spec.overrideRules.targetCluster.labelSelector (LabelSelector)
LabelSelector 是一个按标签选择成员集群的过滤器。如果值不为 nil,也未留空,仅选择与此过滤器匹配的集群。
spec.overriders (Overriders)
Overriders 表示将应用于资源的覆盖规则。
Deprecated:此字段已在 v1.0 中被弃用,请改用 OverrideRules。
*Overriders 提供各种表示覆盖规则的替代方案。
如果多个替代方案并存,将按以下顺序应用: ImageOverrider > CommandOverrider > ArgsOverrider > LabelsOverrider > AnnotationsOverrider > Plaintext*
spec.overriders.annotationsOverrider ([]LabelAnnotationOverrider)
AnnotationsOverrider 表示用于处理工作负载注解的专属规则。
LabelAnnotationOverrider表示用于处理工作负载 labels/annotations 的专属规则。
spec.overriders.annotationsOverrider.operator (string),必选
Operator 表示将应用于工作负载的运算符。
spec.overriders.annotationsOverrider.value (map[string]string)
Value 表示工作负载的注解/标签的值。当运算符为“add(添加)"时,Value 中的项会附加在 annotation/label 之后。当运算符为“remove(移除)”时,Value 中与 annotation/label 匹配的项将被删除。当运算符为“replace(替换)”时,Value 中与 annotation/label 匹配的项将被替换。
spec.overriders.argsOverrider ([]CommandArgsOverrider)
ArgsOverrider 表示用于处理容器 args 的专属规则。
CommandArgsOverrider 表示用于处理 command/args 覆盖的专属规则。
spec.overriders.argsOverrider.containerName (string),必选
容器的名称。
spec.overriders.argsOverrider.operator (string),必选
Operator 表示将应用于 command/args 的运算符。
spec.overriders.argsOverrider.value ([]string)
Value 表示 command/args 的值。当运算符为“add(添加)"时,Value 中的项会附加在 command/args 之后。当运算符为“remove(移除)”时,Value 中与 command/args 匹配的项将被删除。如果 Value 为空,则 command/args 将保持不变。
spec.overriders.commandOverrider ([]CommandArgsOverrider)
CommandOverrider 表示用于处理容器命令的专属规则。
CommandArgsOverrider 表示用于处理 command/args 覆盖的专属规则。
spec.overriders.commandOverrider.containerName (string),必选
容器的名称。
spec.overriders.commandOverrider.operator (string),必选
Operator 表示将应用于 command/args 的运算符。
spec.overriders.commandOverrider.value ([]string)
Value 表示 command/args 的值。当运算符为“add(添加)"时,Value 中的项会附加在 command/args 之后。当运算符为“remove(移除)”时,Value 中与 command/args 匹配的项将被删除。如果 Value 为空,则 command/args 将保持不变。
spec.overriders.imageOverrider ([]ImageOverrider)
ImageOverrider 表示用于处理镜像覆盖的专属规则。
ImageOverrider 表示用于处理镜像覆盖的专属规则。
spec.overriders.imageOverrider.component (string),必选
组件是镜像名称的一部分。镜像名称通常表示为[registry/]repository[:tag]。registry 可能是 - registry.k8s.io - fictional.registry.example:10443;repository 可能是 kube-apiserver - fictional/nginx;标签可能是 -latest- v1.19.1 - @sha256:dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9c
spec.overriders.imageOverrider.operator (string),必选
Operator 表示将应用于镜像的运算符。
spec.overriders.imageOverrider.predicate (ImagePredicate)
在应用规则之前,Predicate 会对镜像进行过滤。
默认值为 nil。如果设置为默认值,并且资源类型为 Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet 或 Job,系统将按照以下规则自动检测镜像字段:
- Pod: /spec/containers/<N>/image
- ReplicaSet: /spec/template/spec/containers/<N>/image
- Deployment: /spec/template/spec/containers/<N>/image
- DaemonSet: /spec/template/spec/containers/<N>/image
- StatefulSet: /spec/template/spec/containers/<N>/image
- Job: /spec/template/spec/containers/<N>/image
此外,如果资源对象有多个容器,所有镜像都将被处理。
如果值不是 nil,仅处理与过滤条件匹配的镜像。
ImagePredicate 定义了镜像的过滤条件。
spec.overriders.imageOverrider.predicate.path (string),必选
Path 表示目标字段的路径。
spec.overriders.imageOverrider.value (string)
Value 表示应用于镜像的值。当运算符为“add(添加)”或“replace(替换)”时,不得为空。当运算符为“remove(删除)”时,默认为空且可忽略。
spec.overriders.labelsOverrider ([]LabelAnnotationOverrider)
LabelsOverrider 表示用于处理工作负载标签的专属规则。
LabelAnnotationOverrider 表示用于处理工作负载 labels/annotations 的专属规则。
spec.overriders.labelsOverrider.operator (string),必选
Operator 表示将应用于工作负载的运算符。
spec.overriders.labelsOverrider.value (map[string]string)
Value 表示工作负载的注解/标签的值。当运算符为“add(添加)"时,Value 中的项会附加在 annotation/label 之后。当运算符为“remove(移除)”时,Value 中与 annotation/label 匹配的项将被删除。当运算符为“replace(替换)”时,Value 中与 annotation/label 匹配的项将被替换。
spec.overriders.plaintext ([]PlaintextOverrider)
Plaintext 表示用明文定义的覆盖规则。
PlaintextOverrider 根据路径、运算符和值覆盖目标字段。
spec.overriders.plaintext.operator (string),必选
Operator 表示对目标字段进行的操作。可用的运算符有:添加(add)、替换(replace)和删除(remove)。
spec.overriders.plaintext.path (string),必选
Path 表示目标字段的路径。
spec.overriders.plaintext.value (JSON)
Value 表示应用于目标字段的值。当操作符为“remove(删除)”时,必须为空。
JSON 表示任何有效的 JSON 值。支持以下类型:bool、int64、float64、string、[]interface[]、map[string]interface[]和 nil
spec.resourceSelectors ([]ResourceSelector)
ResourceSelectors 限制此覆盖策略适用的资源类型。nil 表示此覆盖策略适用于所有资源。
ResourceSelector 用于选择资源。
spec.resourceSelectors.apiVersion (string),必选
APIVersion 表示目标资源的 API 版本。
spec.resourceSelectors.kind (string),必选
Kind 表示目标资源的类别。
spec.resourceSelectors.labelSelector (LabelSelector)
查询一组资源的标签。如果 name 不为空,labelSelector 会被忽略。
spec.resourceSelectors.name (string)
目标资源的名称。默认值为空,表示选择所有资源。
spec.resourceSelectors.namespace (string)
目标资源的 namespace。默认值为空,表示从父对象作用域继承资源。
spec.targetCluster (ClusterAffinity)
TargetCluster 定义对此覆盖策略的限制,此覆盖策略仅适用于分发到匹配集群的资源。nil:匹配所有集群。
Deprecated:此字段已在 v1.0 中被弃用,请改用 OverrideRules。
ClusterAffinity 表示用于选择集群的过滤条件。
spec.targetCluster.clusterNames ([]string)
ClusterNames 罗列待选择的集群。
spec.targetCluster.exclude ([]string)
ExcludedClusters 罗列待忽略的集群。
spec.targetCluster.fieldSelector (FieldSelector)
FieldSelector 是一个按字段选择成员集群的过滤器。匹配表达式的键(字段)为 provider、region 或 zone,匹配表达式的运算符为 In 或 NotIn。如果值不为 nil,也未留空,仅选择与此过滤器匹配的集群。
FieldSelector 是一个字段过滤器。
spec.targetCluster.fieldSelector.matchExpressions ([][NodeSelectorRequirement](../common-definitions/node-selector-requirement#nodeselectorrequirement))
字段选择器要求列表。
spec.targetCluster.labelSelector (LabelSelector)
LabelSelector 是一个按标签选择成员集群的过滤器。如果值不为 nil,也未留空,仅选择与此过滤器匹配的集群。
ClusterOverridePolicyList
ClusterOverridePolicyList 表示一组 ClusterOverridePolicy 的集合。
apiVersion:policy.karmada.io/v1alpha1
kind:ClusterOverridePolicyList
metadata (ListMeta)
items ([][ClusterOverridePolicy](../policy-resources/cluster-override-policy-v1alpha1#clusteroverridepolicy)),必选
Items 罗列 ClusterOverridePolicy。
操作
get
:查询指定的 ClusterOverridePolicy
HTTP 请求
GET /apis/policy.karmada.io/v1alpha1/clusteroverridepolicies/{name}
参数
名称(路径参数):string,必选
ClusterOverridePolicy 的名称
pretty(查询参数):string
响应
200 (ClusterOverridePolicy):OK
get
:查询指定 ClusterOverridePolicy 的状态
HTTP 请求
GET /apis/policy.karmada.io/v1alpha1/clusteroverridepolicies/{name}/status
参数
名称(路径参数):string,必选
ClusterOverridePolicy 的名称
pretty(查询参数):string
响应
200 (ClusterOverridePolicy):OK
list
:查询所有的 ClusterOverridePolicy
HTTP 请求
GET /apis/policy.karmada.io/v1alpha1/clusteroverridepolicies
参数
allowWatchBookmarks(查询参数):boolean
continue(查询参数):string
fieldSelector(查询参数):string
labelSelector(查询参数):string
limit(查询参数):integer
pretty(查询参数):string
resourceVersion(查询参数):string
resourceVersionMatch(查询参数):string
sendInitialEvents(查询参数):boolean
timeoutSeconds(查询参数):integer
watch(查询参数):boolean
响应
200 (ClusterOverridePolicyList):OK
create
:创建一条 ClusterOverridePolicy
HTTP 请求
POST /apis/policy.karmada.io/v1alpha1/clusteroverridepolicies
参数
- body: ClusterOverridePolicy,必选
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
pretty(查询参数):string
响应
200 (ClusterOverridePolicy):OK
201 (ClusterOverridePolicy):Created
202 (ClusterOverridePolicy):Accepted
update
:更新指定的 ClusterOverridePolicy
HTTP 请求
PUT /apis/policy.karmada.io/v1alpha1/clusteroverridepolicies/{name}
参数
名称(路径参数):string,必选
ClusterOverridePolicy 的名称
body: ClusterOverridePolicy,必选
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
pretty(查询参数):string
响应
200 (ClusterOverridePolicy):OK
201 (ClusterOverridePolicy):Created
update
:更新指定 ClusterOverridePolicy 的状态
HTTP 请求
PUT /apis/policy.karmada.io/v1alpha1/clusteroverridepolicies/{name}/status
参数
名称(路径参数):string,必选
ClusterOverridePolicy 的名称
body: ClusterOverridePolicy,必选
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
pretty(查询参数):string
响应
200 (ClusterOverridePolicy):OK
201 (ClusterOverridePolicy):Created
patch
:更新指定 ClusterOverridePolicy 的部分信息
HTTP 请求
PATCH /apis/policy.karmada.io/v1alpha1/clusteroverridepolicies/{name}
参数
名称(路径参数):string,必选
ClusterOverridePolicy 的名称
body: Patch,必选
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
force(查询参数):boolean
pretty(查询参数):string
响应
200 (ClusterOverridePolicy):OK
201 (ClusterOverridePolicy):Created
patch
:更新指定 ClusterOverridePolicy 状态的部分信息
HTTP 请求
PATCH /apis/policy.karmada.io/v1alpha1/clusteroverridepolicies/{name}/status
参数
名称(路径参数):string,必选
ClusterOverridePolicy 的名称
body: Patch,必选
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
force(查询参数):boolean
pretty(查询参数):string
响应
200 (ClusterOverridePolicy):OK
201 (ClusterOverridePolicy):Created
delete
:删除一条 ClusterOverridePolicy
HTTP 请求
DELETE /apis/policy.karmada.io/v1alpha1/clusteroverridepolicies/{name}
参数
名称(路径参数):string,必选
ClusterOverridePolicy 的名称
body: DeleteOptions
dryRun(查询参数):string
gracePeriodSeconds(查询参数):integer
pretty(查询参数):string
propagationPolicy(查询参数):string
响应
200 (Status):OK
202 (Status):Accepted
deletecollection
:删除所有 ClusterOverridePolicy
HTTP 请求
DELETE /apis/policy.karmada.io/v1alpha1/clusteroverridepolicies
参数
- body: DeleteOptions
continue(查询参数):string
dryRun(查询参数):string
fieldSelector(查询参数):string
gracePeriodSeconds(查询参数):integer
labelSelector(查询参数):string
limit(查询参数):integer
pretty(查询参数):string
propagationPolicy(查询参数):string
resourceVersion(查询参数):string
resourceVersionMatch(查询参数):string
sendInitialEvents(查询参数):boolean
timeoutSeconds (查询参数):integer
响应
200 (Status):OK