×

规格

属性 类型 描述

apiVersion

字符串

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

kind

字符串

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

webhooks

数组

Webhooks 是 Webhook 列表以及受影响的资源和操作。

webhooks[]

对象

ValidatingWebhook 描述了准入 Webhook 及其应用到的资源和操作。

.webhooks

描述

Webhooks 是 Webhook 列表以及受影响的资源和操作。

类型

数组

.webhooks[]

描述

ValidatingWebhook 描述了准入 Webhook 及其应用到的资源和操作。

类型

对象

必需
  • name

  • clientConfig

  • sideEffects

  • admissionReviewVersions

属性 类型 描述

admissionReviewVersions

数组 (字符串)

AdmissionReviewVersions 是 Webhook 预期的首选AdmissionReview版本的排序列表。API 服务器将尝试使用列表中它支持的第一个版本。如果此列表中指定的版本均不受 API 服务器支持,则此对象的验证将失败。如果持久化 Webhook 配置指定了允许的版本,但不包含 API 服务器已知的任何版本,则对 Webhook 的调用将失败并受失败策略影响。

clientConfig

对象

WebhookClientConfig 包含与 Webhook 建立 TLS 连接所需的信息

failurePolicy

字符串

FailurePolicy 定义了如何处理来自准入端点的无法识别的错误——允许的值为 Ignore 或 Fail。默认为 Fail。

可能的枚举值:- "Fail" 表示调用 Webhook 发生错误会导致准入失败。- "Ignore" 表示调用 Webhook 发生错误会被忽略。

matchConditions

数组

MatchConditions 是一个条件列表,Webhook 请求必须满足这些条件才能被发送。匹配条件会过滤掉已经通过规则、namespaceSelector 和 objectSelector 匹配的请求。空的 MatchConditions 列表匹配所有请求。最多允许 64 个匹配条件。

精确匹配逻辑如下(按顺序):1. 如果任何 matchCondition 计算结果为 FALSE,则跳过 Webhook。2. 如果所有 matchConditions 计算结果为 TRUE,则调用 Webhook。3. 如果任何 matchCondition 计算结果为错误(但没有为 FALSE):- 如果 failurePolicy=Fail,则拒绝请求 - 如果 failurePolicy=Ignore,则忽略错误并跳过 Webhook

matchConditions[]

对象

MatchCondition 表示一个条件,Webhook 请求必须满足此条件才能被发送。

matchPolicy

字符串

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

- Exact:只有当请求完全匹配指定的规则时才匹配请求。例如,如果可以通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改 deployment,但 "rules" 只包含 apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"],则不会将对 apps/v1beta1 或 extensions/v1beta1 的请求发送到 Webhook。

- Equivalent:如果修改了 rules 中列出的资源(即使通过另一个 API 组或版本),则匹配请求。例如,如果可以通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改 deployment,但 "rules" 只包含 apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"],则会将对 apps/v1beta1 或 extensions/v1beta1 的请求转换为 apps/v1 并发送到 Webhook。

默认为 "Equivalent"

可能的枚举值:- "Equivalent" 表示如果请求通过另一个 API 组或版本修改了 rules 中列出的资源,则应将请求发送到 Webhook。- "Exact" 表示只有当请求完全匹配给定规则时,才应将请求发送到 Webhook。

name

字符串

准入 Webhook 的名称。名称应为完全限定名,例如 imagepolicy.kubernetes.io,其中 "imagepolicy" 是 Webhook 的名称,kubernetes.io 是组织的名称。必填。

namespaceSelector

LabelSelector

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

例如,要在命名空间与 "runlevel" 的 "0" 或 "1" 不关联的任何对象上运行 Webhook;您将如下设置选择器:"namespaceSelector": { "matchExpressions": [ { "key": "runlevel", "operator": "NotIn", "values": [ "0", "1" ] } ] }

如果您只想在命名空间与 "environment" 的 "prod" 或 "staging" 关联的任何对象上运行 Webhook;您将如下设置选择器:"namespaceSelector": { "matchExpressions": [ { "key": "environment", "operator": "In", "values": [ "prod", "staging" ] } ] }

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

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

objectSelector

LabelSelector

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

rules

数组

