diff --git a/content/zh-cn/docs/reference/kubernetes-api/extend-resources/validating-webhook-configuration-v1.md b/content/zh-cn/docs/reference/kubernetes-api/extend-resources/validating-webhook-configuration-v1.md index baabf6d6ea59a..4e3c28cdedc45 100644 --- a/content/zh-cn/docs/reference/kubernetes-api/extend-resources/validating-webhook-configuration-v1.md +++ b/content/zh-cn/docs/reference/kubernetes-api/extend-resources/validating-webhook-configuration-v1.md @@ -46,7 +46,8 @@ ValidatingWebhookConfiguration 描述准入 Webhook 的配置,此 Webhook - **metadata** (}}">ObjectMeta) - 标准的对象元数据,更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata。 + 标准的对象元数据,更多信息: + https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata。 + + 可能的枚举值: + - `"None"` 表示调用 Webhook 不会产生副作用。 + - `"NoneOnDryRun"` 表示调用 Webhook 可能会有副作用,但如果被审查的请求具有 + `dry-run` 属性,则会抑制这些副作用。 + - `"Some"` 表示调用 Webhook 可能会有副作用。如果带有 `dry-run` 属性的请求会触发对此 + Webhook 的调用,该请求将会失败。 + - `"Unknown"` 表示对调用 Webhook 的副作用不了解。如果带有 `dry-run` 属性的请求会触发对此 + Webhook 的调用,该请求将会失败。 - **webhooks.failurePolicy** (string) - failurePolicy 定义了如何处理来自准入端点的无法识别的错误 - 允许的值是 Ignore 或 Fail。默认为 Fail。 + `failurePolicy` 定义了如何处理来自准入端点的无法识别的错误 - 允许的值是 Ignore 或 Fail。默认为 Fail。 + 可能的枚举值: + - `"Fail"` 表示调用 Webhook 发生错误时,准入操作将失败。 + - `"Ignore"` 表示调用 Webhook 发生错误时,该错误将被忽略。 + - matchConditions 是将请求发送到此 webhook 之前必须满足的条件列表。 + `matchConditions` 是将请求发送到此 webhook 之前必须满足的条件列表。 匹配条件过滤已经被 rules、namespaceSelector、objectSelector 匹配的请求。 - matchConditions 取值为空列表时匹配所有请求。最多允许 64 个匹配条件。 + `matchConditions` 取值为空列表时匹配所有请求。最多允许 64 个匹配条件。 精确匹配逻辑是(按顺序): - 1. 如果任一 matchCondition 的计算结果为 FALSE,则跳过该 webhook。 - 2. 如果所有 matchConditions 的计算结果为 TRUE,则调用该 webhook。 - 3. 如果任一 matchCondition 的计算结果为错误(但都不是 FALSE): - - 如果 failurePolicy=Fail,拒绝该请求; - - 如果 failurePolicy=Ignore,忽略错误并跳过该 webhook。 + 1. 如果任一 `matchCondition` 的计算结果为 FALSE,则跳过该 webhook。 + 2. 如果所有 `matchConditions` 的计算结果为 TRUE,则调用该 webhook。 + 3. 如果任一 `matchCondition` 的计算结果为错误(但都不是 FALSE): + - 如果 `failurePolicy=Fail`,拒绝该请求; + - 如果 `failurePolicy=Ignore`,忽略错误并跳过该 webhook。 - **MatchCondition 表示将请求发送到 Webhook 之前必须满足的条件。** + **`MatchCondition` 表示将请求发送到 Webhook 之前必须满足的条件。** - **webhooks.matchConditions.expression** (string),必需 - expression 表示将由 CEL 求值的表达式。求值结果必须是 bool 值。CEL 表达式可以访问 + `expression` 表示将由 CEL 求值的表达式。求值结果必须是 bool 值。CEL 表达式可以访问 以 CEL 变量的形式给出的 AdmissionRequest 和 Authorizer 的内容: - **webhooks.matchConditions.name** (string),必需 - name 是此匹配条件的标识符,用于 MatchConditions 的策略性合并, - 以及提供用于日志目的的标识符。一个好的 name 应该是对相关表达式的描述。 - name 必须是由字母数字字符 `-`、`_` 或 `.` 组成的限定名称, + `name` 是此匹配条件的标识符,用于 `matchConditions` 的策略性合并, + 以及提供用于日志目的的标识符。一个好的 `name` 应该是对相关表达式的描述。 + `name` 必须是由字母数字字符 `-`、`_` 或 `.` 组成的限定名称, 并且必须以字母、数字字符开头和结尾(例如 `MyName`、`my.name` 或 `123-abc`, - 用于验证 name 的正则表达式是 `([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]`)。 + 用于验证 `name` 的正则表达式是 `([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]`)。 带有可选的 DNS 子域前缀和 `/`(例如 `example.com/MyName`) 此字段为必需字段。 @@ -350,20 +377,31 @@ ValidatingWebhookConfiguration 描述准入 Webhook 的配置,此 Webhook - **webhooks.matchPolicy** (string) - matchPolicy 定义了如何使用 "rules" 列表来匹配传入的请求。允许的值为 "Exact" 或 "Equivalent"。 + `matchPolicy` 定义了如何使用 "rules" 列表来匹配传入的请求。允许的值为 "Exact" 或 "Equivalent"。 - Exact: 仅当请求与指定规则完全匹配时才匹配请求。 - 例如,如果可以通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改 deployments 资源, + 例如,如果可以通过 `apps/v1`、`apps/v1beta1` 和 `extensions/v1beta1` 修改 Deployment 资源, 但 “rules” 仅包含 `apiGroups:["apps"]、apiVersions:["v1"]、resources:["deployments "]`, - 对 apps/v1beta1 或 extensions/v1beta1 的请求不会被发送到 Webhook。 + 对 `apps/v1beta1` 或 `extensions/v1beta1` 的请求不会被发送到 Webhook。 - Equivalent: 如果针对的资源包含在 “rules” 中,即使是通过另一个 API 组或版本,也视作匹配请求。 例如,如果可以通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改 deployments 资源, 并且 “rules” 仅包含 `apiGroups:["apps"]、apiVersions:["v1"]、resources:["deployments "]`, - 对 apps/v1beta1 或 extensions/v1beta1 的请求将被转换为 apps/v1 并发送到 Webhook。 + 对 `apps/v1beta1` 或 `extensions/v1beta1` 的请求将被转换为 `apps/v1` 并发送到 Webhook。 默认为 “Equivalent”。 + + + 可能的枚举值: + - `"Equivalent"` 表示如果请求通过另一个 API 组或版本修改了规则中列出的资源, + 则应将请求发送到 Webhook。 + - `"Exact"` 表示仅当请求完全匹配给定规则时,才应将请求发送到 Webhook。 + - **webhooks.namespaceSelector** (}}">LabelSelector) - namespaceSelector 根据对象的命名空间是否与 selector 匹配来决定是否在该对象上运行 Webhook。 - 如果对象本身是命名空间,则在 object.metadata.labels 上执行匹配。 + `namespaceSelector` 根据对象的命名空间是否与 selector 匹配来决定是否在该对象上运行 Webhook。 + 如果对象本身是命名空间,则在 `object.metadata.labels` 上执行匹配。 如果对象是另一个集群范围的资源,则永远不会跳过 Webhook 执行匹配。 例如,在命名空间与 “0” 或 “1” 的 “runlevel” 不关联的任何对象上运行 Webhook; - 你可以按如下方式设置 selector : + 你可以按如下方式设置 selector: ``` "namespaceSelector": { "matchExpressions": [