MutatingWebhookConfiguration 描述了接受或拒绝并可能更改对象的准入 Webhook 的配置。
属性 | 类型 | 描述 |
---|---|---|
|
|
APIVersion 定义了此对象表示的版本化模式。服务器应将识别的模式转换为最新的内部值,并可能拒绝无法识别的值。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
|
Kind 是一个字符串值,表示此对象表示的 REST 资源。服务器可以从客户端提交请求的端点推断出这一点。无法更新。使用驼峰式命名法。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
|
标准对象元数据;更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata。 |
|
|
|
Webhooks 是 Webhook 列表以及受影响的资源和操作。 |
|
|
MutatingWebhook 描述了一个准入 Webhook 及其应用到的资源和操作。 |
MutatingWebhook 描述了一个准入 Webhook 及其应用到的资源和操作。
对象
name
clientConfig
sideEffects
admissionReviewVersions
属性 | 类型 | 描述 |
---|---|---|
|
|
AdmissionReviewVersions 是 Webhook 期望的优先级 |
|
|
WebhookClientConfig 包含与 Webhook 建立 TLS 连接所需的信息。 |
|
|
FailurePolicy 定义如何处理来自准入端点的无法识别的错误——允许的值为 Ignore 或 Fail。默认为 Fail。 可能的枚举值:- |
|
|
MatchConditions 是必须满足才能将请求发送到此 Webhook 的条件列表。匹配条件过滤掉已经通过规则、namespaceSelector 和 objectSelector 匹配的请求。空的 matchConditions 列表匹配所有请求。最多允许 64 个匹配条件。 精确匹配逻辑(按顺序):1. 如果任何 matchCondition 计算结果为 FALSE,则跳过 Webhook。2. 如果所有 matchConditions 计算结果为 TRUE,则调用 Webhook。3. 如果任何 matchCondition 计算结果为错误(但没有为 FALSE):- 如果 failurePolicy=Fail,则拒绝请求 - 如果 failurePolicy=Ignore,则忽略错误并跳过 Webhook |
|
|
MatchCondition 表示必须满足才能将请求发送到 Webhook 的条件。 |
|
|
matchPolicy 定义如何使用“rules”列表来匹配传入的请求。允许的值为“Exact”或“Equivalent”。 - Exact:只有当请求与指定的规则完全匹配时才匹配请求。例如,如果可以通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改部署,但“rules”只包含 - Equivalent:如果修改了 rules 中列出的资源,即使通过另一个 API 组或版本,也匹配请求。例如,如果可以通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改部署,并且“rules”只包含 默认为“Equivalent”。 可能的枚举值:- |
|
|
准入 Webhook 的名称。名称应为完全限定名,例如 imagepolicy.kubernetes.io,其中“imagepolicy”是 Webhook 的名称,“kubernetes.io”是组织的名称。必需。 |
|
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 根据对象是否具有匹配的标签来决定是否运行 Webhook。objectSelector 会针对将发送到 Webhook 的 oldObject 和 newObject 进行评估,如果任一对象匹配选择器,则认为匹配。空对象(在创建情况下为 oldObject,在删除情况下为 newObject)或无法拥有标签的对象(如 DeploymentRollback 或 PodProxyOptions 对象)不被认为匹配。仅当 Webhook 是选择加入时才使用对象选择器,因为最终用户可以通过设置标签来跳过准入 Webhook。默认为空的 LabelSelector,匹配所有内容。 |
|
|
|
reinvocationPolicy 指示此 Webhook 是否应在单个准入评估中多次调用。允许的值为“Never”和“IfNeeded”。 Never:Webhook 在单个准入评估中不会被调用超过一次。 IfNeeded:如果在初始 Webhook 调用后,其他准入插件修改了正在接纳的对象,则 Webhook 将在准入评估中至少额外调用一次。指定此选项的 Webhook **必须** 是幂等的,能够处理它们先前接纳的对象。注意:* 额外调用的次数并非保证正好为一次。* 如果额外调用导致对对象的进一步修改,则不保证会再次调用 Webhook。* 使用此选项的 Webhook 可能会被重新排序以最大限度地减少额外调用的次数。* 要在保证所有变异完成后验证对象,请改用验证准入 Webhook。 默认为“Never”。 可能的枚举值:- |
|
|
Rules 描述了 Webhook 关注哪些资源/子资源上的哪些操作。如果 Webhook 匹配 *任何* Rule,则它关注该操作。但是,为了防止 ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 将集群置于无法在不完全禁用插件的情况下恢复的状态,ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 永远不会在 ValidatingWebhookConfiguration 和 MutatingWebhookConfiguration 对象的准入请求上调用。 |
|
|
RuleWithOperations 是 Operations 和 Resources 的元组。建议确保所有元组扩展都是有效的。 |
|
|
SideEffects 指示此 Webhook 是否具有副作用。可接受的值为:None、NoneOnDryRun(通过 v1beta1 创建的 Webhook 也可能指定 Some 或 Unknown)。具有副作用的 Webhook **必须** 实现协调系统,因为未来的准入链步骤可能会拒绝请求,因此需要撤消副作用。如果请求与 sideEffects == Unknown 或 Some 的 Webhook 匹配,则具有 dryRun 属性的请求将被自动拒绝。 可能的枚举值:- `“None”` 表示调用 Webhook 不会产生任何副作用。- `“NoneOnDryRun”` 表示调用 Webhook 可能会有副作用,但是如果正在审核的请求具有 dry-run 属性,则副作用会被抑制。- `“Some”` 表示调用 Webhook 可能会有副作用。如果具有 dry-run 属性的请求会触发对该 Webhook 的调用,则该请求将失败。- `“Unknown”` 表示不知道调用 Webhook 的副作用。如果具有 dry-run 属性的请求会触发对该 Webhook 的调用,则该请求将失败。 |
|
|
TimeoutSeconds 指定此 Webhook 的超时时间。超时后,将忽略 Webhook 调用或根据失败策略使 API 调用失败。超时值必须介于 1 到 30 秒之间。默认为 10 秒。 |
WebhookClientConfig 包含与 Webhook 建立 TLS 连接所需的信息。
对象
属性 | 类型 | 描述 |
---|---|---|
|
|
|
|
|
ServiceReference 包含对 Service.legacy.k8s.io 的引用。 |
|
|
请注意,除非您非常小心地在所有运行可能需要调用此 Webhook 的 apiserver 的主机上运行此 Webhook,否则使用 方案必须是“https”;URL 必须以“https://”开头。 路径是可选的,如果存在,可以是 URL 中允许的任何字符串。您可以使用路径将任意字符串传递给 Webhook,例如集群标识符。 不允许尝试使用用户名或基本身份验证,例如“user:password@”。片段 (“#…”) 和查询参数 (“?…”) 也不允许。 |
ServiceReference 包含对 Service.legacy.k8s.io 的引用。
对象
namespace
name
属性 | 类型 | 描述 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
如果指定,则为托管 Webhook 的服务上的端口。为向后兼容性,默认为 443。 |
MatchConditions 是必须满足才能将请求发送到此 Webhook 的条件列表。匹配条件过滤掉已经通过规则、namespaceSelector 和 objectSelector 匹配的请求。空的 matchConditions 列表匹配所有请求。最多允许 64 个匹配条件。
精确匹配逻辑(按顺序):1. 如果任何 matchCondition 计算结果为 FALSE,则跳过 Webhook。2. 如果所有 matchConditions 计算结果为 TRUE,则调用 Webhook。3. 如果任何 matchCondition 计算结果为错误(但没有为 FALSE):- 如果 failurePolicy=Fail,则拒绝请求 - 如果 failurePolicy=Ignore,则忽略错误并跳过 Webhook
数组
MatchCondition 表示必须满足才能将请求发送到 Webhook 的条件。
对象
name
expression
属性 | 类型 | 描述 |
---|---|---|
|
|
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 ResourceCheck。有关 CEL 的文档:https://kubernetes.ac.cn/docs/reference/using-api/cel/ 必填。 |
|
|
Name 是此匹配条件的标识符,用于 MatchConditions 的策略性合并,以及提供日志记录目的的标识符。一个好的名称应该对相关的表达式进行描述。Name 必须是由字母数字字符、'-'、'_' 或 '.' 组成的限定名称,并且必须以字母数字字符开头和结尾(例如 'MyName',或 'my.name',或 '123-abc',用于验证的正则表达式为 '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]'), 可选的 DNS 子域名前缀和 '/' (例如 'example.com/MyName') 必填。 |
Rules 描述了 Webhook 关注哪些资源/子资源上的哪些操作。如果 Webhook 匹配 *任何* Rule,则它关注该操作。但是,为了防止 ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 将集群置于无法在不完全禁用插件的情况下恢复的状态,ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 永远不会在 ValidatingWebhookConfiguration 和 MutatingWebhookConfiguration 对象的准入请求上调用。
数组
RuleWithOperations 是 Operations 和 Resources 的元组。建议确保所有元组扩展都是有效的。
对象
属性 | 类型 | 描述 |
---|---|---|
|
|
APIGroups 是资源所属的 API 组。'' 是所有组。如果存在 '',则切片的长度必须为一。必填。 |
|
|
APIVersions 是资源所属的 API 版本。'' 是所有版本。如果存在 '',则切片的长度必须为一。必填。 |
|
|
Operations 是准入钩子关心的操作 - CREATE、UPDATE、DELETE、CONNECT 或 * 表示所有这些操作以及将来添加的任何其他准入操作。如果存在 '*',则切片的长度必须为一。必填。 |
|
|
Resources 是此规则适用的资源列表。 例如:'pods' 表示 pods。'pods/log' 表示 pods 的 log 子资源。'' 表示所有资源,但不包括子资源。'pods/' 表示 pods 的所有子资源。'/scale' 表示所有 scale 子资源。'/*' 表示所有资源及其子资源。 如果存在通配符,则验证规则将确保资源不会相互重叠。 根据封闭对象的不同,可能不允许使用子资源。必填。 |
|
|
scope 指定此规则的范围。有效值为“Cluster”、“Namespaced”和“”。“Cluster”表示只有集群范围的资源与该规则匹配。命名空间 API 对象是集群范围的。“Namespaced”表示只有命名空间范围的资源与该规则匹配。“”表示没有范围限制。子资源与其父资源的范围匹配。默认为“*”。 |
提供以下 API 端点
/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations
DELETE
:删除 MutatingWebhookConfiguration 的集合
GET
:列出或监视 MutatingWebhookConfiguration 对象
POST
:创建 MutatingWebhookConfiguration
/apis/admissionregistration.k8s.io/v1/watch/mutatingwebhookconfigurations
GET
:监视 MutatingWebhookConfiguration 列表的单个更改。已弃用:请改用列表操作中的“watch”参数。
/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/{name}
DELETE
:删除 MutatingWebhookConfiguration
GET
:读取指定的 MutatingWebhookConfiguration
PATCH
:部分更新指定的 MutatingWebhookConfiguration
PUT
:替换指定的 MutatingWebhookConfiguration
/apis/admissionregistration.k8s.io/v1/watch/mutatingwebhookconfigurations/{name}
GET
:监听 MutatingWebhookConfiguration 对象的更改。已弃用:请改用列表操作中的“watch”参数,并使用“fieldSelector”参数将其过滤为单个项目。
DELETE
删除 MutatingWebhookConfiguration 集合
参数 | 类型 | 描述 |
---|---|---|
|
|
如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段 |
HTTP 代码 | 响应体 |
---|---|
200 - OK |
|
401 - 未授权 |
空 |
GET
列出或监听 MutatingWebhookConfiguration 对象
HTTP 代码 | 响应体 |
---|---|
200 - OK |
|
401 - 未授权 |
空 |
POST
创建一个 MutatingWebhookConfiguration
参数 | 类型 | 描述 |
---|---|---|
|
|
如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段 |
|
|
fieldValidation 指示服务器如何处理请求 (POST/PUT/PATCH) 中包含未知或重复字段的对象。有效值为:- Ignore:这将忽略任何从对象中静默删除的未知字段,并将忽略解码器遇到的所有重复字段(仅保留最后一个)。这是 v1.23 之前的默认行为。- Warn:对于从对象中删除的每个未知字段和遇到的每个重复字段,这都将通过标准警告响应标头发送警告。如果没有任何其他错误,请求仍然会成功,并且只会持久化任何重复字段中的最后一个。这是 v1.23+ 中的默认值 - Strict:如果任何未知字段将从对象中删除,或者存在任何重复字段,这将使请求失败并返回 BadRequest 错误。服务器返回的错误将包含遇到的所有未知和重复字段。 |
参数 | 类型 | 描述 |
---|---|---|
|
HTTP 代码 | 响应体 |
---|---|
200 - OK |
|
201 - 已创建 |
|
202 - 已接受 |
|
401 - 未授权 |
空 |
GET
监听 MutatingWebhookConfiguration 列表的单个更改。已弃用:请改用列表操作中的“watch”参数。
HTTP 代码 | 响应体 |
---|---|
200 - OK |
|
401 - 未授权 |
空 |
参数 | 类型 | 描述 |
---|---|---|
|
|
MutatingWebhookConfiguration 的名称 |
DELETE
删除一个 MutatingWebhookConfiguration
参数 | 类型 | 描述 |
---|---|---|
|
|
如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段 |
HTTP 代码 | 响应体 |
---|---|
200 - OK |
|
202 - 已接受 |
|
401 - 未授权 |
空 |
GET
读取指定的 MutatingWebhookConfiguration
HTTP 代码 | 响应体 |
---|---|
200 - OK |
|
401 - 未授权 |
空 |
PATCH
部分更新指定的 MutatingWebhookConfiguration
参数 | 类型 | 描述 |
---|---|---|
|
|
如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段 |
|
|
fieldValidation 指示服务器如何处理请求 (POST/PUT/PATCH) 中包含未知或重复字段的对象。有效值为:- Ignore:这将忽略任何从对象中静默删除的未知字段,并将忽略解码器遇到的所有重复字段(仅保留最后一个)。这是 v1.23 之前的默认行为。- Warn:对于从对象中删除的每个未知字段和遇到的每个重复字段,这都将通过标准警告响应标头发送警告。如果没有任何其他错误,请求仍然会成功,并且只会持久化任何重复字段中的最后一个。这是 v1.23+ 中的默认值 - Strict:如果任何未知字段将从对象中删除,或者存在任何重复字段,这将使请求失败并返回 BadRequest 错误。服务器返回的错误将包含遇到的所有未知和重复字段。 |
HTTP 代码 | 响应体 |
---|---|
200 - OK |
|
201 - 已创建 |
|
401 - 未授权 |
空 |
PUT
替换指定的 MutatingWebhookConfiguration
参数 | 类型 | 描述 |
---|---|---|
|
|
如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段 |
|
|
fieldValidation 指示服务器如何处理请求 (POST/PUT/PATCH) 中包含未知或重复字段的对象。有效值为:- Ignore:这将忽略任何从对象中静默删除的未知字段,并将忽略解码器遇到的所有重复字段(仅保留最后一个)。这是 v1.23 之前的默认行为。- Warn:对于从对象中删除的每个未知字段和遇到的每个重复字段,这都将通过标准警告响应标头发送警告。如果没有任何其他错误,请求仍然会成功,并且只会持久化任何重复字段中的最后一个。这是 v1.23+ 中的默认值 - Strict:如果任何未知字段将从对象中删除,或者存在任何重复字段,这将使请求失败并返回 BadRequest 错误。服务器返回的错误将包含遇到的所有未知和重复字段。 |
参数 | 类型 | 描述 |
---|---|---|
|
HTTP 代码 | 响应体 |
---|---|
200 - OK |
|
201 - 已创建 |
|
401 - 未授权 |
空 |
参数 | 类型 | 描述 |
---|---|---|
|
|
MutatingWebhookConfiguration 的名称 |
GET
监听 MutatingWebhookConfiguration 对象的更改。已弃用:请改用列表操作中的“watch”参数,并使用“fieldSelector”参数将其过滤为单个项目。
HTTP 代码 | 响应体 |
---|---|
200 - OK |
|
401 - 未授权 |
空 |