Rules 描述了 Webhook 关注哪些资源/子资源上的哪些操作。如果操作与任何规则匹配,Webhook 就关注该操作。但是,为了防止 ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 将集群置于无法在不完全禁用插件的情况下恢复的状态,ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 永远不会在 ValidatingWebhookConfiguration 和 MutatingWebhookConfiguration 对象的准入请求上调用。

rules[]

对象

RuleWithOperations 是 Operations 和 Resources 的元组。建议确保所有元组扩展都是有效的。

sideEffects

字符串

SideEffects 指明此 Webhook 是否有副作用。可接受的值为:None、NoneOnDryRun(通过 v1beta1 创建的 Webhook 也可能指定 Some 或 Unknown)。具有副作用的 Webhook 必须实现协调系统,因为未来的准入链步骤可能会拒绝请求,因此需要撤销副作用。如果匹配的 Webhook 的 sideEffects == Unknown 或 Some,则带有 dryRun 属性的请求将被自动拒绝。

可能的枚举值:- "None" 表示调用 Webhook 不会产生任何副作用。- "NoneOnDryRun" 表示调用 Webhook 可能会有副作用,但如果正在审查的请求具有 dry-run 属性,则副作用将被抑制。- "Some" 表示调用 Webhook 可能会有副作用。如果具有 dry-run 属性的请求将触发对此 Webhook 的调用,则请求将失败。- "Unknown" 表示不知道调用 Webhook 的副作用信息。如果具有 dry-run 属性的请求将触发对此 Webhook 的调用,则请求将失败。

timeoutSeconds

整数

TimeoutSeconds 指定此 Webhook 的超时时间。超时后,Webhook 调用将被忽略,或者根据故障策略,API 调用将失败。超时值必须在 1 到 30 秒之间。默认为 10 秒。

.webhooks[].clientConfig

描述

WebhookClientConfig 包含与 Webhook 建立 TLS 连接所需的信息

类型

对象

属性 类型 描述

caBundle

字符串

caBundle 是一个 PEM 编码的 CA 捆绑包,它将用于验证 Webhook 的服务器证书。如果未指定,则使用 apiserver 上的系统信任根。

service

对象

ServiceReference 包含对 Service.legacy.k8s.io 的引用。

url

字符串

