MutatingAdmissionPolicyBinding v1alpha1

MutatingAdmissionPolicyBinding 将 MutatingAdmissionPolicy 与参数化资源绑定。

apiVersion: admissionregistration.k8s.io/v1alpha1

import "k8s.io/api/admissionregistration/v1alpha1"

MutatingAdmissionPolicyBinding

MutatingAdmissionPolicyBinding 将 MutatingAdmissionPolicy 与参数化资源绑定。MutatingAdmissionPolicyBinding 和可选的参数资源一起定义了集群管理员配置集群策略的方式。

对于给定的准入请求,每个绑定将导致其策略被评估 N 次,其中 N 对于不使用参数的策略/绑定为 1,否则 N 是绑定选择的参数数量。每次评估都受到 运行时成本预算 的约束。

添加/删除策略、绑定或参数不会影响给定 (策略、绑定、参数) 组合是否在其自身的 CEL 预算范围内。


  • apiVersion: admissionregistration.k8s.io/v1alpha1

  • kind: MutatingAdmissionPolicyBinding

  • metadata (ObjectMeta)

    标准对象元数据;更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

  • spec (MutatingAdmissionPolicyBindingSpec)

    MutatingAdmissionPolicyBinding 期望行为的规范。

    MutatingAdmissionPolicyBindingSpec 是 MutatingAdmissionPolicyBinding 的规范。

    • spec.matchResources (MatchResources)

      matchResources 限制哪些资源与此绑定匹配,并且可能被其修改。请注意,如果 matchResources 匹配资源,则该资源也必须匹配策略的 matchConstraints 和 matchConditions 才能被修改。当 matchResources 未设置时,它不会约束资源匹配,并且只有策略的 matchConstraints 和 matchConditions 匹配才能修改资源。此外,matchResources.resourceRules 是可选的,并且在未设置时不会约束匹配。请注意,这与 MutatingAdmissionPolicy matchConstraints 不同,后者需要 resourceRules。允许 CREATE、UPDATE 和 CONNECT 操作。不允许匹配 DELETE 操作。'*' 匹配 CREATE、UPDATE 和 CONNECT。

      MatchResources 决定是否基于对象是否满足匹配标准来运行准入控制策略。排除规则优先于包含规则(如果资源同时匹配两者,则会被排除)

      • spec.matchResources.excludeResourceRules ([]NamedRuleWithOperations)

        原子:将在合并期间被替换

        ExcludeResourceRules 描述了策略不应关心哪些资源/子资源的哪些操作。排除规则优先于包含规则(如果资源同时匹配两者,则会被排除)

        NamedRuleWithOperations 是 Operations 和 Resources 与 ResourceNames 的元组。

        • spec.matchResources.excludeResourceRules.apiGroups ([]string)

          原子:将在合并期间被替换

          APIGroups 是资源所属的 API 组。'' 是所有组。如果存在 '',则切片的长度必须为一。必需。

        • spec.matchResources.excludeResourceRules.apiVersions ([]string)

          原子:将在合并期间被替换

          APIVersions 是资源所属的 API 版本。'' 是所有版本。如果存在 '',则切片的长度必须为一。必需。

        • spec.matchResources.excludeResourceRules.operations ([]string)

          原子:将在合并期间被替换

          Operations 是准入钩子关心的操作 - CREATE、UPDATE、DELETE、CONNECT 或 * 表示所有这些操作以及任何未来添加的准入操作。如果存在 '*',则切片的长度必须为一。必需。

        • spec.matchResources.excludeResourceRules.resourceNames ([]string)

          原子:将在合并期间被替换

          ResourceNames 是规则适用的名称的白名单。一个空集意味着允许所有内容。

        • spec.matchResources.excludeResourceRules.resources ([]string)

          原子:将在合并期间被替换

          Resources 是此规则应用的资源列表。

          例如:'pods' 表示 pods。'pods/log' 表示 pods 的 log 子资源。'' 表示所有资源,但不包括子资源。'pods/' 表示 pods 的所有子资源。'/scale' 表示所有 scale 子资源。'/*' 表示所有资源及其子资源。

          如果存在通配符,则验证规则将确保资源不会相互重叠。

          根据包含对象,可能不允许子资源。必需。

        • spec.matchResources.excludeResourceRules.scope (string)

          scope 指定此规则的范围。有效值是“Cluster”、“Namespaced”和“*”。“Cluster”表示只有集群范围的资源才会匹配此规则。Namespace API 对象是集群范围的。“Namespaced”表示只有命名空间范围的资源才会匹配此规则。“*”表示没有范围限制。子资源匹配其父资源的范围。默认值为“*”。

          可能的枚举值

          • "*" 表示包含所有范围。
          • "Cluster" 表示范围限制为集群范围的对象。命名空间对象是集群范围的。
          • "Namespaced" 表示范围限制为命名空间范围的对象。
      • spec.matchResources.matchPolicy (string)

        matchPolicy 定义如何使用“MatchResources”列表来匹配传入的请求。允许的值为“Exact”或“Equivalent”。

        • Exact: 仅当请求完全匹配指定的规则时才匹配。例如,如果 deployments 可以通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 进行修改,但“rules”仅包含 apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"],则准入策略不考虑对 apps/v1beta1 或 extensions/v1beta1 API 组的请求。

        • Equivalent: 如果修改规则中列出的资源,即使通过另一个 API 组或版本,也匹配请求。例如,如果 deployments 可以通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 进行修改,并且“rules”仅包含 apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"],则准入策略确实考虑对 apps/v1beta1 或 extensions/v1beta1 API 组的请求。API 服务器会在必要时将请求转换为匹配的资源 API。

        默认值为“Equivalent”

        可能的枚举值

        • "Equivalent" 表示如果请求修改规则中列出的资源,则应将请求发送到准入 webhook 或准入策略,即使通过等效的 API 组或版本。例如,autoscaling/v1autoscaling/v2 HorizontalPodAutoscalers 是等效的:相同的资源集通过这两个 API 出现。
        • "Exact" 表示仅当请求完全匹配给定的规则时,才应将请求发送到准入 webhook 或准入策略。
      • spec.matchResources.namespaceSelector (LabelSelector)

        NamespaceSelector 决定是否基于对象的命名空间是否与选择器匹配来运行准入控制策略。如果对象本身是一个命名空间,则匹配在 object.metadata.labels 上执行。如果对象是另一个集群范围的资源,则永远不会跳过策略。

        例如,要对任何命名空间未与“runlevel”关联为“0”或“1”的对象运行 webhook,您将按如下方式设置选择器:“namespaceSelector”:{“matchExpressions”:[{“key”:“runlevel”,“operator”:“NotIn”,“values”:[“0”,“1”]}]}

        如果您只想对任何与“environment”关联为“prod”或“staging”的对象的策略运行策略,您将按如下方式设置选择器:“namespaceSelector”:{“matchExpressions”:[{“key”:“environment”,“operator”:“In”,“values”:[“prod”,“staging”]}]}

        有关标签选择器的更多示例,请参阅 https://kubernetes.ac.cn/docs/concepts/overview/working-with-objects/labels/

        默认值为空 LabelSelector,它匹配所有内容。

      • spec.matchResources.objectSelector (LabelSelector)

        ObjectSelector 决定是否基于对象是否具有匹配的标签来运行策略。objectSelector 在发送到策略表达式 (CEL) 的 oldObject 和 newObject 上进行评估,如果任一对象匹配选择器,则认为匹配。空对象(在创建的情况下为 oldObject,在删除的情况下为 newObject)或无法具有标签的对象(例如 DeploymentRollback 或 PodProxyOptions 对象)不被认为匹配。仅当 webhook 是选择加入时才使用对象选择器,因为最终用户可以通过设置标签来跳过准入 webhook。默认情况下为空 LabelSelector,它匹配所有内容。

      • spec.matchResources.resourceRules ([]NamedRuleWithOperations)

        原子:将在合并期间被替换

        ResourceRules 描述了策略匹配哪些资源/子资源的哪些操作。如果策略匹配任何规则,则策略关心该操作。

        NamedRuleWithOperations 是 Operations 和 Resources 与 ResourceNames 的元组。

        • spec.matchResources.resourceRules.apiGroups ([]string)

          原子:将在合并期间被替换

          APIGroups 是资源所属的 API 组。'' 是所有组。如果存在 '',则切片的长度必须为一。必需。

        • spec.matchResources.resourceRules.apiVersions ([]string)

          原子:将在合并期间被替换

          APIVersions 是资源所属的 API 版本。'' 是所有版本。如果存在 '',则切片的长度必须为一。必需。

        • spec.matchResources.resourceRules.operations ([]string)

          原子:将在合并期间被替换

          Operations 是准入钩子关心的操作 - CREATE、UPDATE、DELETE、CONNECT 或 * 表示所有这些操作以及任何未来添加的准入操作。如果存在 '*',则切片的长度必须为一。必需。

        • spec.matchResources.resourceRules.resourceNames ([]string)

          原子:将在合并期间被替换

          ResourceNames 是规则适用的名称的白名单。一个空集意味着允许所有内容。

        • spec.matchResources.resourceRules.resources ([]string)

          原子:将在合并期间被替换

          Resources 是此规则应用的资源列表。

          例如:'pods' 表示 pods。'pods/log' 表示 pods 的 log 子资源。'' 表示所有资源,但不包括子资源。'pods/' 表示 pods 的所有子资源。'/scale' 表示所有 scale 子资源。'/*' 表示所有资源及其子资源。

          如果存在通配符,则验证规则将确保资源不会相互重叠。

          根据包含对象,可能不允许子资源。必需。

        • spec.matchResources.resourceRules.scope (string)

          scope 指定此规则的范围。有效值是“Cluster”、“Namespaced”和“*”。“Cluster”表示只有集群范围的资源才会匹配此规则。Namespace API 对象是集群范围的。“Namespaced”表示只有命名空间范围的资源才会匹配此规则。“*”表示没有范围限制。子资源匹配其父资源的范围。默认值为“*”。

          可能的枚举值

          • "*" 表示包含所有范围。
          • "Cluster" 表示范围限制为集群范围的对象。命名空间对象是集群范围的。
          • "Namespaced" 表示范围限制为命名空间范围的对象。
    • spec.paramRef (ParamRef)

      paramRef 指定用于配置准入控制策略的参数资源。它应指向绑定 MutatingAdmissionPolicy 的 spec.ParamKind 中指定的类型的资源。如果策略指定 ParamKind 并且由 ParamRef 引用的资源不存在,则此绑定被认为配置错误,并且 MutatingAdmissionPolicy 应用的 FailurePolicy。

      ParamRef 描述了如何找到用作规则输入参数的参数。

      • spec.paramRef.name (string)

        name 是正在引用的资源的名称。

        nameselector 是互斥属性。如果设置了其中一个,则必须取消设置另一个。

      • spec.paramRef.namespace (string)

        namespace 是引用资源的命名空间。允许将参数搜索限制到特定命名空间。适用于 nameselector 字段。

        可以通过在策略中指定命名空间范围的 paramKind 并将此字段保留为空来使用每个命名空间的参数。

        • 如果 paramKind 是集群范围的,则必须取消设置此字段。设置此字段会导致配置错误。

        • 如果 paramKind 是命名空间范围的,则在未设置此字段时,将使用正在评估准入的对象命名空间。请注意,如果将其留空,绑定不得匹配任何集群范围的资源,这将导致错误。

      • spec.paramRef.parameterNotFoundAction (string)

        parameterNotFoundAction 控制在资源存在且名称或选择器有效但绑定没有匹配参数时绑定的行为。如果该值为 Allow,则没有匹配的参数将被视为绑定成功的验证。如果设置为 Deny,则没有匹配的参数将受到策略的 failurePolicy 的影响。

        允许的值是 AllowDeny 默认值为 Deny

        可能的枚举值

        • "Allow" Ignore 表示忽略查找绑定参数的错误
        • "Deny" Fail 表示忽略查找绑定参数的错误
      • spec.paramRef.selector (LabelSelector)

        selector 可用于根据其标签匹配多个 param 对象。提供 selector: {} 以匹配 ParamKind 的所有资源。

        如果找到多个参数,则使用策略表达式对所有参数进行评估,并将结果 AND 运算在一起。

        必须设置 nameselector 中的一个,但 nameselector 是互斥属性。如果设置了其中一个,则必须取消设置另一个。

    • spec.policyName (string)

      policyName 引用 MutatingAdmissionPolicy 的名称,MutatingAdmissionPolicyBinding 将绑定到该名称。如果引用的资源不存在,则此绑定将被视为无效并被忽略。必需。

