ValidatingWebhookConfiguration
apiVersion: admissionregistration.k8s.io/v1
import "k8s.io/api/admissionregistration/v1"
ValidatingWebhookConfiguration
ValidatingWebhookConfiguration 描述了准入 Webhook 的配置,该 Webhook 接受或拒绝对象而不更改它。
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata (ObjectMeta)
标准对象元数据;更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata。
webhooks ([]ValidatingWebhook)
补丁策略:在键
name上合并Map:在合并期间将保留键 name 上的唯一值
Webhooks 是 Webhook 列表以及受影响的资源和操作。
ValidatingWebhook 描述了一个准入 Webhook 及其应用的资源和操作。
webhooks.admissionReviewVersions ([]string), 必需
原子性:在合并期间将被替换
AdmissionReviewVersions 是 Webhook 期望的首选
AdmissionReview版本有序列表。API 服务器将尝试使用列表中它支持的第一个版本。如果 API 服务器不支持此列表中指定的任何版本,则此对象的验证将失败。如果持久化的 Webhook 配置指定了允许的版本,并且不包括 API 服务器已知的任何版本,则对 Webhook 的调用将失败,并受故障策略的约束。webhooks.clientConfig (WebhookClientConfig), 必需
ClientConfig 定义了如何与钩子通信。必需
WebhookClientConfig 包含与 Webhook 建立 TLS 连接的信息
webhooks.clientConfig.caBundle ([]byte)
caBundle是一个 PEM 编码的 CA 包,它将用于验证 Webhook 的服务器证书。如果未指定,则使用 apiserver 上的系统信任根。webhooks.clientConfig.service (ServiceReference)
service是对该 Webhook 的服务的引用。必须指定service或url中的一个。如果 Webhook 在集群内运行,则应使用
service。ServiceReference 包含对 Service.legacy.k8s.io 的引用
webhooks.clientConfig.service.name (string), 必需
name是服务的名称。必需webhooks.clientConfig.service.namespace (string), 必需
namespace是服务的命名空间。必需webhooks.clientConfig.service.path (string)
path是一个可选的 URL 路径,它将发送到此服务的任何请求中。webhooks.clientConfig.service.port (int32)
如果指定,则为托管 Webhook 的服务端口。为了向后兼容,默认为 443。
port应该是一个有效的端口号(1-65535,包含)。
webhooks.clientConfig.url (string)
url以标准 URL 形式 (scheme://host:port/path) 给出了 Webhook 的位置。必须指定url或service中的一个。host不应引用集群中运行的服务;请改用service字段。主机可能会通过某些 apiserver 中的外部 DNS 解析(例如,kube-apiserver无法解析集群内 DNS,因为这将是分层违规)。host也可能是 IP 地址。请注意,除非您非常小心地在运行 apiserver 的所有主机上运行此 Webhook,否则使用
localhost或127.0.0.1作为host是有风险的,因为这些主机可能需要调用此 Webhook。此类安装可能不可移植,即不容易在新集群中启动。scheme 必须是“https”;URL 必须以“https://”开头。
path 是可选的,如果存在,则可以是 URL 中允许的任何字符串。您可以使用 path 将任意字符串传递给 Webhook,例如集群标识符。
不允许尝试使用用户或基本身份验证,例如“user:password@”。也不允许使用片段(“#…”)和查询参数(“?…”)。
webhooks.name (string), 必需
准入 Webhook 的名称。名称应该是完全限定的,例如 imagepolicy.kubernetes.io,其中“imagepolicy”是 Webhook 的名称,kubernetes.io 是组织名称。必需。
webhooks.sideEffects (string), 必需
SideEffects 说明此 Webhook 是否具有副作用。可接受的值为:None,NoneOnDryRun(通过 v1beta1 创建的 Webhook 也可以指定 Some 或 Unknown)。具有副作用的 Webhook 必须实现协调系统,因为请求可能会被准入链中的未来步骤拒绝,因此需要撤消副作用。如果请求与 sideEffects == Unknown 或 Some 的 Webhook 匹配,则具有 dryRun 属性的请求将被自动拒绝。
webhooks.failurePolicy (string)
FailurePolicy 定义如何处理来自准入端点的未识别错误 - 允许的值为 Ignore 或 Fail。默认为 Fail。
webhooks.matchConditions ([]MatchCondition)
补丁策略:在键
name上合并Map:在合并期间将保留键 name 上的唯一值
MatchConditions 是必须满足的条件列表,才能将请求发送到此 Webhook。匹配条件会过滤已经通过规则、namespaceSelector 和 objectSelector 匹配的请求。空的 matchConditions 列表会匹配所有请求。最多允许 64 个匹配条件。
确切的匹配逻辑是(按顺序)
- 如果任何 matchCondition 的计算结果为 FALSE,则会跳过 Webhook。
- 如果所有 matchCondition 的计算结果都为 TRUE,则会调用 Webhook。
- 如果任何 matchCondition 的计算结果为错误(但没有一个是 FALSE)
- 如果 failurePolicy=Fail,则拒绝请求
- 如果 failurePolicy=Ignore,则忽略错误,并跳过 Webhook
MatchCondition 表示要将请求发送到 Webhook 必须满足的条件。
webhooks.matchConditions.expression (string), 必需
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/
必需。
webhooks.matchConditions.name (string), 必需
Name 是此匹配条件的标识符,用于战略性合并 MatchConditions,以及为日志记录目的提供标识符。一个好的名称应该描述相关的表达式。Name 必须是由字母数字字符、“-”、“_”或“.”组成的限定名称,并且必须以字母数字字符开头和结尾(例如“MyName”或“my.name”或“123-abc”,用于验证的正则表达式是“([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]”),并带有可选的 DNS 子域前缀和“/”(例如“example.com/MyName”)
必需。
webhooks.matchPolicy (string)
matchPolicy 定义了如何使用“rules”列表来匹配传入的请求。允许的值为“Exact”或“Equivalent”。
Exact:仅当请求与指定的规则完全匹配时才匹配请求。例如,如果可以通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改 deployments,但“rules”仅包含
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"],则对 apps/v1beta1 或 extensions/v1beta1 的请求不会发送到 Webhook。Equivalent:如果通过另一个 API 组或版本修改了 rules 中列出的资源,则匹配请求。例如,如果可以通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改 deployments,并且“rules”仅包含
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"],则对 apps/v1beta1 或 extensions/v1beta1 的请求将转换为 apps/v1 并发送到 Webhook。
默认为“Equivalent”
webhooks.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,它匹配所有内容。
webhooks.objectSelector (LabelSelector)
ObjectSelector 根据对象是否具有匹配的标签来决定是否运行 webhook。 objectSelector 会针对发送到 webhook 的 oldObject 和 newObject 进行评估,如果任一对象与选择器匹配,则认为匹配。空对象(创建时的 oldObject 或删除时的 newObject)或无法拥有标签的对象(如 DeploymentRollback 或 PodProxyOptions 对象)不被视为匹配。仅当 webhook 是选择性启用时才使用对象选择器,因为最终用户可以通过设置标签来跳过准入 webhook。默认为空的 LabelSelector,它匹配所有内容。
webhooks.rules ([]RuleWithOperations)
原子性:在合并期间将被替换
Rules 描述 webhook 关心哪些资源/子资源上的哪些操作。如果操作匹配任何 Rule,则 webhook 关心该操作。但是,为了防止 ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 将集群置于无法在不完全禁用插件的情况下恢复的状态,永远不会在 ValidatingWebhookConfiguration 和 MutatingWebhookConfiguration 对象的准入请求上调用 ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks。
RuleWithOperations 是 Operations 和 Resources 的元组。建议确保所有元组扩展都有效。
webhooks.rules.apiGroups ([]string)
原子性:在合并期间将被替换
APIGroups 是资源所属的 API 组。'*' 表示所有组。如果存在 '*',则切片的长度必须为 1。必需。
webhooks.rules.apiVersions ([]string)
原子性:在合并期间将被替换
APIVersions 是资源所属的 API 版本。'*' 表示所有版本。如果存在 '*',则切片的长度必须为 1。必需。
webhooks.rules.operations ([]string)
原子性:在合并期间将被替换
Operations 是准入钩子关心的操作 - CREATE、UPDATE、DELETE、CONNECT 或 * 表示所有这些操作以及将来添加的任何准入操作。如果存在 '*',则切片的长度必须为 1。必需。
webhooks.rules.resources ([]string)
原子性:在合并期间将被替换
Resources 是此规则应用到的资源列表。
例如:'pods' 表示 pods。'pods/log' 表示 pods 的 log 子资源。'*' 表示所有资源,但不包括子资源。'pods/*' 表示 pods 的所有子资源。'*/scale' 表示所有 scale 子资源。'*/*' 表示所有资源及其子资源。
如果存在通配符,则验证规则将确保资源彼此不重叠。
根据封闭对象,可能不允许子资源。必需。
webhooks.rules.scope (string)
scope 指定此规则的范围。有效值为 “Cluster”、“Namespaced” 和 “*”。“Cluster” 表示只有集群范围的资源才会匹配此规则。命名空间 API 对象是集群范围的。“Namespaced” 表示只有命名空间范围的资源才会匹配此规则。“*” 表示没有范围限制。子资源匹配其父资源的范围。默认为 “*”。
webhooks.timeoutSeconds (int32)
TimeoutSeconds 指定此 webhook 的超时时间。超时时间过后,webhook 调用将被忽略或 API 调用将根据失败策略失败。超时值必须介于 1 到 30 秒之间。默认为 10 秒。
ValidatingWebhookConfigurationList
ValidatingWebhookConfigurationList 是 ValidatingWebhookConfiguration 的列表。
items ([]ValidatingWebhookConfiguration), 必需
ValidatingWebhookConfiguration 的列表。
apiVersion (string)
APIVersion 定义此对象的版本化模式。服务器应将识别的模式转换为最新的内部值,并可能拒绝无法识别的值。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind (string)
Kind 是一个字符串值,表示此对象表示的 REST 资源。服务器可以从客户端提交请求的端点推断出此值。无法更新。以 CamelCase 形式。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata (ListMeta)
标准列表元数据。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
Operations
get 读取指定的 ValidatingWebhookConfiguration
HTTP 请求
GET /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}
参数
name (在路径中): string, 必需
ValidatingWebhookConfiguration 的名称
pretty (在查询中): string
响应
200 (ValidatingWebhookConfiguration): OK
401: 未授权
list 列出或监视 ValidatingWebhookConfiguration 类型的对象
HTTP 请求
GET /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations
参数
allowWatchBookmarks (在查询中): boolean
continue (在查询中): string
fieldSelector (在查询中): string
labelSelector (在查询中): string
limit (在查询中): integer
pretty (在查询中): string
resourceVersion (在查询中): string
resourceVersionMatch (在查询中): string
sendInitialEvents (在查询中): boolean
timeoutSeconds (在查询中): integer
watch (在查询中): boolean
响应
200 (ValidatingWebhookConfigurationList): OK
401: 未授权
create 创建一个 ValidatingWebhookConfiguration
HTTP 请求
POST /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations
参数
body: ValidatingWebhookConfiguration, 必需
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
响应
200 (ValidatingWebhookConfiguration): OK
201 (ValidatingWebhookConfiguration): 已创建
202 (ValidatingWebhookConfiguration): 已接受
401: 未授权
update 替换指定的 ValidatingWebhookConfiguration
HTTP 请求
PUT /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}
参数
name (在路径中): string, 必需
ValidatingWebhookConfiguration 的名称
body: ValidatingWebhookConfiguration, 必需
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
响应
200 (ValidatingWebhookConfiguration): OK
201 (ValidatingWebhookConfiguration): 已创建
401: 未授权
patch 部分更新指定的 ValidatingWebhookConfiguration
HTTP 请求
PATCH /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}
参数
name (在路径中): string, 必需
ValidatingWebhookConfiguration 的名称
body: Patch, 必需
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
force (在查询中): boolean
pretty (在查询中): string
响应
200 (ValidatingWebhookConfiguration): OK
201 (ValidatingWebhookConfiguration): 已创建
401: 未授权
delete 删除一个 ValidatingWebhookConfiguration
HTTP 请求
DELETE /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}
参数
name (在路径中): string, 必需
ValidatingWebhookConfiguration 的名称
body: DeleteOptions
dryRun (在查询中): string
gracePeriodSeconds (在查询中): integer
pretty (在查询中): string
propagationPolicy (在查询中): string
响应
200 (Status): OK
202 (Status): 已接受
401: 未授权
deletecollection 删除 ValidatingWebhookConfiguration 的集合
HTTP 请求
DELETE /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations
参数
body: DeleteOptions
continue (在查询中): string
dryRun (在查询中): string
fieldSelector (在查询中): string
gracePeriodSeconds (在查询中): integer
labelSelector (在查询中): string
limit (在查询中): integer
pretty (在查询中): string
propagationPolicy (在查询中): string
resourceVersion (在查询中): string
resourceVersionMatch (在查询中): string
sendInitialEvents (在查询中): boolean
timeoutSeconds (在查询中): integer
响应
200 (Status): OK
401: 未授权
此页面是自动生成的。
如果您计划报告此页面的问题,请在您的问题描述中注明该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。