url 以标准 URL 形式 (scheme://host:port/path) 提供 Webhook 的位置。必须指定 urlservice 中的一个。

host 不应引用在集群中运行的服务;请改用 service 字段。在某些 apiserver 中,主机可能通过外部 DNS 解析(例如,kube-apiserver 无法解析集群内 DNS,因为这将是分层冲突)。host 也可能是 IP 地址。

请注意,除非您非常小心地在所有运行可能需要对此 Webhook 进行调用的 apiserver 的主机上运行此 Webhook,否则使用 localhost127.0.0.1 作为 host 是有风险的。此类安装可能不可移植,即不容易在新集群中启动。

方案必须为 "https";URL 必须以 "https://" 开头。

路径是可选的,如果存在,可以是 URL 中允许的任何字符串。您可以使用路径将任意字符串传递给 Webhook,例如集群标识符。

不允许尝试使用用户或基本身份验证,例如 "user:password@"。片段 ("#…​") 和查询参数 ("?…​") 也不允许。

.webhooks[].clientConfig.service

描述

ServiceReference 包含对 Service.legacy.k8s.io 的引用。

类型

对象

必需
  • namespace

  • name

属性 类型 描述

name

字符串

name 是服务的名称。必填

namespace

字符串

namespace 是服务的命名空间。必填

path

字符串

path 是一个可选的URL路径,将在任何对该服务的请求中发送。

port

整数

如果指定,则为托管webhook的服务端口。默认为443,以保证向后兼容性。port 应为有效的端口号(1-65535,包含)。

.webhooks[].matchConditions

描述

MatchConditions 是一个条件列表,Webhook 请求必须满足这些条件才能被发送。匹配条件会过滤掉已经通过规则、namespaceSelector 和 objectSelector 匹配的请求。空的 MatchConditions 列表匹配所有请求。最多允许 64 个匹配条件。

精确匹配逻辑如下(按顺序):1. 如果任何 matchCondition 计算结果为 FALSE,则跳过 Webhook。2. 如果所有 matchConditions 计算结果为 TRUE,则调用 Webhook。3. 如果任何 matchCondition 计算结果为错误(但没有为 FALSE):- 如果 failurePolicy=Fail,则拒绝请求 - 如果 failurePolicy=Ignore,则忽略错误并跳过 Webhook

类型

数组

.webhooks[].matchConditions[]

描述

MatchCondition 表示一个条件,Webhook 请求必须满足此条件才能被发送。

类型

对象

必需
  • name

  • expression

属性 类型 描述

expression

字符串

表达式表示将由CEL评估的表达式。必须评估为布尔值。CEL表达式可以访问准入请求和授权器的内容,这些内容被组织到CEL变量中

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

必填。

name

字符串

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

必填。

.webhooks[].rules

描述

Rules 描述了 Webhook 关注哪些资源/子资源上的哪些操作。如果操作与任何规则匹配,Webhook 就关注该操作。但是,为了防止 ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 将集群置于无法在不完全禁用插件的情况下恢复的状态,ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 永远不会在 ValidatingWebhookConfiguration 和 MutatingWebhookConfiguration 对象的准入请求上调用。

类型

数组

.webhooks[].rules[]

描述

RuleWithOperations 是 Operations 和 Resources 的元组。建议确保所有元组扩展都是有效的。

类型

对象

属性 类型 描述

apiGroups

数组 (字符串)

APIGroups 是资源所属的API组。“*”表示所有组。如果存在“*”,则切片的长度必须为一。必填。

apiVersions

数组 (字符串)

APIVersions 是资源所属的API版本。“*”表示所有版本。如果存在“*”,则切片的长度必须为一。必填。

operations

数组 (字符串)

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

resources

数组 (字符串)

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

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

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

根据包含对象的不同,可能不允许使用子资源。必填。

scope

字符串

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

API 端点

提供以下API端点

  • /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations

    • DELETE:删除 ValidatingWebhookConfiguration 集合

    • GET:列出或监视 ValidatingWebhookConfiguration 对象

    • POST:创建一个 ValidatingWebhookConfiguration

  • /apis/admissionregistration.k8s.io/v1/watch/validatingwebhookconfigurations

    • GET:监视对 ValidatingWebhookConfiguration 列表的单个更改。已弃用:改为使用列表操作中的“watch”参数。

  • /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}

    • DELETE:删除一个 ValidatingWebhookConfiguration

    • GET:读取指定的 ValidatingWebhookConfiguration

    • PATCH:部分更新指定的 ValidatingWebhookConfiguration

    • PUT:替换指定的 ValidatingWebhookConfiguration

  • /apis/admissionregistration.k8s.io/v1/watch/validatingwebhookconfigurations/{name}

    • GET:监视对 ValidatingWebhookConfiguration 对象的更改。已弃用:改为使用列表操作中的“watch”参数,并使用“fieldSelector”参数过滤为单个项目。

/apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations

HTTP 方法

DELETE

描述

删除 ValidatingWebhookConfiguration 集合

表1. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

表2. HTTP 响应
HTTP 代码 响应体

200 - OK

Status 模式

401 - Unauthorized

HTTP 方法

GET

描述

列出或监视 ValidatingWebhookConfiguration 对象

表3. HTTP 响应
HTTP 代码 响应体

200 - OK

ValidatingWebhookConfigurationList 模式

401 - Unauthorized

HTTP 方法

POST

描述

创建一个 ValidatingWebhookConfiguration

表4. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

fieldValidation

字符串

fieldValidation 指示服务器如何处理请求 (POST/PUT/PATCH) 中包含未知或重复字段的对象。有效值为:- Ignore:这将忽略从对象中静默删除的任何未知字段,并将忽略解码器遇到的最后一个重复字段以外的所有重复字段。这是 v1.23 之前的默认行为。- Warn:这将通过标准警告响应标头为每个从对象中删除的未知字段以及遇到的每个重复字段发送警告。如果没有任何其他错误,请求仍将成功,并且只会保留任何重复字段中的最后一个。这是 v1.23+ 中的默认值 - Strict:如果从对象中删除任何未知字段,或者存在任何重复字段,这将使请求失败并返回 BadRequest 错误。服务器返回的错误将包含遇到的所有未知和重复字段。