MutatingAdmissionPolicy

MutatingAdmissionPolicy 描述了定义一个准入变更策略,该策略变更进入准入链的对象。


  • apiVersion (string)

    APIVersion 定义此对象表示法的版本模式。服务器应将识别的模式转换为最新的内部值,并且可能拒绝未识别的值。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

  • kind (string)

    Kind 是一个字符串值,表示此对象所代表的 REST 资源。服务器可以从客户端提交请求的端点推断此值。不能更新。采用驼峰命名法。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

  • metadata (ObjectMeta)

    标准对象元数据;更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

  • spec (MutatingAdmissionPolicySpec)

    MutatingAdmissionPolicy 的期望行为的规范。

    MutatingAdmissionPolicySpec 是准入策略期望行为的规范。

    • spec.failurePolicy (string)

      failurePolicy 定义了如何处理准入策略的失败。失败可能来自 CEL 表达式解析错误、类型检查错误、运行时错误以及无效或错误配置的策略定义或绑定。

      如果 paramKind 引用一个不存在的 Kind,则策略无效。如果 paramRef.name 引用一个不存在的资源,则绑定无效。

      failurePolicy 不定义如何处理评估为 false 的验证。

      允许的值为 Ignore 或 Fail。默认值为 Fail。

      可能的枚举值

      • "Fail" 表示调用准入 webhook 或准入策略导致错误时,资源准入失败。
      • "Ignore" 表示调用准入 webhook 或准入策略导致错误时,该错误将被忽略。
    • spec.matchConditions ([]MatchCondition)

      补丁策略:在 key name 上合并

      映射:在合并期间将保留 key name 上的唯一值

      matchConditions 是一个条件列表,必须满足这些条件才能验证请求。匹配条件过滤掉已经由 matchConstraints 匹配的请求。空的 matchConditions 列表将匹配所有请求。允许的最大匹配条件数量为 64 个。

      如果提供了参数对象,则可以像验证表达式一样以 params 句柄访问它。

      确切的匹配逻辑是(按顺序)

      1. 如果任何 matchCondition 评估为 FALSE,则跳过策略。
      2. 如果所有 matchCondition 评估为 TRUE,则评估策略。
      3. 如果任何 matchCondition 评估为错误(但没有一个是 FALSE)
        • 如果 failurePolicy=Fail,则拒绝请求
        • 如果 failurePolicy=Ignore,则跳过策略

      **

      • spec.matchConditions.expression (string), required

        Expression 表示将由 CEL 评估的表达式。必须评估为布尔值。CEL 表达式可以访问来自 AdmissionRequest 和 Authorizer 的内容,这些内容组织到 CEL 变量中

        'object' - 来自传入请求的对象。对于 DELETE 请求,值为 null。 'oldObject' - 现有的对象。对于 CREATE 请求,值为 null。 'request' - 准入请求的属性(/pkg/apis/admission/types.go#AdmissionRequest)。 'authorizer' - 一个 CEL Authorizer。可用于对请求的主体(用户或服务帐户)执行授权检查。请参阅 https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz 'authorizer.requestResource' - 从 'authorizer' 构建的资源检查,并配置为请求资源。CEL 文档:https://kubernetes.ac.cn/docs/reference/using-api/cel/

        必需。

      • spec.matchConditions.name (string), required

        Name 是此匹配条件的标识符,用于匹配条件的策略合并,以及为日志记录目的提供标识符。好的名称应描述相关的表达式。Name 必须是一个合格名称,由字母数字字符、'-'、'' 或 '.' 组成,并且必须以字母数字字符开头和结尾(例如 'MyName',或 'my.name',或 '123-abc',用于验证的正则表达式为 '([A-Za-z0-9][-A-Za-z0-9.]*)?[A-Za-z0-9]'),并带有可选的 DNS 子域名前缀和 '/'(例如 'example.com/MyName')

        必需。

    • spec.matchConstraints (MatchResources)

      matchConstraints 指定此策略设计用于验证哪些资源。如果 MutatingAdmissionPolicy 匹配所有约束,则它关心一个请求。但是,为了防止集群进入无法通过 API 恢复的不稳定状态,MutatingAdmissionPolicy 不能匹配 MutatingAdmissionPolicy 和 MutatingAdmissionPolicyBinding。允许 CREATE、UPDATE 和 CONNECT 操作。不允许匹配 DELETE 操作。'*' 匹配 CREATE、UPDATE 和 CONNECT。必需。

      MatchResources 决定是否基于对象是否满足匹配标准来运行准入控制策略。排除规则优先于包含规则(如果资源同时匹配两者,则会被排除)

      • spec.matchConstraints.excludeResourceRules ([]NamedRuleWithOperations)

        原子:将在合并期间被替换

        ExcludeResourceRules 描述了策略不应关心哪些资源/子资源的哪些操作。排除规则优先于包含规则(如果资源同时匹配两者,则会被排除)

        NamedRuleWithOperations 是 Operations 和 Resources 与 ResourceNames 的元组。

        • spec.matchConstraints.excludeResourceRules.apiGroups ([]string)

          原子:将在合并期间被替换

          APIGroups 是资源所属的 API 组。'' 是所有组。如果存在 '',则切片的长度必须为一。必需。

        • spec.matchConstraints.excludeResourceRules.apiVersions ([]string)

          原子:将在合并期间被替换

          APIVersions 是资源所属的 API 版本。'' 是所有版本。如果存在 '',则切片的长度必须为一。必需。

        • spec.matchConstraints.excludeResourceRules.operations ([]string)

          原子:将在合并期间被替换

          Operations 是准入钩子关心的操作 - CREATE、UPDATE、DELETE、CONNECT 或 * 表示所有这些操作以及任何未来添加的准入操作。如果存在 '*',则切片的长度必须为一。必需。

        • spec.matchConstraints.excludeResourceRules.resourceNames ([]string)

          原子:将在合并期间被替换

          ResourceNames 是规则适用的名称的白名单。一个空集意味着允许所有内容。

        • spec.matchConstraints.excludeResourceRules.resources ([]string)

          原子:将在合并期间被替换

          Resources 是此规则应用的资源列表。

          例如:'pods' 表示 pods。'pods/log' 表示 pods 的 log 子资源。'' 表示所有资源,但不包括子资源。'pods/' 表示 pods 的所有子资源。'/scale' 表示所有 scale 子资源。'/*' 表示所有资源及其子资源。

          如果存在通配符,则验证规则将确保资源不会相互重叠。

          根据包含对象,可能不允许子资源。必需。

        • spec.matchConstraints.excludeResourceRules.scope (string)

          scope 指定此规则的范围。有效值是“Cluster”、“Namespaced”和“*”。“Cluster”表示只有集群范围的资源才会匹配此规则。Namespace API 对象是集群范围的。“Namespaced”表示只有命名空间范围的资源才会匹配此规则。“*”表示没有范围限制。子资源匹配其父资源的范围。默认值为“*”。

          可能的枚举值

          • "*" 表示包含所有范围。
          • "Cluster" 表示范围限制为集群范围的对象。命名空间对象是集群范围的。
          • "Namespaced" 表示范围限制为命名空间范围的对象。
      • spec.matchConstraints.matchPolicy (string)

        matchPolicy 定义如何使用“MatchResources”列表来匹配传入的请求。允许的值为“Exact”或“Equivalent”。

        • Exact: 仅当请求完全匹配指定的规则时才匹配。例如,如果 deployments 可以通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 进行修改,但“rules”仅包含 apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"],则准入策略不考虑对 apps/v1beta1 或 extensions/v1beta1 API 组的请求。

        • Equivalent: 如果修改规则中列出的资源,即使通过另一个 API 组或版本,也匹配请求。例如,如果 deployments 可以通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 进行修改,并且“rules”仅包含 apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"],则准入策略确实考虑对 apps/v1beta1 或 extensions/v1beta1 API 组的请求。API 服务器会在必要时将请求转换为匹配的资源 API。

        默认值为“Equivalent”

        可能的枚举值

        • "Equivalent" 表示如果请求修改规则中列出的资源,则应将请求发送到准入 webhook 或准入策略,即使通过等效的 API 组或版本。例如,autoscaling/v1autoscaling/v2 HorizontalPodAutoscalers 是等效的:相同的资源集通过这两个 API 出现。
        • "Exact" 表示仅当请求完全匹配给定的规则时,才应将请求发送到准入 webhook 或准入策略。
      • spec.matchConstraints.namespaceSelector (LabelSelector)

        NamespaceSelector 决定是否基于对象的命名空间是否与选择器匹配来运行准入控制策略。如果对象本身是一个命名空间,则匹配在 object.metadata.labels 上执行。如果对象是另一个集群范围的资源,则永远不会跳过策略。

        例如,要对任何命名空间未与“runlevel”关联为“0”或“1”的对象运行 webhook,您将按如下方式设置选择器:“namespaceSelector”:{“matchExpressions”:[{“key”:“runlevel”,“operator”:“NotIn”,“values”:[“0”,“1”]}]}

        如果您只想对任何与“environment”关联为“prod”或“staging”的对象的策略运行策略,您将按如下方式设置选择器:“namespaceSelector”:{“matchExpressions”:[{“key”:“environment”,“operator”:“In”,“values”:[“prod”,“staging”]}]}

        有关标签选择器的更多示例,请参阅 https://kubernetes.ac.cn/docs/concepts/overview/working-with-objects/labels/

        默认值为空 LabelSelector,它匹配所有内容。

      • spec.matchConstraints.objectSelector (LabelSelector)

        ObjectSelector 决定是否基于对象是否具有匹配的标签来运行策略。objectSelector 在发送到策略表达式 (CEL) 的 oldObject 和 newObject 上进行评估,如果任一对象匹配选择器,则认为匹配。空对象(在创建的情况下为 oldObject,在删除的情况下为 newObject)或无法具有标签的对象(例如 DeploymentRollback 或 PodProxyOptions 对象)不被认为匹配。仅当 webhook 是选择加入时才使用对象选择器,因为最终用户可以通过设置标签来跳过准入 webhook。默认情况下为空 LabelSelector,它匹配所有内容。

      • spec.matchConstraints.resourceRules ([]NamedRuleWithOperations)

        原子:将在合并期间被替换

        ResourceRules 描述了策略匹配哪些资源/子资源的哪些操作。如果策略匹配任何规则,则策略关心该操作。

        NamedRuleWithOperations 是 Operations 和 Resources 与 ResourceNames 的元组。

        • spec.matchConstraints.resourceRules.apiGroups ([]string)

          原子:将在合并期间被替换

          APIGroups 是资源所属的 API 组。'' 是所有组。如果存在 '',则切片的长度必须为一。必需。

        • spec.matchConstraints.resourceRules.apiVersions ([]string)

          原子:将在合并期间被替换

          APIVersions 是资源所属的 API 版本。'' 是所有版本。如果存在 '',则切片的长度必须为一。必需。

        • spec.matchConstraints.resourceRules.operations ([]string)

          原子:将在合并期间被替换

          Operations 是准入钩子关心的操作 - CREATE、UPDATE、DELETE、CONNECT 或 * 表示所有这些操作以及任何未来添加的准入操作。如果存在 '*',则切片的长度必须为一。必需。

        • spec.matchConstraints.resourceRules.resourceNames ([]string)

          原子:将在合并期间被替换

          ResourceNames 是规则适用的名称的白名单。一个空集意味着允许所有内容。

        • spec.matchConstraints.resourceRules.resources ([]string)

          原子:将在合并期间被替换

          Resources 是此规则应用的资源列表。

          例如:'pods' 表示 pods。'pods/log' 表示 pods 的 log 子资源。'' 表示所有资源,但不包括子资源。'pods/' 表示 pods 的所有子资源。'/scale' 表示所有 scale 子资源。'/*' 表示所有资源及其子资源。

          如果存在通配符,则验证规则将确保资源不会相互重叠。

          根据包含对象,可能不允许子资源。必需。

        • spec.matchConstraints.resourceRules.scope (string)

          scope 指定此规则的范围。有效值是“Cluster”、“Namespaced”和“*”。“Cluster”表示只有集群范围的资源才会匹配此规则。Namespace API 对象是集群范围的。“Namespaced”表示只有命名空间范围的资源才会匹配此规则。“*”表示没有范围限制。子资源匹配其父资源的范围。默认值为“*”。

          可能的枚举值

          • "*" 表示包含所有范围。
          • "Cluster" 表示范围限制为集群范围的对象。命名空间对象是集群范围的。
          • "Namespaced" 表示范围限制为命名空间范围的对象。
    • spec.mutations ([]Mutation)

      原子:将在合并期间被替换

      mutations 包含对匹配对象执行的操作。mutations 不能为空;至少需要一个 mutation。mutations 按顺序评估,并根据 reinvocationPolicy 重复调用。策略的 mutations 将针对此策略的每个绑定调用,并且 mutations 的重复调用是基于绑定的。

      Mutation 指定用于应用 Mutation 的 CEL 表达式。

      • spec.mutations.patchType (string), required

        patchType 指示使用的补丁策略。允许的值为 "ApplyConfiguration" 和 "JSONPatch"。必需。

        可能的枚举值

        • "ApplyConfiguration" ApplyConfiguration 表示 mutation 正在使用 apply configuration 来修改对象。
        • "JSONPatch" JSONPatch 表示对象通过 JSON Patch 进行修改。
      • spec.mutations.applyConfiguration (ApplyConfiguration)

        applyConfiguration 定义对象期望的配置值。使用 结构化合并差异将配置应用于准入对象。使用 CEL 表达式创建 apply configuration。

        ApplyConfiguration 定义对象的期望配置值。

        • spec.mutations.applyConfiguration.expression (string)

          expression 将由 CEL 评估以创建 apply configuration。参考:https://github.com/google/cel-spec

          使用对象初始化在 CEL 中声明 Apply configurations。例如,此 CEL 表达式返回一个 apply configuration 来设置单个字段

          Object{
            spec: Object.spec{
              serviceAccountName: "example"
            }
          }
          

          Apply configurations 不能修改原子结构、映射或数组,因为存在意外删除未包含在 apply configuration 中的值的风险。

          CEL 表达式可以访问创建 apply configurations 所需的对象类型

          • 'Object' - 资源对象的 CEL 类型。 - 'Object.<fieldName>' - 对象字段的 CEL 类型(例如 'Object.spec') - 'Object.<fieldName1>.<fieldName2>...<fieldNameN>` - 嵌套字段的 CEL 类型(例如 'Object.spec.containers')

          CEL 表达式可以访问 API 请求的内容,组织到 CEL 变量以及其他一些有用的变量中

          • 'object' - 来自传入请求的对象。对于 DELETE 请求,值为 null。 - 'oldObject' - 现有的对象。对于 CREATE 请求,值为 null。 - 'request' - API 请求的属性(参考)。 - 'params' - 策略绑定正在评估的参数资源。仅当策略具有 ParamKind 时才填充。 - 'namespaceObject' - 传入对象所属的命名空间对象。对于集群范围的资源,值为 null。 - 'variables' - 组合变量的映射,从其名称到其延迟评估的值。例如,名为 'foo' 的变量可以作为 'variables.foo' 访问。
          • 'authorizer' - 一个 CEL Authorizer。可用于对请求的主体(用户或服务帐户)执行授权检查。请参阅 https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
          • 'authorizer.requestResource' - 从 'authorizer' 构造的 CEL ResourceCheck,并配置为请求资源。

          apiVersionkindmetadata.namemetadata.generateName 始终可以从对象的根目录访问。不能访问其他元数据属性。

          只能访问形式为 [a-zA-Z_.-/][a-zA-Z0-9_.-/]* 的属性名称。必需。

      • spec.mutations.jsonPatch (JSONPatch)

        jsonPatch 定义一个 JSON patch 操作来执行对对象的 mutation。使用 CEL 表达式创建 JSON patch。

        JSONPatch 定义一个 JSON Patch。

        • spec.mutations.jsonPatch.expression (string)

          expression 将由 CEL 评估以创建一个 JSON patch。参考:https://github.com/google/cel-spec

          expression 必须返回一个 JSONPatch 值的数组。

          例如,这个 CEL 表达式返回一个 JSON patch,用于有条件地修改一个值

            [
              JSONPatch{op: "test", path: "/spec/example", value: "Red"},
              JSONPatch{op: "replace", path: "/spec/example", value: "Green"}
            ]
          

          要定义补丁值的对象,请使用 Object 类型。例如

            [
              JSONPatch{
                op: "add",
                path: "/spec/selector",
                value: Object.spec.selector{matchLabels: {"environment": "test"}}
              }
            ]
          

          要将包含 '/' 和 '~' 的字符串用作 JSONPatch 路径键,请使用 "jsonpatch.escapeKey"。例如

            [
              JSONPatch{
                op: "add",
                path: "/metadata/labels/" + jsonpatch.escapeKey("example.com/environment"),
                value: "test"
              },
            ]
          

          CEL 表达式可以访问创建 JSON patch 和对象所需的类型

          • 'JSONPatch' - JSON Patch 操作的 CEL 类型。JSONPatch 具有 'op'、'from'、'path' 和 'value' 字段。有关更多详细信息,请参阅 JSON patch。如果设置了 'value' 字段,则必须将 'path' 和 'from' 字段设置为 JSON 指针 字符串,其中可以使用 CEL 函数 'jsonpatch.escapeKey()' 来转义包含 '/' 和 '~' 的路径键。
          • 'Object' - 资源对象的 CEL 类型。 - 'Object.<fieldName>' - 对象字段的 CEL 类型(例如 'Object.spec') - 'Object.<fieldName1>.<fieldName2>...<fieldNameN>` - 嵌套字段的 CEL 类型(例如 'Object.spec.containers')

          CEL 表达式可以访问 API 请求的内容,组织到 CEL 变量以及其他一些有用的变量中

          • 'object' - 来自传入请求的对象。对于 DELETE 请求,值为 null。 - 'oldObject' - 现有的对象。对于 CREATE 请求,值为 null。 - 'request' - API 请求的属性(参考)。 - 'params' - 策略绑定正在评估的参数资源。仅当策略具有 ParamKind 时才填充。 - 'namespaceObject' - 传入对象所属的命名空间对象。对于集群范围的资源,值为 null。 - 'variables' - 组合变量的映射,从其名称到其延迟评估的值。例如,名为 'foo' 的变量可以作为 'variables.foo' 访问。
          • 'authorizer' - 一个 CEL Authorizer。可用于对请求的主体(用户或服务帐户)执行授权检查。请参阅 https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
          • 'authorizer.requestResource' - 从 'authorizer' 构造的 CEL ResourceCheck,并配置为请求资源。

          CEL 表达式可以访问 Kubernetes CEL 函数库以及

          • 'jsonpatch.escapeKey' - 执行 JSONPatch 密钥转义。'~' 和 '/' 分别转义为 '~0' 和 `~1'。

          只能访问形式为 [a-zA-Z_.-/][a-zA-Z0-9_.-/]* 的属性名称。必需。

    • spec.paramKind (ParamKind)

      paramKind 指定用于参数化此策略的资源的类型。如果未设置,则此策略没有参数,并且 param CEL 变量不会提供给验证表达式。如果 paramKind 引用一个不存在的 Kind,则此策略定义配置错误,并且将应用 FailurePolicy。如果指定了 paramKind 但在 MutatingAdmissionPolicyBinding 中未设置 paramRef,则 params 变量将为 null。

      ParamKind 是 Group、Kind 和 Version 的元组。

      • spec.paramKind.apiVersion (string)

        APIVersion 是资源所属的 API 组版本。格式为 "group/version"。必需。

      • spec.paramKind.kind (string)

        Kind 是资源所属的 API 类型。必需。

    • spec.reinvocationPolicy (string)

      reinvocationPolicy 指示 mutation 是否可以在单个准入评估中针对单个 MutatingAdmissionPolicyBinding 被多次调用。允许的值为 "Never" 和 "IfNeeded"。

      Never: 这些 mutation 在单个准入评估中不会被调用超过一次。

      IfNeeded: 这些 mutation 可以在单个准入请求的绑定中被调用多次,并且相对于其他准入插件、准入 webhook、此策略的绑定和准入策略,没有调用顺序的保证。当 mutation 调用后修改对象时,才会重复调用 mutation。必需。

      可能的枚举值

      • "IfNeeded" 表示如果被准入的对象在初始 mutation 调用后被其他准入插件修改,则 mutation 可能会被调用至少一次额外的次数。
      • "Never" 表示 mutation 在单个准入评估中不得被调用超过一次。
    • spec.variables ([]Variable)

      原子:将在合并期间被替换

      variables 包含用于组合其他表达式的变量的定义。每个变量定义为命名的 CEL 表达式。此处定义的变量将在策略的其他表达式中可用,但 matchConditions 除外,因为 matchConditions 在策略的其余部分之前进行评估。

      变量的表达式可以引用列表中更早定义的其他变量,但不能引用其后的变量。因此,变量必须按首次出现的顺序排序,并且是无环的。

      Variable 是用于组合的变量的定义。

      • spec.variables.expression (string), 必需

        Expression 是将评估为变量值的表达式。CEL 表达式可以访问与 Validation 中的 CEL 表达式相同的标识符。

      • spec.variables.name (string), 必需

        Name 是变量的名称。名称必须是有效的 CEL 标识符,并且在所有变量中是唯一的。可以通过 variables 在其他表达式中访问该变量。例如,如果名称为 "foo",则该变量将作为 variables.foo 访问

MutatingAdmissionPolicyBindingList

MutatingAdmissionPolicyBindingList 是 MutatingAdmissionPolicyBinding 的列表。


操作


get 读取指定的 MutatingAdmissionPolicyBinding

HTTP 请求

GET /apis/admissionregistration.k8s.io/v1alpha1/mutatingadmissionpolicybindings/{name}

Parameters

  • name (在路径中): string, 必需

    MutatingAdmissionPolicyBinding 的名称

  • pretty (在查询中): string

    pretty

响应

200 (MutatingAdmissionPolicyBinding): OK

401: 未授权

list 列出或监视 MutatingAdmissionPolicyBinding 对象

HTTP 请求

GET /apis/admissionregistration.k8s.io/v1alpha1/mutatingadmissionpolicybindings

Parameters

响应

200 (MutatingAdmissionPolicyBindingList): OK

401: 未授权

create 创建一个 MutatingAdmissionPolicyBinding

HTTP 请求

POST /apis/admissionregistration.k8s.io/v1alpha1/mutatingadmissionpolicybindings

Parameters

响应

200 (MutatingAdmissionPolicyBinding): OK

201 (MutatingAdmissionPolicyBinding): Created

202 (MutatingAdmissionPolicyBinding): Accepted

401: 未授权

update 替换指定的 MutatingAdmissionPolicyBinding

HTTP 请求

PUT /apis/admissionregistration.k8s.io/v1alpha1/mutatingadmissionpolicybindings/{name}

Parameters

响应

200 (MutatingAdmissionPolicyBinding): OK

201 (MutatingAdmissionPolicyBinding): Created

401: 未授权

patch 部分更新指定的 MutatingAdmissionPolicyBinding

HTTP 请求

PATCH /apis/admissionregistration.k8s.io/v1alpha1/mutatingadmissionpolicybindings/{name}

Parameters

  • name (在路径中): string, 必需

    MutatingAdmissionPolicyBinding 的名称

  • body: Patch, 必需

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • force (in query): boolean

    force

  • pretty (在查询中): string

    pretty

响应

200 (MutatingAdmissionPolicyBinding): OK

201 (MutatingAdmissionPolicyBinding): Created

401: 未授权

delete 删除一个 MutatingAdmissionPolicyBinding

HTTP 请求

DELETE /apis/admissionregistration.k8s.io/v1alpha1/mutatingadmissionpolicybindings/{name}

Parameters

响应

200 (Status): 确定

202 (Status): 已接受

401: 未授权

deletecollection 删除 MutatingAdmissionPolicyBinding 的集合

HTTP 请求

DELETE /apis/admissionregistration.k8s.io/v1alpha1/mutatingadmissionpolicybindings

Parameters

响应

200 (Status): 确定

401: 未授权

本页面是自动生成的。

如果您打算报告此页面的问题,请在您的问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

上次修改时间:2025年12月21日 下午5:37 PST:更新 v1.35 资源文档 (85b57273c5)