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)
字段选择器要求列表。
-
-
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)
字段选择器要求列表。
-
-
spec.targetCluster.labelSelector (LabelSelector)
LabelSelector 是一个按标签选择成员集群的过滤器。如果值不为 nil,也未留空,仅选择与此过滤器匹配的集群。
-
-
ClusterOverridePolicyList
ClusterOverridePolicyList 表示一组 ClusterOverridePolicy 的集合。
-
apiVersion:policy.karmada.io/v1alpha1
-
kind:ClusterOverridePolicyList
-
metadata (ListMeta)
-
items ([]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