表5. 请求体参数
参数 类型 描述

body

ValidatingWebhookConfiguration 模式

表6. HTTP 响应
HTTP 代码 响应体

200 - OK

ValidatingWebhookConfiguration 模式

201 - Created

ValidatingWebhookConfiguration 模式

202 - Accepted

ValidatingWebhookConfiguration 模式

401 - Unauthorized

/apis/admissionregistration.k8s.io/v1/watch/validatingwebhookconfigurations

HTTP 方法

GET

描述

监视对 ValidatingWebhookConfiguration 列表的单个更改。已弃用:改为使用列表操作中的“watch”参数。

表7. HTTP 响应
HTTP 代码 响应体

200 - OK

WatchEvent 模式

401 - Unauthorized

/apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}

表8. 全局路径参数
参数 类型 描述

name

字符串

ValidatingWebhookConfiguration 的名称

HTTP 方法

DELETE

描述

删除一个 ValidatingWebhookConfiguration

表9. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

表10. HTTP 响应
HTTP 代码 响应体

200 - OK

Status 模式

202 - Accepted

Status 模式

401 - Unauthorized

HTTP 方法

GET

描述

读取指定的 ValidatingWebhookConfiguration

表11. HTTP 响应
HTTP 代码 响应体

200 - OK

ValidatingWebhookConfiguration 模式

401 - Unauthorized

HTTP 方法

PATCH

描述

部分更新指定的 ValidatingWebhookConfiguration

表 12. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

fieldValidation

字符串

fieldValidation 指示服务器如何处理请求 (POST/PUT/PATCH) 中包含未知或重复字段的对象。有效值为:- Ignore:这将忽略从对象中静默删除的任何未知字段,并将忽略解码器遇到的最后一个重复字段以外的所有重复字段。这是 v1.23 之前的默认行为。- Warn:这将通过标准警告响应标头为每个从对象中删除的未知字段以及遇到的每个重复字段发送警告。如果没有任何其他错误,请求仍将成功,并且只会保留任何重复字段中的最后一个。这是 v1.23+ 中的默认值 - Strict:如果从对象中删除任何未知字段,或者存在任何重复字段,这将使请求失败并返回 BadRequest 错误。服务器返回的错误将包含遇到的所有未知和重复字段。

表 13. HTTP 响应
HTTP 代码 响应体

200 - OK

ValidatingWebhookConfiguration 模式

201 - Created

ValidatingWebhookConfiguration 模式

401 - Unauthorized

HTTP 方法

PUT

描述

替换指定的 ValidatingWebhookConfiguration

表 14. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

fieldValidation

字符串

fieldValidation 指示服务器如何处理请求 (POST/PUT/PATCH) 中包含未知或重复字段的对象。有效值为:- Ignore:这将忽略从对象中静默删除的任何未知字段,并将忽略解码器遇到的最后一个重复字段以外的所有重复字段。这是 v1.23 之前的默认行为。- Warn:这将通过标准警告响应标头为每个从对象中删除的未知字段以及遇到的每个重复字段发送警告。如果没有任何其他错误,请求仍将成功,并且只会保留任何重复字段中的最后一个。这是 v1.23+ 中的默认值 - Strict:如果从对象中删除任何未知字段,或者存在任何重复字段,这将使请求失败并返回 BadRequest 错误。服务器返回的错误将包含遇到的所有未知和重复字段。

表 15. 请求体参数
参数 类型 描述

body

ValidatingWebhookConfiguration 模式

表 16. HTTP 响应
HTTP 代码 响应体

200 - OK

ValidatingWebhookConfiguration 模式

201 - Created

ValidatingWebhookConfiguration 模式

401 - Unauthorized

/apis/admissionregistration.k8s.io/v1/watch/validatingwebhookconfigurations/{name}

表 17. 全局路径参数
参数 类型 描述

name

字符串

ValidatingWebhookConfiguration 的名称

HTTP 方法

GET

描述

监视 ValidatingWebhookConfiguration 对象的更改。已弃用:请改用列表操作中的“watch”参数,并使用“fieldSelector”参数将其过滤为单个项目。

表 18. HTTP 响应
HTTP 代码 响应体

200 - OK

WatchEvent 模式

401 - Unauthorized