扩展 API


OpenShift Container Platform 4.17

扩展 API 的参考指南

Red Hat OpenShift Documentation Team

摘要

本文档描述了 OpenShift Container Platform 扩展 API 对象及其详细规格。

第 1 章 扩展 API

1.1. APIService [apiregistration.k8s.io/v1]

描述
APIService 代表特定 GroupVersion 的服务器。name 必须是 "version.group"。
类型
对象

1.2. CustomResourceDefinition [apiextensions.k8s.io/v1]

描述
CustomResourceDefinition 代表应在 API 服务器上公开的资源。其名称必须采用 <.spec.name>.<.spec.group> 格式。
类型
对象

1.3. MutatingWebhookConfiguration [admissionregistration.k8s.io/v1]

描述
MutatingWebhookConfiguration 描述了接受或拒绝并更改对象的和准入 Webhook 的配置。
类型
object

1.4. ValidatingAdmissionPolicy [admissionregistration.k8s.io/v1]

描述
ValidatingAdmissionPolicy 描述了准入验证策略的定义,该策略的定义接受或拒绝对象而不更改它。
类型
object

1.5. ValidatingAdmissionPolicyBinding [admissionregistration.k8s.io/v1]

描述

ValidatingAdmissionPolicyBinding 将 ValidatingAdmissionPolicy 与参数化资源绑定。ValidatingAdmissionPolicyBinding 和参数 CRD 定义了集群管理员如何为集群配置策略。

对于给定的准入请求,每个绑定都会导致评估 N 次,其中 N 是不使用 params 的策略/绑定,否则 N 是绑定选择的参数数。

策略的 CEL 表达式必须在最大 CEL 预算下计算计算 CEL 成本。策略的每个评估都会获得独立的 CEL 成本预算。添加/删除策略、绑定或参数会影响给定(策略、绑定、参数)组合是否在其自身的 CEL 预算内。

类型
对象

1.6. ValidatingWebhookConfiguration [admissionregistration.k8s.io/v1]

描述
ValidatingWebhookConfiguration 描述了 和 admission webhook 的配置,它们接受或拒绝和对象,而不更改它。
类型
对象

第 2 章 APIService [apiregistration.k8s.io/v1]

描述
APIService 代表特定 GroupVersion 的服务器。name 必须是 "version.group"。
类型
对象

2.1. 规格

属性类型描述

apiVersion

字符串

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

kind

字符串

kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: 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

对象

APIServiceSpec 包含查找和与服务器通信的信息。仅支持 https,但您可以禁用证书验证。

status

对象

APIServiceStatus 包含有关 API 服务器的派生信息

2.1.1. .spec

描述
APIServiceSpec 包含查找和与服务器通信的信息。仅支持 https,但您可以禁用证书验证。
类型
object
必填
  • groupPriorityMinimum
  • versionPriority
属性类型描述

caBundle

字符串

cabundle 是 PEM 编码的 CA 捆绑包,它将用于验证 API 服务器的 serving 证书。如果未指定,则使用 apiserver 上的系统信任 root。

group

字符串

group 是这个服务器主机的 API 组名称

groupPriorityMinimum

整数

GroupPriorityMinimum 是此组至少应该具有的优先级。优先级更高的意味着客户端优先于优先级较低的组。请注意,此组的其他版本可能会指定更高的 GroupPriorityMinimum 值,以便整个组具有更高的优先级。主排序基于 GroupPriorityMinimum,将最高数字排序为最低(10 之前的 20 个)。辅助排序基于对象名称的字母比较。(v1.bar before v1.foo)我们推荐类似:18000 和 PaaSes (OpenShift, Deis)中的内容。

insecureSkipTLSVerify

布尔值

insecureSkipTLSVerify 在与此服务器通信时禁用 TLS 证书验证。强烈建议不要这样做。您应该改为使用 CABundle。

service

对象

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

version

字符串

version 是这个服务器主机的 API 版本。例如:"v1"

versionPriority

整数

VersionPriority 控制其组中此 API 版本的顺序。必须大于零。主排序基于 VersionPriority,最高排序为最低值(20 之前的 10 个)。由于它位于组内部,因此数字可能很小,可能位于 10s 中。如果版本优先级相等,版本字符串将用于计算组中的顺序。如果版本字符串为 "kube-like",它将按字典顺序排序为非类似"kube-like"版本字符串。"类似于kube-like"版本以 "v" 开头,然后跟一个数字(主要版本),然后是字符串 "alpha" 或 "beta" 以及另一个数字(次版本)。它们首先按 GA > beta > alpha 排序(其中 GA 是一个没有后缀的版本,如 beta 或 alpha),然后比较主版本,然后比较次版本。一个排序版本列表示例: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10。

2.1.2. .spec.service

描述
ServiceReference 包含对 Service.legacy.k8s.io 的引用
类型
object
属性类型描述

name

字符串

name 是服务的名称

namespace

字符串

namespace 是服务的命名空间

port

整数

如果指定,托管 Webhook 的服务上的端口。默认为 443,以便向后兼容。port 应该是有效的端口号(1-65535,含)。

2.1.3. .status

描述
APIServiceStatus 包含有关 API 服务器的派生信息
类型
object
属性类型描述

conditions

array

apiService 的当前状态。

conditions[]

对象

APIServiceCondition 描述了特定点上的 APIService 状态

2.1.4. .status.conditions

描述
apiService 的当前状态。
类型
array

2.1.5. .status.conditions[]

描述
APIServiceCondition 描述了特定点上的 APIService 状态
类型
object
必填
  • type
  • status
属性类型描述

lastTransitionTime

时间

条件从一个状态转换到另一个状态最后一次的时间。

message

字符串

人类可读的消息,指示最后一次转换的详细信息。

reason

字符串

条件最后一次转换的唯一、一词、CamelCase 原因。

status

字符串

status 是条件的状态。可以是 True, False, Unknown。

type

字符串

type 是条件的类型。

2.2. API 端点

可用的 API 端点如下:

  • /apis/apiregistration.k8s.io/v1/apiservices

    • DELETE: 删除 APIService 集合
    • GET: 列出或监视类型为 APIService 的对象
    • POST :创建 APIService
  • /apis/apiregistration.k8s.io/v1/watch/apiservices

    • GET: 观察单个对 APIService 列表的更改。已弃用:使用带列表操作的 'watch' 参数。
  • /apis/apiregistration.k8s.io/v1/apiservices/{name}

    • DELETE :删除 APIService
    • GET :读取指定的 APIService
    • PATCH: 部分更新指定的 APIService
    • PUT :替换指定的 APIService
  • /apis/apiregistration.k8s.io/v1/watch/apiservices/{name}

    • GET: 观察对类型为 APIService 的对象的更改。已弃用:使用带有 list 操作的 'watch' 参数,而是过滤到带有 'fieldSelector' 参数的单个项目。
  • /apis/apiregistration.k8s.io/v1/apiservices/{name}/status

    • GET :指定 APIService 的读取状态
    • PATCH: 部分更新指定 APIService 的状态
    • PUT :替换指定 APIService 的状态

2.2.1. /apis/apiregistration.k8s.io/v1/apiservices

HTTP 方法
DELETE
描述
删除 APIService 集合
表 2.1. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

表 2.2. HTTP 响应
HTTP 代码响应正文

200 - OK

Status 模式

401 - Unauthorized

HTTP 方法
GET
描述
列出或监视由 APIService 类型的对象
表 2.3. HTTP 响应
HTTP 代码响应正文

200 - OK

APIServiceList 模式

401 - Unauthorized

HTTP 方法
POST
描述
创建 APIService
表 2.4. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 2.5. 主体参数
参数类型描述

正文(body)

APIService 模式

 
表 2.6. HTTP 响应
HTTP 代码响应正文

200 - OK

APIService 模式

201 - Created

APIService 模式

202 - Accepted

APIService 模式

401 - Unauthorized

2.2.2. /apis/apiregistration.k8s.io/v1/watch/apiservices

HTTP 方法
GET
描述
观察单个对 APIService 列表的更改。已弃用:使用带列表操作的 'watch' 参数。
表 2.7. HTTP 响应
HTTP 代码响应正文

200 - OK

WatchEvent 模式

401 - Unauthorized

2.2.3. /apis/apiregistration.k8s.io/v1/apiservices/{name}

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

name

字符串

APIService 的名称

HTTP 方法
DELETE
描述
删除 APIService
表 2.9. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

表 2.10. HTTP 响应
HTTP 代码响应正文

200 - OK

Status 模式

202 - Accepted

Status 模式

401 - Unauthorized

HTTP 方法
GET
描述
读取指定的 APIService
表 2.11. HTTP 响应
HTTP 代码响应正文

200 - OK

APIService 模式

401 - Unauthorized

HTTP 方法
PATCH
描述
部分更新指定的 APIService
表 2.12. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 2.13. HTTP 响应
HTTP 代码响应正文

200 - OK

APIService 模式

201 - Created

APIService 模式

401 - Unauthorized

HTTP 方法
PUT
描述
替换指定的 APIService
表 2.14. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 2.15. 主体参数
参数类型描述

正文(body)

APIService 模式

 
表 2.16. HTTP 响应
HTTP 代码响应正文

200 - OK

APIService 模式

201 - Created

APIService 模式

401 - Unauthorized

2.2.4. /apis/apiregistration.k8s.io/v1/watch/apiservices/{name}

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

name

字符串

APIService 的名称

HTTP 方法
GET
描述
观察对类型为 APIService 的对象的更改。已弃用:使用带列表操作的 'watch' 参数,而是过滤成带有 'fieldSelector' 参数的单个项目。
表 2.18. HTTP 响应
HTTP 代码响应正文

200 - OK

WatchEvent 模式

401 - Unauthorized

2.2.5. /apis/apiregistration.k8s.io/v1/apiservices/{name}/status

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

name

字符串

APIService 的名称

HTTP 方法
GET
描述
指定 APIService 的读取状态
表 2.20. HTTP 响应
HTTP 代码响应正文

200 - OK

APIService 模式

401 - Unauthorized

HTTP 方法
PATCH
描述
部分更新指定 APIService 的状态
表 2.21. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 2.22. HTTP 响应
HTTP 代码响应正文

200 - OK

APIService 模式

201 - Created

APIService 模式

401 - Unauthorized

HTTP 方法
PUT
描述
替换指定 APIService 的状态
表 2.23. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 2.24. 主体参数
参数类型描述

正文(body)

APIService 模式

 
表 2.25. HTTP 响应
HTTP 代码响应正文

200 - OK

APIService 模式

201 - Created

APIService 模式

401 - Unauthorized

第 3 章 CustomResourceDefinition [apiextensions.k8s.io/v1]

描述
CustomResourceDefinition 代表应在 API 服务器上公开的资源。其名称必须采用 <.spec.name>.<.spec.group> 格式。
类型
object
必填
  • spec

3.1. 规格

属性类型描述

apiVersion

字符串

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

kind

字符串

kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: 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

对象

CustomResourceDefinitionSpec 描述了用户如何显示其资源

status

对象

CustomResourceDefinitionStatus 表示 CustomResourceDefinition 的状态

3.1.1. .spec

描述
CustomResourceDefinitionSpec 描述了用户如何显示其资源
类型
object
必填
  • group
  • names
  • scope
  • 版本
属性类型描述

转换

对象

CustomResourceConversion 描述了如何转换不同版本的 CR。

group

字符串

Group 是定义的自定义资源的 API 组。自定义资源 在 /apis/ /…​ 下提供。必须与 CustomResourceDefinition 的名称匹配(格式为 <names.plural>.)。

names

对象

CustomResourceDefinitionNames 表示为这个 CustomResourceDefinition 提供的名称

preserveUnknownFields

布尔值

preserveUnknownFields 表示在保留存储时不应保留 OpenAPI 模式中指定的对象字段。元数据中的元数据、元数据和已知字段总是被保留。此字段已弃用,在 spec.versions[*].schema.openAPIV3Schema 中将 x-preserve-unknown-fields 设置为 true。详情请查看 https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning

scope

字符串

Scope 表示定义的自定义资源是 cluster- 或 namespace-scoped。允许的值是 ClusterNamespaced

版本

array

version 是定义的自定义资源的所有 API 版本列表。版本名称用于计算在 API 发现中列出提供版本的顺序。如果版本字符串为 "kube-like",它将按字典顺序排序为非类似"kube-like"版本字符串。"类似于kube-like"版本以 "v" 开头,然后跟一个数字(主要版本),然后是字符串 "alpha" 或 "beta" 以及另一个数字(次版本)。它们首先按 GA > beta > alpha 排序(其中 GA 是一个没有后缀的版本,如 beta 或 alpha),然后比较主版本,然后比较次版本。一个排序版本列表示例: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10。

versions[]

对象

CustomResourceDefinitionVersion 描述了 CRD 的版本。

3.1.2. .spec.conversion

描述
CustomResourceConversion 描述了如何转换不同版本的 CR。
类型
object
必填
  • 策略
属性类型描述

策略

字符串

strategy 指定自定义资源在版本之间转换的方式。允许的值有: - "None": converter 只更改 apiVersion,并不会影响自定义资源中的任何其他字段。- "Webhook": API 服务器将调用一个外部 webhook 以进行转换。此选项需要额外的信息。这需要 spec.preserveUnknownFields 为 false,并且设置 spec.conversion.webhook。

webhook

对象

WebhookConversion 描述了如何调用转换 Webhook

3.1.3. .spec.conversion.webhook

描述
WebhookConversion 描述了如何调用转换 Webhook
类型
object
必填
  • conversionReviewVersions
属性类型描述

clientConfig

对象

WebhookClientConfig 包含用于与 webhook 进行 TLS 连接的信息。

conversionReviewVersions

数组(字符串)

conversionReviewVersions 是 Webhook 期望的首选 ConversionReview 版本的顺序列表。API 服务器将使用支持的列表中的第一个版本。如果 API 服务器不支持此列表中指定的任何版本,则转换将失败。如果持久的 Webhook 配置指定允许的版本,且不包含任何 API 服务器已知的版本,则对 Webhook 的调用将失败。

3.1.4. .spec.conversion.webhook.clientConfig

描述
WebhookClientConfig 包含用于与 webhook 进行 TLS 连接的信息。
类型
object
属性类型描述

caBundle

字符串

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

service

对象

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

url

字符串

URL 以标准 URL 格式提供 webhook 的位置(scheme://host:port/path)。必须指定 url 或服务 中的一个。

主机 不应引用集群中运行的服务;使用 service 字段。在一些 apiservers 中,主机可以通过外部 DNS 解析(例如,kube-apiserver 无法解析集群内部 DNS,因为这将是一个分层违反情况)。主机 也可以是 IP 地址。

请注意,使用 localhost127.0.0.1 作为主机有风险,除非您特别注意在运行 apiserver 的主机上运行此 webhook,这可能需要对此 webhook 发出调用。此类安装可能不可移植,即无法在新集群中启动。

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

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

不允许使用用户或基本身份验证,如 "user:password@"。不允许 slices ("""…​")和查询参数("?…​")。

3.1.5. .spec.conversion.webhook.clientConfig.service

描述
ServiceReference 包含对 Service.legacy.k8s.io 的引用
类型
object
必填
  • namespace
  • name
属性类型描述

name

字符串

name 是服务的名称。必填

namespace

字符串

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

path

字符串

path 是要联系 Webhook 的可选 URL 路径。

port

整数

port 是要联系 Webhook 的可选服务端口。port 应该是有效的端口号(1-65535,含)。默认为 443,以便向后兼容。

3.1.6. .spec.names

描述
CustomResourceDefinitionNames 表示为这个 CustomResourceDefinition 提供的名称
类型
object
必填
  • plural
  • kind
属性类型描述

类别

数组(字符串)

类别是此自定义资源所属的分组资源列表(如 'all')。这在 API 发现文档中发布,供客户端用于支持诸如 kubectl get 所有的调用

kind

字符串

kind 是资源的序列化类型。它通常是 CamelCase 和 singular。自定义资源实例将使用这个值作为 API 调用中的 kind 属性。

listKind

字符串

listKind 是此资源列表的序列化类型。默认为 "'kind'List"。

plural

字符串

plural 是要服务的资源的复数名称。自定义资源在 /apis//&lt ;version>/…​/<plural> 下提供。必须与 CustomResourceDefinition 的名称匹配(格式为 <names.plural>.)。必须都是小写。

shortNames

数组(字符串)

shortNames 是资源的短名称,在 API 发现文档中公开,供客户端用来支持诸如 kubectl get <shortname> 等调用。它必须都是小写。

singular

字符串

单数是资源的单数名称。它必须都是小写。默认为小写 类型

3.1.7. .spec.versions

描述
version 是定义的自定义资源的所有 API 版本列表。版本名称用于计算在 API 发现中列出提供版本的顺序。如果版本字符串为 "kube-like",它将按字典顺序排序为非类似"kube-like"版本字符串。"类似于kube-like"版本以 "v" 开头,然后跟一个数字(主要版本),然后是字符串 "alpha" 或 "beta" 以及另一个数字(次版本)。它们首先按 GA > beta > alpha 排序(其中 GA 是一个没有后缀的版本,如 beta 或 alpha),然后比较主版本,然后比较次版本。一个排序版本列表示例: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10。
类型
array

3.1.8. .spec.versions[]

描述
CustomResourceDefinitionVersion 描述了 CRD 的版本。
类型
object
必填
  • name
  • served
  • storage
属性类型描述

additionalPrinterColumns

array

additionalPrinterColumns 指定表输出中返回的额外列。详情请查看 https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables。如果没有指定列,则使用一行显示自定义资源的年龄。

additionalPrinterColumns[]

对象

CustomResourceColumnDefinition 为服务器端打印指定一个列。

已弃用

布尔值

弃用表示自定义资源 API 的这个版本已弃用。当设置为 true 时,对此版本的 API 请求会在服务器响应中接收警告标头。默认为false。

deprecationWarning

字符串

deprecationWarning 覆盖返回到 API 客户端的默认警告。只有在 已弃用 为 true 时才能设置。默认警告表示这个版本已弃用,建议使用最新的服务版本等于或更高稳定性(如果存在)。

name

字符串

name 是版本名称,如 "v1", "v2beta1" 等。如果提供为 true,则自定义资源在此版本 /apis//<version&gt ;/ …​ 下提供。

schema

对象

CustomResourceValidation 是 CustomResources 的验证方法列表。

selectableFields

数组

selectableFields 指定可能用作字段选择器的字段的路径。允许最多 8 个可选择字段。请参阅 https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors

selectableFields[]

object

SelectableField 指定可用于字段选择器的字段的 JSON 路径。

served

布尔值

服务是一个标志,启用/禁用此版本通过 REST API 提供

storage

布尔值

Storage 表示在将自定义资源持久化到存储时应使用此版本。必须只有一个带有 storage=true 版本。

subresources

对象

CustomResourceSubresources 为 CustomResources 定义 status 和 scale 子资源。

3.1.9. .spec.versions[].additionalPrinterColumns

描述
additionalPrinterColumns 指定表输出中返回的额外列。详情请查看 https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables。如果没有指定列,则使用一行显示自定义资源的年龄。
类型
array

3.1.10. .spec.versions[].additionalPrinterColumns[]

描述
CustomResourceColumnDefinition 为服务器端打印指定一个列。
类型
object
必填
  • name
  • type
  • jsonPath
属性类型描述

description

字符串

description 是此列的人类可读描述。

格式

字符串

Format 是此列的可选 OpenAPI 类型定义。'name' 格式应用于主标识符列,以帮助客户端识别列是资源名称。详情请查看 https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types

jsonPath

字符串

jsonpath 是一个一个简单的 JSON 路径(例如,使用数组表示法),它会针对每个自定义资源进行评估,以便为此列生成值。

name

字符串

name 是该列的人类可读名称。

priority

整数

优先级是一个整数,定义此列的相对重要性,与其他列相比。较低数字被视为优先级更高。在有限空间场景中可能会省略的列应赋予优先级大于 0。

type

字符串

type 是此列的 OpenAPI 类型定义。详情请查看 https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types

3.1.11. .spec.versions[].schema

描述
CustomResourceValidation 是 CustomResources 的验证方法列表。
类型
object
属性类型描述

openAPIV3Schema

``

openAPIV3Schema 是 OpenAPI v3 模式,用于验证和修剪。

3.1.12. .spec.versions[].selectableFields

描述
selectableFields 指定可能用作字段选择器的字段的路径。允许最多 8 个可选择字段。请参阅 https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
类型
数组

3.1.13. .spec.versions[].selectableFields[]

描述
SelectableField 指定可用于字段选择器的字段的 JSON 路径。
类型
object
必填
  • jsonPath
属性类型描述

jsonPath

string

jsonpath 是一个一个简单的 JSON 路径,用于针对每个自定义资源进行评估,以生成字段选择器值。只允许没有数组表示法的 JSON 路径。必须指向类型为字符串、布尔值或整数的字段。允许带有 enum 值和字符串的类型。如果 JSONPath 引用了资源中的 absent 字段,则 jsonPath 会评估为空字符串。不得指向 metdata 字段。必需。

3.1.14. .spec.versions[].subresources

描述
CustomResourceSubresources 为 CustomResources 定义 status 和 scale 子资源。
类型
object
属性类型描述

scale

对象

CustomResourceSubresourceScale 定义如何为 CustomResource 提供 scale 子资源。

status

对象

CustomResourceSubresourceStatus 定义如何为 CustomResources 提供 status 子资源。状态由 CustomResource 中的 .status JSON 路径表示。设置后,Ceph 会公开自定义资源 * PUT 请求到 /status 子资源的 /status 子资源获取自定义资源对象,并忽略除 status 小节之外的任何状态片段更改的 /status 子资源忽略对 status 小节的更改。

3.1.15. .spec.versions[].subresources.scale

描述
CustomResourceSubresourceScale 定义如何为 CustomResource 提供 scale 子资源。
类型
object
必填
  • specReplicasPath
  • statusReplicasPath
属性类型描述

labelSelectorPath

字符串

labelSelectorPath 在自定义资源中定义与 Scale status.selector 对应的 JSON 路径。只允许没有数组表示法的 JSON 路径。必须是 .status.spec 下的 JSON 路径。必须设置为 HorizontalPodAutoscaler。此 JSON 路径指向的字段必须是字符串字段(而不是复杂的选择器 struct),其中包含字符串格式的序列化标签选择器。更多信息: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource 如果自定义资源中给定路径没有值,/scale 子资源中的 status.selector 值将默认为空字符串。

specReplicasPath

字符串

specReplicasPath 定义自定义资源中的 JSON 路径,该路径对应于 Scale spec.replicas。只允许没有数组表示法的 JSON 路径。必须是 .spec 下的 JSON 路径。如果自定义资源中给定路径没有值,/scale 子资源将在 GET 上返回错误。

statusReplicasPath

字符串

statusReplicasPath 定义自定义资源中的 JSON 路径,对应于 Scale status.replicas。只允许没有数组表示法的 JSON 路径。必须是 .status 下的 JSON 路径。如果自定义资源中给定路径没有值,/scale 子资源中的 status.replicas 值将默认为 0。

3.1.16. .spec.versions[].subresources.status

描述
CustomResourceSubresourceStatus 定义如何为 CustomResources 提供 status 子资源。状态由 CustomResource 中的 .status JSON 路径表示。设置后,Ceph 会公开自定义资源 * PUT 请求到 /status 子资源的 /status 子资源获取自定义资源对象,并忽略除 status 小节之外的任何状态片段更改的 /status 子资源忽略对 status 小节的更改。
类型
对象

3.1.17. .status

描述
CustomResourceDefinitionStatus 表示 CustomResourceDefinition 的状态
类型
object
属性类型描述

acceptedNames

对象

CustomResourceDefinitionNames 表示为这个 CustomResourceDefinition 提供的名称

conditions

array

conditions 表示 CustomResourceDefinition 的特定方面的状态

conditions[]

对象

CustomResourceDefinitionCondition 包含此 pod 的当前条件的详情。

storedVersions

数组(字符串)

storedVersions 列出之前保留的所有 CustomResource 版本。跟踪这些版本允许 etcd 中保存版本的迁移路径。该字段是可变的,因此迁移控制器可以完成到另一个版本的迁移(确保存储中没有保留旧对象),然后从此列表中删除其余版本。在此列表中存在时,可能无法从 spec.versions 中删除版本。

3.1.18. .status.acceptedNames

描述
CustomResourceDefinitionNames 表示为这个 CustomResourceDefinition 提供的名称
类型
object
必填
  • plural
  • kind
属性类型描述

类别

数组(字符串)

类别是此自定义资源所属的分组资源列表(如 'all')。这在 API 发现文档中发布,供客户端用于支持诸如 kubectl get 所有的调用

kind

字符串

kind 是资源的序列化类型。它通常是 CamelCase 和 singular。自定义资源实例将使用这个值作为 API 调用中的 kind 属性。

listKind

字符串

listKind 是此资源列表的序列化类型。默认为 "'kind'List"。

plural

字符串

plural 是要服务的资源的复数名称。自定义资源在 /apis//&lt ;version>/…​/<plural> 下提供。必须与 CustomResourceDefinition 的名称匹配(格式为 <names.plural>.)。必须都是小写。

shortNames

数组(字符串)

shortNames 是资源的短名称,在 API 发现文档中公开,供客户端用来支持诸如 kubectl get <shortname> 等调用。它必须都是小写。

singular

字符串

单数是资源的单数名称。它必须都是小写。默认为小写 类型

3.1.19. .status.conditions

描述
conditions 表示 CustomResourceDefinition 的特定方面的状态
类型
array

3.1.20. .status.conditions[]

描述
CustomResourceDefinitionCondition 包含此 pod 的当前条件的详情。
类型
object
必填
  • type
  • status
属性类型描述

lastTransitionTime

Time

lastTransitionTime 时间,条件从一个状态转换到另一个状态。

message

字符串

Message 是人类可读的消息,表示有关最后一次转换的详细信息。

reason

字符串

reason 是条件最后一次转换的唯一一词 CamelCase 原因。

status

字符串

status 是条件的状态。可以是 True, False, Unknown。

type

字符串

type 是条件的类型。类型包括 Established、NamesAccepted 和 Terminating。

3.2. API 端点

可用的 API 端点如下:

  • /apis/apiextensions.k8s.io/v1/customresourcedefinitions

    • DELETE: 删除 CustomResourceDefinition 集合
    • GET: 列出或监视类型为 CustomResourceDefinition 的对象
    • POST :创建 CustomResourceDefinition
  • /apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions

    • GET: 观察单个对 CustomResourceDefinition 列表的更改。已弃用:改为使用 'watch' 参数及列表操作。
  • /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}

    • DELETE :删除 CustomResourceDefinition
    • GET :读取指定的 CustomResourceDefinition
    • PATCH: 部分更新指定的 CustomResourceDefinition
    • PUT :替换指定的 CustomResourceDefinition
  • /apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions/{name}

    • GET: 观察对类型为 CustomResourceDefinition 的对象的更改。已弃用:使用带有 list 操作的 'watch' 参数,而是过滤为带有 'fieldSelector' 参数的单个项目。
  • /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status

    • GET :指定 CustomResourceDefinition 的读取状态
    • PATCH: 部分更新指定 CustomResourceDefinition 的状态
    • PUT :替换指定 CustomResourceDefinition 的状态

3.2.1. /apis/apiextensions.k8s.io/v1/customresourcedefinitions

HTTP 方法
DELETE
描述
删除 CustomResourceDefinition 集合
表 3.1. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

表 3.2. HTTP 响应
HTTP 代码响应正文

200 - OK

Status 模式

401 - Unauthorized

HTTP 方法
GET
描述
列出或监视类型为 CustomResourceDefinition 的对象
表 3.3. HTTP 响应
HTTP 代码响应正文

200 - OK

CustomResourceDefinitionList 模式

401 - Unauthorized

HTTP 方法
POST
描述
创建 CustomResourceDefinition
表 3.4. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 3.5. 主体参数
参数类型描述

正文(body)

CustomResourceDefinition 模式

 
表 3.6. HTTP 响应
HTTP 代码响应正文

200 - OK

CustomResourceDefinition 模式

201 - Created

CustomResourceDefinition 模式

202 - Accepted

CustomResourceDefinition 模式

401 - Unauthorized

3.2.2. /apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions

HTTP 方法
GET
描述
观察单个对 CustomResourceDefinition 列表的更改。已弃用:改为使用 'watch' 参数和 list 操作。
表 3.7. HTTP 响应
HTTP 代码响应正文

200 - OK

WatchEvent 模式

401 - Unauthorized

3.2.3. /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}

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

name

字符串

CustomResourceDefinition 的名称

HTTP 方法
DELETE
描述
删除 CustomResourceDefinition
表 3.9. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

表 3.10. HTTP 响应
HTTP 代码响应正文

200 - OK

Status 模式

202 - Accepted

Status 模式

401 - Unauthorized

HTTP 方法
GET
描述
读取指定的 CustomResourceDefinition
表 3.11. HTTP 响应
HTTP 代码响应正文

200 - OK

CustomResourceDefinition 模式

401 - Unauthorized

HTTP 方法
PATCH
描述
部分更新指定的 CustomResourceDefinition
表 3.12. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 3.13. HTTP 响应
HTTP 代码响应正文

200 - OK

CustomResourceDefinition 模式

201 - Created

CustomResourceDefinition 模式

401 - Unauthorized

HTTP 方法
PUT
描述
替换指定的 CustomResourceDefinition
表 3.14. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 3.15. 主体参数
参数类型描述

正文(body)

CustomResourceDefinition 模式

 
表 3.16. HTTP 响应
HTTP 代码响应正文

200 - OK

CustomResourceDefinition 模式

201 - Created

CustomResourceDefinition 模式

401 - Unauthorized

3.2.4. /apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions/{name}

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

name

字符串

CustomResourceDefinition 的名称

HTTP 方法
GET
描述
观察对类型为 CustomResourceDefinition 的对象的更改。已弃用:使用带列表操作的 'watch' 参数,而是过滤成带有 'fieldSelector' 参数的单个项目。
表 3.18. HTTP 响应
HTTP 代码响应正文

200 - OK

WatchEvent 模式

401 - Unauthorized

3.2.5. /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status

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

name

字符串

CustomResourceDefinition 的名称

HTTP 方法
GET
描述
指定 CustomResourceDefinition 的读取状态
表 3.20. HTTP 响应
HTTP 代码响应正文

200 - OK

CustomResourceDefinition 模式

401 - Unauthorized

HTTP 方法
PATCH
描述
部分更新指定 CustomResourceDefinition 的状态
表 3.21. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 3.22. HTTP 响应
HTTP 代码响应正文

200 - OK

CustomResourceDefinition 模式

201 - Created

CustomResourceDefinition 模式

401 - Unauthorized

HTTP 方法
PUT
描述
替换指定 CustomResourceDefinition 的状态
表 3.23. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 3.24. 主体参数
参数类型描述

正文(body)

CustomResourceDefinition 模式

 
表 3.25. HTTP 响应
HTTP 代码响应正文

200 - OK

CustomResourceDefinition 模式

201 - Created

CustomResourceDefinition 模式

401 - Unauthorized

第 4 章 MutatingWebhookConfiguration [admissionregistration.k8s.io/v1]

描述
MutatingWebhookConfiguration 描述了接受或拒绝并更改对象的和准入 Webhook 的配置。
类型
对象

4.1. 规格

属性类型描述

apiVersion

字符串

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

kind

字符串

kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: 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

array

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

webhooks[]

对象

mutatingwebhook 描述了准入 Webhook 以及它应用到的资源和操作。

4.1.1. .webhooks

描述
Webhook 是 Webhook 以及受影响的资源和操作的列表。
类型
array

4.1.2. .webhooks[]

描述
mutatingwebhook 描述了准入 Webhook 以及它应用到的资源和操作。
类型
object
必填
  • 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 的请求必须满足的条件列表。匹配条件过滤请求,它们已与 rules、namespaceSelector 和 objectSelector 匹配。空 matchConditions 列表与所有请求匹配。允许最多有 64 个匹配条件。

完全匹配逻辑为(按顺序):1。如果 ANY matchCondition 评估为 FALSE,则会跳过 Webhook。2.如果 ALL matchConditions 评估为 TRUE,则会调用 Webhook。3.如果任何 matchCondition 评估为错误(但没有是 FALSE):- 如果 failurePolicy=Fail,拒绝请求 - If failurePolicy=Ignore,则忽略错误,并跳过 Webhook

matchConditions[]

object

MatchCondition 代表一个条件,需要满足该条件才能将请求发送到 webhook。

matchPolicy

字符串

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

- exact :仅在与指定规则完全匹配时才匹配请求。例如,如果可通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改部署,但 "rules" 仅包含 apiGroups:["apps"], apiVersions:["v1"],resources: ["deployments"],对 apps/v1beta1 或 extensions/v1beta1 的请求不会发送到 webhook。

- equivalent :如果修改规则中列出的资源,即使通过另一个 API 组或版本来匹配请求。例如,如果可通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 和 "rules" 修改部署,则只有 apiGroups:["apps"], apiVersions:["v1"],resources: ["deployments"],请求 apps/v1beta1 或 extensions/v1beta1 将转换为 apps/v1beta1,并发送到 webhook。

默认为 "Equivalent"

可能枚举值:- "Equivalent" 表示如果请求通过另一个 API 组或版本修改规则中列出的资源,则应只将请求发送到 webhook。

名称

字符串

准入 Webhook 的名称。名称应该是完全限定的,如 imagepolicy.kubernetes.io,其中 "imagepolicy" 是 webhook 的名称,kubernetes.io 是机构的名称。必需。

namespaceSelector

LabelSelector

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

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

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

有关标签选择器的更多信息,请参阅 https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/

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

objectSelector

LabelSelector

objectSelector 决定是否根据对象是否匹配标签运行 webhook。将针对要发送到 webhook 的 oldObject 和 newObject 评估 objectSelector,并在其中一个对象与选择器匹配时被视为匹配。一个 null 对象(如果是 create, 或 newObject in the delete 时),或没有标签(如 DeploymentRollback 或 PodProxyOptions 对象)的对象不会被认为匹配。只有在 webhook 是 opt-in 时才使用对象选择器,因为最终用户可以通过设置标签来跳过准入 Webhook。默认为空 LabelSelector,它将匹配所有内容。

reinvocationPolicy

字符串

reinvocationPolicy 表示此 webhook 是否应该多次作为单个准入评估的一部分调用。允许的值是 "Never" 和 "IfNeeded"。

Never:在单个准入评估中不会多次调用 Webhook。

IfNeeded :如果对象在初始 webhook 调用后被其他准入插件修改,则 webhook 将至少被称为一个额外的时间作为准入评估的一部分。指定此选项的 Webhook 必须 是幂等的,能够处理之前接受的对象。注: 无法保证额外的调用数量完全匹配。* 如果额外的调用会对对象进行进一步修改,无法保证再次调用 Webhook。* 使用此选项的 Webhook 可以重新排序,以最小化额外调用的数量。* 要在所有变异完成后验证对象,请使用验证准入 Webhook。

默认为 "Never"。

可能枚举值:- "IfNeeded" 表示如果初始 webhook 调用后,webhook 可能至少被称为准入评估的一部分,而其他准入插件会修改被其他准入插件修改。- "Never" 表示,在单一准入评估中,webhook 不能多次被调用。

rules

array

规则描述了 webhook 对资源/子资源执行的操作。如果 webhook 匹配任何 规则,则 webhook 会小心操作。但是,为了防止 ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 将集群置于状态,在没有完全禁用插件的情况下,无法完全禁用插件,ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 不会对 ValidatingWebhookConfiguration 和 MutatingWebhookConfiguration 对象的准入请求调用。

rules[]

对象

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

sideEffects

字符串

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

可能枚举值: - "None" 表示调用 Webhook 将没有副作用。- "NoneOnDryRun" 表示调用 Webhook 可能具有副作用,但如果检查的请求具有 dry-run 属性,则侧效果将会被禁止。"Some" 表示调用 Webhook 可能具有副作用。如果具有 dry-run 属性的请求会触发对此 webhook 的调用,则请求将失败。- "Unknown" 表示没有已知调用 webhook 的副作用的信息。如果具有 dry-run 属性的请求会触发对此 webhook 的调用,则请求将失败。

timeoutSeconds

整数

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

4.1.3. .webhooks[].clientConfig

描述
WebhookClientConfig 包含与 webhook 进行 TLS 连接的信息
类型
object
属性类型描述

caBundle

字符串

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

service

对象

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

url

字符串

URL 以标准 URL 格式提供 webhook 的位置(scheme://host:port/path)。必须指定 url 或服务 中的一个。

主机 不应引用集群中运行的服务;使用 service 字段。在一些 apiservers 中,主机可以通过外部 DNS 解析(例如,kube-apiserver 无法解析集群内部 DNS,因为这将是一个分层违反情况)。主机 也可以是 IP 地址。

请注意,使用 localhost127.0.0.1 作为主机有风险,除非您特别注意在运行 apiserver 的主机上运行此 webhook,这可能需要对此 webhook 发出调用。此类安装可能不可移植,即无法在新集群中启动。

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

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

不允许使用用户或基本身份验证,如 "user:password@"。不允许 slices ("""…​")和查询参数("?…​")。

4.1.4. .webhooks[].clientConfig.service

描述
ServiceReference 包含对 Service.legacy.k8s.io 的引用
类型
object
必填
  • namespace
  • name
属性类型描述

name

字符串

name 是服务的名称。必填

namespace

字符串

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

path

字符串

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

port

整数

如果指定,托管 Webhook 的服务上的端口。默认为 443,以便向后兼容。port 应该是有效的端口号(1-65535,含)。

4.1.5. .webhooks[].matchConditions

描述

MatchConditions 是发送到此 webhook 的请求必须满足的条件列表。匹配条件过滤请求,它们已与 rules、namespaceSelector 和 objectSelector 匹配。空 matchConditions 列表与所有请求匹配。允许最多有 64 个匹配条件。

完全匹配逻辑为(按顺序):1。如果 ANY matchCondition 评估为 FALSE,则会跳过 Webhook。2.如果 ALL matchConditions 评估为 TRUE,则会调用 Webhook。3.如果任何 matchCondition 评估为错误(但没有是 FALSE):- 如果 failurePolicy=Fail,拒绝请求 - If failurePolicy=Ignore,则忽略错误,并跳过 Webhook

类型
数组

4.1.6. .webhooks[].matchConditions[]

描述
MatchCondition 代表一个条件,需要满足该条件才能将请求发送到 webhook。
类型
object
必填
  • 名称
  • expression
属性类型描述

expression

string

expression 代表将由 CEL 评估的表达式。必须评估 bool。CEL 表达式可以访问 AdmissionRequest 和 Authorizer 的内容,并组织成 CEL 变量:

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

必需。

名称

string

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

必需。

4.1.7. .webhooks[].rules

描述
规则描述了 webhook 对资源/子资源执行的操作。如果 webhook 匹配任何 规则,则 webhook 会小心操作。但是,为了防止 ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 将集群置于状态,在没有完全禁用插件的情况下,无法完全禁用插件,ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 不会对 ValidatingWebhookConfiguration 和 MutatingWebhookConfiguration 对象的准入请求调用。
类型
array

4.1.8. .webhooks[].rules[]

描述
RuleWithOperations 是 Operations 和 Resources 的元组。建议确保所有元组扩展都有效。
类型
object
属性类型描述

apiGroups

数组(字符串)

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

apiVersions

数组(字符串)

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

操作

数组(字符串)

操作是准入 hook 为所有操作以及添加的任何准入操作( CREATE、UPDATE、DELETE、CONNECT 或 *)的操作。如果 '*' 存在,则片段的长度必须是一。必需。

资源

数组(字符串)

resources 是一组这个规则应用到的资源列表。

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

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

根据封闭对象,可能无法允许子资源。必需。

scope

字符串

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

4.2. API 端点

可用的 API 端点如下:

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

    • DELETE: 删除 MutatingWebhookConfiguration 集合
    • GET: list 或 watch kind 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 的对象的更改。已弃用:使用带有 list 操作的 'watch' 参数,而是过滤为带有 'fieldSelector' 参数的单个项目。

4.2.1. /apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations

HTTP 方法
DELETE
描述
删除 MutatingWebhookConfiguration 集合
表 4.1. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

表 4.2. HTTP 响应
HTTP 代码响应正文

200 - OK

Status 模式

401 - Unauthorized

HTTP 方法
GET
描述
列出或监视类型为 MutatingWebhookConfiguration 的对象
表 4.3. HTTP 响应
HTTP 代码响应正文

200 - OK

MutatingWebhookConfigurationList 模式

401 - Unauthorized

HTTP 方法
POST
描述
创建 MutatingWebhookConfiguration
表 4.4. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 4.5. 主体参数
参数类型描述

正文(body)

MutatingWebhookConfiguration 模式

 
表 4.6. HTTP 响应
HTTP 代码响应正文

200 - OK

MutatingWebhookConfiguration 模式

201 - Created

MutatingWebhookConfiguration 模式

202 - Accepted

MutatingWebhookConfiguration 模式

401 - Unauthorized

4.2.2. /apis/admissionregistration.k8s.io/v1/watch/mutatingwebhookconfigurations

HTTP 方法
GET
描述
观察单个对 MutatingWebhookConfiguration 列表的更改。已弃用:使用带列表操作的 'watch' 参数。
表 4.7. HTTP 响应
HTTP 代码响应正文

200 - OK

WatchEvent 模式

401 - Unauthorized

4.2.3. /apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/{name}

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

name

字符串

MutatingWebhookConfiguration 的名称

HTTP 方法
DELETE
描述
删除 MutatingWebhookConfiguration
表 4.9. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

表 4.10. HTTP 响应
HTTP 代码响应正文

200 - OK

Status 模式

202 - Accepted

Status 模式

401 - Unauthorized

HTTP 方法
GET
描述
阅读指定的 MutatingWebhookConfiguration
表 4.11. HTTP 响应
HTTP 代码响应正文

200 - OK

MutatingWebhookConfiguration 模式

401 - Unauthorized

HTTP 方法
PATCH
描述
部分更新指定的 MutatingWebhookConfiguration
表 4.12. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 4.13. HTTP 响应
HTTP 代码响应正文

200 - OK

MutatingWebhookConfiguration 模式

201 - Created

MutatingWebhookConfiguration 模式

401 - Unauthorized

HTTP 方法
PUT
描述
替换指定的 MutatingWebhookConfiguration
表 4.14. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 4.15. 主体参数
参数类型描述

正文(body)

MutatingWebhookConfiguration 模式

 
表 4.16. HTTP 响应
HTTP 代码响应正文

200 - OK

MutatingWebhookConfiguration 模式

201 - Created

MutatingWebhookConfiguration 模式

401 - Unauthorized

4.2.4. /apis/admissionregistration.k8s.io/v1/watch/mutatingwebhookconfigurations/{name}

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

name

字符串

MutatingWebhookConfiguration 的名称

HTTP 方法
GET
描述
观察对类型为 MutatingWebhookConfiguration 的对象的更改。已弃用:使用带有 list 操作的 'watch' 参数,而是过滤到带有 'fieldSelector' 参数的单个项目。
表 4.18. HTTP 响应
HTTP 代码响应正文

200 - OK

WatchEvent 模式

401 - Unauthorized

第 5 章 ValidatingAdmissionPolicy [admissionregistration.k8s.io/v1]

描述
ValidatingAdmissionPolicy 描述了准入验证策略的定义,该策略的定义接受或拒绝对象而不更改它。
类型
对象

5.1. 规格

属性类型描述

apiVersion

字符串

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

kind

字符串

kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: 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

object

ValidatingAdmissionPolicySpec 是 AdmissionPolicy 所需的行为的规格。

status

object

ValidatingAdmissionPolicyStatus 代表准入验证策略的状态。

5.1.1. .spec

描述
ValidatingAdmissionPolicySpec 是 AdmissionPolicy 所需的行为的规格。
类型
object
属性类型描述

auditAnnotations

数组

auditAnnotations 包含 CEL 表达式,用于为 API 请求的审计事件生成审计注解。验证和 auditAnnotations 可能并不为空;至少需要一个验证或 auditAnnotations。

auditAnnotations[]

object

AuditAnnotation 描述了如何为 API 请求生成审计注解。

failurePolicy

string

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

如果 spec.paramKind 指向不存在的 Kind,则策略无效。如果 spec.paramRef.name 指的是不存在的资源,则绑定无效。

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

当 failurePolicy 设置为 Fail 时,ValidatingAdmissionPolicyBinding validationActions 定义如何强制实施失败。

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

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

matchConditions

数组

MatchConditions 是验证请求必须满足的条件列表。匹配条件过滤请求,它们已与 rules、namespaceSelector 和 objectSelector 匹配。空 matchConditions 列表与所有请求匹配。允许最多有 64 个匹配条件。

如果提供了参数对象,它可以通过 params 处理,其方式与验证表达式相同。

完全匹配逻辑为(按顺序):1。如果 ANY matchCondition 评估为 FALSE,则会跳过策略。2.如果 ALL matchConditions 评估为 TRUE,则会评估策略。3.如果任何 matchCondition 评估为错误(但没有是 FALSE): - 如果 failurePolicy=Fail,拒绝请求 - If failurePolicy=Ignore,则会跳过策略

matchConditions[]

object

MatchCondition 代表一个条件,需要满足该条件才能将请求发送到 webhook。

matchConstraints

object

MatchResources 决定是否根据它是否满足匹配标准在对象上运行准入控制策略。排除规则优先于 include 规则(如果资源同时匹配,则会排除它)

paramKind

object

ParamKind 是 Group Kind 和 Version 的元组。

验证

数组

验证包含用于应用验证的 CEL 表达式。验证和审计注解可能并不为空,至少需要一个 Validations 或 AuditAnnotations。

validations[]

object

validation 指定用来应用验证的 CEL 表达式。

变量

数组

变量包含可用于组成其他表达式的变量的定义。每个变量都定义为命名的 CEL 表达式。这里定义的变量将在策略的其他表达式中的 变量 下提供,但 MatchConditions 除外,因为 MatchConditions 在策略的其余部分之前评估。

变量的表达式可以引用之前在列表中定义的其他变量,但不能引用之后定义的变量。因此,变量必须按照第一个外观和 acyclic 的顺序进行排序。

variables[]

object

变量是变量的定义,用于组成。变量定义为命名表达式。

5.1.2. .spec.auditAnnotations

描述
auditAnnotations 包含 CEL 表达式,用于为 API 请求的审计事件生成审计注解。验证和 auditAnnotations 可能并不为空;至少需要一个验证或 auditAnnotations。
类型
数组

5.1.3. .spec.auditAnnotations[]

描述
AuditAnnotation 描述了如何为 API 请求生成审计注解。
类型
object
必填
  • key
  • valueExpression
属性类型描述

key

string

key 指定审计注解键。ValidatingAdmissionPolicy 的 audit 注解键必须是唯一的。密钥必须是限定名称([A-Za-z0-9][-A-Za-z0-9_.]*)长度不超过 63 字节。

键与 ValidatingAdmissionPolicy 的资源名称相结合,以构造审计注解键:"{ValidatingAdmissionPolicy name}/{key}"。

如果准入 webhook 使用与这个 ValidatingAdmissionPolicy 和相同的审计注解键相同的资源名称,则注解键将相同。在这种情况下,使用密钥编写的第一个注解将包含在审计事件中,所有具有相同键的后续注解都会被丢弃。

必需。

valueExpression

string

valueExpression 代表 CEL 评估的表达式来生成审计注解值。表达式必须评估为字符串或 null 值。如果表达式评估为字符串,则 audit 注解会包含在字符串值中。如果表达式评估为 null 或空字符串,则会省略 audit 注解。值Expression 长度不超过 5kb。如果 valueExpression 的结果长度超过 10kb,它将被截断为 10kb。

如果多个 ValidatingAdmissionPolicyBinding 资源与 API 请求匹配,则会为每个绑定评估 valueExpression。valueExpressions 生成的所有唯一值都将在以逗号分隔的列表中合并。

必需。

5.1.4. .spec.matchConditions

描述

MatchConditions 是验证请求必须满足的条件列表。匹配条件过滤请求,它们已与 rules、namespaceSelector 和 objectSelector 匹配。空 matchConditions 列表与所有请求匹配。允许最多有 64 个匹配条件。

如果提供了参数对象,它可以通过 params 处理,其方式与验证表达式相同。

完全匹配逻辑为(按顺序):1。如果 ANY matchCondition 评估为 FALSE,则会跳过策略。2.如果 ALL matchConditions 评估为 TRUE,则会评估策略。3.如果任何 matchCondition 评估为错误(但没有是 FALSE): - 如果 failurePolicy=Fail,拒绝请求 - If failurePolicy=Ignore,则会跳过策略

类型
数组

5.1.5. .spec.matchConditions[]

描述
MatchCondition 代表一个条件,需要满足该条件才能将请求发送到 webhook。
类型
object
必填
  • 名称
  • expression
属性类型描述

expression

string

expression 代表将由 CEL 评估的表达式。必须评估 bool。CEL 表达式可以访问 AdmissionRequest 和 Authorizer 的内容,并组织成 CEL 变量:

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

必需。

名称

string

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

必需。

5.1.6. .spec.matchConstraints

描述
MatchResources 决定是否根据它是否满足匹配标准在对象上运行准入控制策略。排除规则优先于 include 规则(如果资源同时匹配,则会排除它)
类型
object
属性类型描述

excludeResourceRules

数组

ExcludeResourceRules 描述了 ValidatingAdmissionPolicy 不应关注哪些资源/子资源的操作。排除规则优先于 include 规则(如果资源同时匹配,则会排除它)

excludeResourceRules[]

object

NamedRuleWithOperations 是 Operations 和 ResourceNames 的元组。

matchPolicy

string

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

- exact :仅在与指定规则完全匹配时才匹配请求。例如,如果可通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改部署,但 "rules" 仅包含 apiGroups:["apps"], apiVersions:["v1"],resources: ["deployments"],对 apps/v1beta1 或 extensions/v1beta1 的请求不会发送到 ValidatingAdmissionPolicy。

- equivalent :如果修改规则中列出的资源,即使通过另一个 API 组或版本来匹配请求。例如,如果可通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 和 "rules" 修改部署,则只有 apiGroups:["apps"], apiVersions:["v1"],resources: ["deployments"],请求 apps/v1beta1 或 extensions/v1beta1 将转换为 apps/v1beta1,并发送到 ValidatingAdmissionPolicy。

默认为 "Equivalent"

可能枚举值:- "Equivalent" 表示如果请求通过另一个 API 组或版本修改规则中列出的资源,则应只将请求发送到 webhook。

namespaceSelector

LabelSelector

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

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

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

有关标签选择器的更多信息,请参阅 https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/

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

objectSelector

LabelSelector

objectSelector 决定是否根据对象是否匹配标签运行验证。objectSelector 针对发送到 cel 验证的 oldObject 和 newObject 评估,如果任何一个对象与选择器匹配,则被视为匹配。一个 null 对象(如果是 create, 或 newObject in the delete 时),或没有标签(如 DeploymentRollback 或 PodProxyOptions 对象)的对象不会被认为匹配。只有在 webhook 是 opt-in 时才使用对象选择器,因为最终用户可以通过设置标签来跳过准入 Webhook。默认为空 LabelSelector,它将匹配所有内容。

resourceRules

数组

resourceRules 描述了 ValidatingAdmissionPolicy 匹配的资源/资源什么操作。如果某个操作 与任何 规则匹配,则策略会监视它。

resourceRules[]

object

NamedRuleWithOperations 是 Operations 和 ResourceNames 的元组。

5.1.7. .spec.matchConstraints.excludeResourceRules

描述
ExcludeResourceRules 描述了 ValidatingAdmissionPolicy 不应关注哪些资源/子资源的操作。排除规则优先于 include 规则(如果资源同时匹配,则会排除它)
类型
数组

5.1.8. .spec.matchConstraints.excludeResourceRules[]

描述
NamedRuleWithOperations 是 Operations 和 ResourceNames 的元组。
类型
object
属性类型描述

apiGroups

数组(字符串)

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

apiVersions

数组(字符串)

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

操作

数组(字符串)

操作是准入 hook 为所有操作以及添加的任何准入操作( CREATE、UPDATE、DELETE、CONNECT 或 *)的操作。如果 '*' 存在,则片段的长度必须是一。必需。

resourceNames

数组(字符串)

resourceNames 是一个可选的规则应用到的名称白名单。空集表示所有都会被允许。

resources

数组(字符串)

resources 是一组这个规则应用到的资源列表。

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

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

根据封闭对象,可能无法允许子资源。必需。

scope

字符串

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

5.1.9. .spec.matchConstraints.resourceRules

描述
resourceRules 描述了 ValidatingAdmissionPolicy 匹配的资源/资源什么操作。如果某个操作 与任何 规则匹配,则策略会监视它。
类型
数组

5.1.10. .spec.matchConstraints.resourceRules[]

描述
NamedRuleWithOperations 是 Operations 和 ResourceNames 的元组。
类型
object
属性类型描述

apiGroups

数组(字符串)

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

apiVersions

数组(字符串)

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

操作

数组(字符串)

操作是准入 hook 为所有操作以及添加的任何准入操作( CREATE、UPDATE、DELETE、CONNECT 或 *)的操作。如果 '*' 存在,则片段的长度必须是一。必需。

resourceNames

数组(字符串)

resourceNames 是一个可选的规则应用到的名称白名单。空集表示所有都会被允许。

resources

数组(字符串)

resources 是一组这个规则应用到的资源列表。

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

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

根据封闭对象,可能无法允许子资源。必需。

scope

字符串

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

5.1.11. .spec.paramKind

描述
ParamKind 是 Group Kind 和 Version 的元组。
类型
object
属性类型描述

apiVersion

string

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

kind

string

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

5.1.12. .spec.validations

描述
验证包含用于应用验证的 CEL 表达式。验证和审计注解可能并不为空,至少需要一个 Validations 或 AuditAnnotations。
类型
数组

5.1.13. .spec.validations[]

描述
validation 指定用来应用验证的 CEL 表达式。
类型
object
必填
  • expression
属性类型描述

expression

string

expression 代表 CEL 评估的表达式。https://github.com/google/cel-spec CEL 表达式可以访问 API 请求/响应的内容,并被组织到 CEL 变量中,以及其他一些有用的变量:

- 'object' - 来自传入请求的对象。对于 DELETE 请求,值为 null。- 'oldObject' - 现有对象。对于 CREATE 请求,值为 null。- 'request' - API 请求的属性([ref](/pkg/apis/admission/types.goReactAdmissionRequest))。- 'params' - Parameter resource 引用由策略绑定被评估。只有策略有一个 ParamKind. - 'namespaceObject' - 传入对象所属命名空间对象时填充。对于集群范围的资源,值为 null。- 'variables' - 组合变量的映射,从其名称到 lazily 评估的值。例如,名为 'foo' 的变量可作为 'variables.foo'. - 'authorizer' - A 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_.-/]* 的属性名称才可以访问。在表达式中访问时,访问的属性名称会按照以下规则进行转义: - 'scaps to 'underscores' - '.' escapes to'dot' - '-' escapes to 'dash' - '/' escapes to 'slash' - Property name that exactly match a CEL RESERVED keyword escape to '{keyword}''.关键字有:"true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", "import", "let", "loop", "package", "namespace", "return"。示例: - 表达式访问名为 "namespace": {"Expression": "object.namespace &gt; 0"} 的属性 - Expression 访问名为 "x-prop": {"Expression": "object.xdashprop > 0"} - Expression access a attribute named "redactd": {"Expression": "object.redactunderscoresd > 0"}

等于列表类型为 'set' 或 'map' 的数组,即 [1, 2] == [2, 1]。与 x-kubernetes-list-type 的数组连接会使用列表类型的语义: - 'set': X + Y 会执行联合,其中 X + Y 将保留所有元素的数组位置,并在 Y 中附加非交集元素,保留其部分顺序。- 'map': X + Y 执行合并,其中保留所有键的阵列位置,但在 Y 中保留值,保留其部分顺序。带有非交集键的 Y 中的元素会附加,保留其部分顺序。必需。

message

string

Message 代表验证失败时显示的消息。如果 Expression 包含换行符,则需要消息。消息不得包含换行符。如果未设置,则消息为 "failed rule: {Rule}"。例如,如果 Expression 包含换行符,则必须是一个与 spec.host 匹配的主机的 URL。需要消息。消息不得包含换行符。如果未设置,则消息为 "failed Expression: {Expression}"。

messageExpression

string

messageExpression 声明了一个 CEL 表达式,它评估到此规则失败时返回的验证失败消息。由于 messageExpression 用作失败消息,它必须评估为字符串。如果验证中同时存在 message 和 messageExpression,则在验证失败时将使用 messageExpression。如果 messageExpression 导致运行时错误,则会记录运行时错误,并且生成验证失败消息,就像 messageExpression 字段未设置一样。如果 messageExpression 评估为空字符串、仅包含空格的字符串,或者包含换行符的字符串,则也会生成验证失败消息,就如 messageExpression 字段未设置,并且消息Expression 生成一个空字符串/字符串,且只有有换行符的空格/字符串会被记录。messageExpression 可以访问与 'authorizer' 和 'authorizer.request' 以外的 表达式 以外的所有相同的变量。示例:"object.x 必须小于 max ("string (params.max) ") "

reason

string

reason 表示此验证失败的原因的机器可读描述。如果这是列表中的第一个验证失败,这个原因以及相应的 HTTP 响应代码将在 HTTP 响应中用于客户端。目前支持的原因包括:"Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge"。如果没有设置,则对客户端的响应将使用 StatusReasonInvalid。

5.1.14. .spec.variables

描述

变量包含可用于组成其他表达式的变量的定义。每个变量都定义为命名的 CEL 表达式。这里定义的变量将在策略的其他表达式中的 变量 下提供,但 MatchConditions 除外,因为 MatchConditions 在策略的其余部分之前评估。

变量的表达式可以引用之前在列表中定义的其他变量,但不能引用之后定义的变量。因此,变量必须按照第一个外观和 acyclic 的顺序进行排序。

类型
数组

5.1.15. .spec.variables[]

描述
变量是变量的定义,用于组成。变量定义为命名表达式。
类型
object
必填
  • 名称
  • expression
属性类型描述

expression

string

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

名称

string

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

5.1.16. .status

描述
ValidatingAdmissionPolicyStatus 代表准入验证策略的状态。
类型
object
属性类型描述

conditions

数组(条件)

条件代表策略当前状态的最新可用影响。

observedGeneration

整数

控制器观察到的生成。

typeChecking

object

TypeChecking 包含在 ValidatingAdmissionPolicy 中检查表达式的类型结果

5.1.17. .status.typeChecking

描述
TypeChecking 包含在 ValidatingAdmissionPolicy 中检查表达式的类型结果
类型
object
属性类型描述

expressionWarnings

数组

每个表达式的类型检查警告。

expressionWarnings[]

object

ExpressionWarning 是一个以特定表达式为目标的警告信息。

5.1.18. .status.typeChecking.expressionWarnings

描述
每个表达式的类型检查警告。
类型
数组

5.1.19. .status.typeChecking.expressionWarnings[]

描述
ExpressionWarning 是一个以特定表达式为目标的警告信息。
类型
object
必填
  • fieldRef
  • warning
属性类型描述

fieldRef

string

引用表达式的字段的路径。例如,引用验证的第一个项的表达式为 "spec.validations[0].expression"

warning

string

以人类可读形式检查信息的类型内容。警告的每一行包含表达式被检查的类型,后跟编译器中的类型检查错误。

5.2. API 端点

可用的 API 端点如下:

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

    • DELETE: 删除 ValidatingAdmissionPolicy 的集合
    • GET: list 或 watch kind ValidatingAdmissionPolicy
    • POST: 创建一个 ValidatingAdmissionPolicy
  • /apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicies

    • GET: 观察单个对 ValidatingAdmissionPolicy. deprecated: 使用带有列表操作的 'watch' 参数。
  • /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}

    • DELETE: delete a ValidatingAdmissionPolicy
    • GET: 读取指定的 ValidatingAdmissionPolicy
    • PATCH: 部分更新指定的 ValidatingAdmissionPolicy
    • PUT :替换指定的 ValidatingAdmissionPolicy
  • /apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicies/{name}

    • GET: 观察对类型为 ValidatingAdmissionPolicy. deprecated: 使用带有 list 操作的 'watch' 参数的更改,而是过滤成带有 'fieldSelector' 参数的单个项目。
  • /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}/status

    • GET: 指定 ValidatingAdmissionPolicy 的读取状态
    • PATCH: 部分更新指定 ValidatingAdmissionPolicy 的状态
    • PUT :替换指定 ValidatingAdmissionPolicy 的状态

5.2.1. /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies

HTTP 方法
DELETE
描述
删除 ValidatingAdmissionPolicy 集合
表 5.1. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

表 5.2. HTTP 响应
HTTP 代码响应正文

200 - OK

Status 模式

401 - Unauthorized

HTTP 方法
GET
描述
列出或监视类型为 ValidatingAdmissionPolicy 的对象
表 5.3. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingAdmissionPolicyList schema

401 - Unauthorized

HTTP 方法
POST
描述
创建 ValidatingAdmissionPolicy
表 5.4. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 5.5. 主体参数
参数类型描述

正文(body)

ValidatingAdmissionPolicy schema

 
表 5.6. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingAdmissionPolicy schema

201 - Created

ValidatingAdmissionPolicy schema

202 - Accepted

ValidatingAdmissionPolicy schema

401 - Unauthorized

5.2.2. /apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicies

HTTP 方法
GET
描述
观察单个对 ValidatingAdmissionPolicy 列表的更改。已弃用:使用带有 list 操作的 'watch' 参数。
表 5.7. HTTP 响应
HTTP 代码响应正文

200 - OK

WatchEvent 模式

401 - Unauthorized

5.2.3. /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}

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

name

string

ValidatingAdmissionPolicy 的名称

HTTP 方法
DELETE
描述
删除 ValidatingAdmissionPolicy
表 5.9. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

表 5.10. HTTP 响应
HTTP 代码响应正文

200 - OK

Status 模式

202 - Accepted

Status 模式

401 - Unauthorized

HTTP 方法
GET
描述
阅读指定的 ValidatingAdmissionPolicy
表 5.11. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingAdmissionPolicy schema

401 - Unauthorized

HTTP 方法
PATCH
描述
部分更新指定的 ValidatingAdmissionPolicy
表 5.12. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 5.13. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingAdmissionPolicy schema

201 - Created

ValidatingAdmissionPolicy schema

401 - Unauthorized

HTTP 方法
PUT
描述
替换指定的 ValidatingAdmissionPolicy
表 5.14. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 5.15. 主体参数
参数类型描述

正文(body)

ValidatingAdmissionPolicy schema

 
表 5.16. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingAdmissionPolicy schema

201 - Created

ValidatingAdmissionPolicy schema

401 - Unauthorized

5.2.4. /apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicies/{name}

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

name

string

ValidatingAdmissionPolicy 的名称

HTTP 方法
GET
描述
观察对类型为 ValidatingAdmissionPolicy 的对象的更改。已弃用:使用带有 list 操作的 'watch' 参数,而是过滤到带有 'fieldSelector' 参数的单个项目。
表 5.18. HTTP 响应
HTTP 代码响应正文

200 - OK

WatchEvent 模式

401 - Unauthorized

5.2.5. /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}/status

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

name

string

ValidatingAdmissionPolicy 的名称

HTTP 方法
GET
描述
指定 ValidatingAdmissionPolicy 的读取状态
表 5.20. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingAdmissionPolicy schema

401 - Unauthorized

HTTP 方法
PATCH
描述
部分更新指定 ValidatingAdmissionPolicy 的状态
表 5.21. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 5.22. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingAdmissionPolicy schema

201 - Created

ValidatingAdmissionPolicy schema

401 - Unauthorized

HTTP 方法
PUT
描述
替换指定的 ValidatingAdmissionPolicy 的状态
表 5.23. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 5.24. 主体参数
参数类型描述

正文(body)

ValidatingAdmissionPolicy schema

 
表 5.25. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingAdmissionPolicy schema

201 - Created

ValidatingAdmissionPolicy schema

401 - Unauthorized

第 6 章 ValidatingAdmissionPolicyBinding [admissionregistration.k8s.io/v1]

描述

ValidatingAdmissionPolicyBinding 将 ValidatingAdmissionPolicy 与参数化资源绑定。ValidatingAdmissionPolicyBinding 和参数 CRD 定义了集群管理员如何为集群配置策略。

对于给定的准入请求,每个绑定都会导致评估 N 次,其中 N 是不使用 params 的策略/绑定,否则 N 是绑定选择的参数数。

策略的 CEL 表达式必须在最大 CEL 预算下计算计算 CEL 成本。策略的每个评估都会获得独立的 CEL 成本预算。添加/删除策略、绑定或参数会影响给定(策略、绑定、参数)组合是否在其自身的 CEL 预算内。

类型
对象

6.1. 规格

属性类型描述

apiVersion

字符串

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

kind

字符串

kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: 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

object

ValidatingAdmissionPolicyBindingSpec 是 ValidatingAdmissionPolicyBinding 的规格。

6.1.1. .spec

描述
ValidatingAdmissionPolicyBindingSpec 是 ValidatingAdmissionPolicyBinding 的规格。
类型
object
属性类型描述

matchResources

object

MatchResources 决定是否根据它是否满足匹配标准在对象上运行准入控制策略。排除规则优先于 include 规则(如果资源同时匹配,则会排除它)

paramRef

object

ParamRef 描述了如何找到 params,以用作由策略绑定应用的规则表达式的输入。

policyName

string

policyName 引用 ValidatingAdmissionPolicyBinding 绑定的 ValidatingAdmissionPolicy 名称。如果引用的资源不存在,则此绑定被视为无效,并将会被忽略。

validationActions

数组(字符串)

validationActions 声明如何强制实施引用的 ValidatingAdmissionPolicy 的 Validations。如果验证评估为 false,则总是根据这些操作强制执行它。

只有在 FailurePolicy 被设置为 Fail 时,由 ValidatingAdmissionPolicy 的 FailurePolicy 定义的失败才会根据这些操作强制实施,否则失败会被忽略。这包括编译错误、运行时错误和策略错误配置。

validationActions 被声明为一组操作值。顺序无关紧要。验证操作可能不包含同一操作的副本。

支持的操作值有:

"deny"指定验证失败会导致请求被拒绝。

"warn"指定在 HTTP Warning 标头中向请求客户端报告验证失败,警告代码为 299。对于允许或拒绝的准入响应,可以发送警告。

"audit"指定在请求的已发布的审计事件中包含验证失败。审计事件将包含一个 validation.policy.admission.k8s.io/validation_failure audit 注解,其值包含验证失败的详情,格式为 JSON 列表,每个对象列表中带有以下字段: - 消息: 验证失败消息字符串 - policy: ValidatingAdmissionPolicy - binding 的资源名称: ValidatingAdmissionPolicyBinding - expressionIndex 的资源名称: ValidatingAdmissionPolicy - validationActions 中的失败验证的索引: 对验证失败的强制操作示例审计注解: "validation.policy.admission.k8s.io/validation_failure": "[{"message": "Invalid value", {"policy": "policy.example.com", {"binding": "policybinding.example.com", {"expressionIndex": "1", {"validationActions": ["Audit"]}]"

客户端应该通过忽略任何无法识别的值来处理额外的值。

"拒绝"和"Warn"可能无法一起使用,因为组合需要在 API 响应正文和 HTTP 警告标头中重复验证失败。

必需。

6.1.2. .spec.matchResources

描述
MatchResources 决定是否根据它是否满足匹配标准在对象上运行准入控制策略。排除规则优先于 include 规则(如果资源同时匹配,则会排除它)
类型
object
属性类型描述

excludeResourceRules

数组

ExcludeResourceRules 描述了 ValidatingAdmissionPolicy 不应关注哪些资源/子资源的操作。排除规则优先于 include 规则(如果资源同时匹配,则会排除它)

excludeResourceRules[]

object

NamedRuleWithOperations 是 Operations 和 ResourceNames 的元组。

matchPolicy

string

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

- exact :仅在与指定规则完全匹配时才匹配请求。例如,如果可通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改部署,但 "rules" 仅包含 apiGroups:["apps"], apiVersions:["v1"],resources: ["deployments"],对 apps/v1beta1 或 extensions/v1beta1 的请求不会发送到 ValidatingAdmissionPolicy。

- equivalent :如果修改规则中列出的资源,即使通过另一个 API 组或版本来匹配请求。例如,如果可通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 和 "rules" 修改部署,则只有 apiGroups:["apps"], apiVersions:["v1"],resources: ["deployments"],请求 apps/v1beta1 或 extensions/v1beta1 将转换为 apps/v1beta1,并发送到 ValidatingAdmissionPolicy。

默认为 "Equivalent"

可能枚举值:- "Equivalent" 表示如果请求通过另一个 API 组或版本修改规则中列出的资源,则应只将请求发送到 webhook。

namespaceSelector

LabelSelector

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

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

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

有关标签选择器的更多信息,请参阅 https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/

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

objectSelector

LabelSelector

objectSelector 决定是否根据对象是否匹配标签运行验证。objectSelector 针对发送到 cel 验证的 oldObject 和 newObject 评估,如果任何一个对象与选择器匹配,则被视为匹配。一个 null 对象(如果是 create, 或 newObject in the delete 时),或没有标签(如 DeploymentRollback 或 PodProxyOptions 对象)的对象不会被认为匹配。只有在 webhook 是 opt-in 时才使用对象选择器,因为最终用户可以通过设置标签来跳过准入 Webhook。默认为空 LabelSelector,它将匹配所有内容。

resourceRules

数组

resourceRules 描述了 ValidatingAdmissionPolicy 匹配的资源/资源什么操作。如果某个操作 与任何 规则匹配,则策略会监视它。

resourceRules[]

object

NamedRuleWithOperations 是 Operations 和 ResourceNames 的元组。

6.1.3. .spec.matchResources.excludeResourceRules

描述
ExcludeResourceRules 描述了 ValidatingAdmissionPolicy 不应关注哪些资源/子资源的操作。排除规则优先于 include 规则(如果资源同时匹配,则会排除它)
类型
数组

6.1.4. .spec.matchResources.excludeResourceRules[]

描述
NamedRuleWithOperations 是 Operations 和 ResourceNames 的元组。
类型
object
属性类型描述

apiGroups

数组(字符串)

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

apiVersions

数组(字符串)

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

操作

数组(字符串)

操作是准入 hook 为所有操作以及添加的任何准入操作( CREATE、UPDATE、DELETE、CONNECT 或 *)的操作。如果 '*' 存在,则片段的长度必须是一。必需。

resourceNames

数组(字符串)

resourceNames 是一个可选的规则应用到的名称白名单。空集表示所有都会被允许。

resources

数组(字符串)

resources 是一组这个规则应用到的资源列表。

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

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

根据封闭对象,可能无法允许子资源。必需。

scope

字符串

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

6.1.5. .spec.matchResources.resourceRules

描述
resourceRules 描述了 ValidatingAdmissionPolicy 匹配的资源/资源什么操作。如果某个操作 与任何 规则匹配,则策略会监视它。
类型
数组

6.1.6. .spec.matchResources.resourceRules[]

描述
NamedRuleWithOperations 是 Operations 和 ResourceNames 的元组。
类型
object
属性类型描述

apiGroups

数组(字符串)

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

apiVersions

数组(字符串)

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

操作

数组(字符串)

操作是准入 hook 为所有操作以及添加的任何准入操作( CREATE、UPDATE、DELETE、CONNECT 或 *)的操作。如果 '*' 存在,则片段的长度必须是一。必需。

resourceNames

数组(字符串)

resourceNames 是一个可选的规则应用到的名称白名单。空集表示所有都会被允许。

resources

数组(字符串)

resources 是一组这个规则应用到的资源列表。

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

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

根据封闭对象,可能无法允许子资源。必需。

scope

字符串

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

6.1.7. .spec.paramRef

描述
ParamRef 描述了如何找到 params,以用作由策略绑定应用的规则表达式的输入。
类型
object
属性类型描述

name

string

name 是被引用的资源的名称。

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

可以通过设置 name 字段、将 选择器 留空,如果 paramKind 为命名空间范围的,则可以配置用于所有准入请求的单个参数。

namespace

string

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

通过在策略中指定命名空间范围的 paramKind 并将此字段留空,可以使用 per-namespace 参数。

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

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

parameterNotFoundAction

string

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

允许的值是 AllowDeny

必填

selector

LabelSelector

选择器可用于根据标签匹配多个 param 对象。provide selector: {} 以匹配 ParamKind 的所有资源。

如果找到多个参数,它们都会通过策略表达式进行评估,结果则会被同时评估。

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

6.2. API 端点

可用的 API 端点如下:

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

    • DELETE: delete collection of ValidatingAdmissionPolicyBinding
    • GET: list 或 watch kind ValidatingAdmissionPolicyBinding
    • POST: 创建一个 ValidatingAdmissionPolicyBinding
  • /apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicybindings

    • GET: 观察单个对 ValidatingAdmissionPolicyBinding 列表的更改。已弃用:使用带列表操作的 'watch' 参数。
  • /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings/{name}

    • DELETE: delete a ValidatingAdmissionPolicyBinding
    • GET: 读取指定的 ValidatingAdmissionPolicyBinding
    • PATCH: 部分更新指定的 ValidatingAdmissionPolicyBinding
    • PUT :替换指定的 ValidatingAdmissionPolicyBinding
  • /apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicybindings/{name}

    • GET: 观察对类型为 ValidatingAdmissionPolicyBinding 的对象的更改。已弃用:使用带有列表操作的 'watch' 参数,而是过滤为带有 'fieldSelector' 参数的单个项目。

6.2.1. /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings

HTTP 方法
DELETE
描述
删除 ValidatingAdmissionPolicyBinding 集合
表 6.1. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

表 6.2. HTTP 响应
HTTP 代码响应正文

200 - OK

Status 模式

401 - Unauthorized

HTTP 方法
GET
描述
列出或监视类型为 ValidatingAdmissionPolicyBinding 的对象
表 6.3. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingAdmissionPolicyBindingList schema

401 - Unauthorized

HTTP 方法
POST
描述
创建 ValidatingAdmissionPolicyBinding
表 6.4. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 6.5. 主体参数
参数类型描述

正文(body)

ValidatingAdmissionPolicyBinding schema

 
表 6.6. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingAdmissionPolicyBinding schema

201 - Created

ValidatingAdmissionPolicyBinding schema

202 - Accepted

ValidatingAdmissionPolicyBinding schema

401 - Unauthorized

6.2.2. /apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicybindings

HTTP 方法
GET
描述
观察单个对 ValidatingAdmissionPolicyBinding 列表的更改。已弃用:改为使用带有 list 操作的 'watch' 参数。
表 6.7. HTTP 响应
HTTP 代码响应正文

200 - OK

WatchEvent 模式

401 - Unauthorized

6.2.3. /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings/{name}

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

name

string

ValidatingAdmissionPolicyBinding 的名称

HTTP 方法
DELETE
描述
delete a ValidatingAdmissionPolicyBinding
表 6.9. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

表 6.10. HTTP 响应
HTTP 代码响应正文

200 - OK

Status 模式

202 - Accepted

Status 模式

401 - Unauthorized

HTTP 方法
GET
描述
阅读指定的 ValidatingAdmissionPolicyBinding
表 6.11. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingAdmissionPolicyBinding schema

401 - Unauthorized

HTTP 方法
PATCH
描述
部分更新指定的 ValidatingAdmissionPolicyBinding
表 6.12. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 6.13. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingAdmissionPolicyBinding schema

201 - Created

ValidatingAdmissionPolicyBinding schema

401 - Unauthorized

HTTP 方法
PUT
描述
替换指定的 ValidatingAdmissionPolicyBinding
表 6.14. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 6.15. 主体参数
参数类型描述

正文(body)

ValidatingAdmissionPolicyBinding schema

 
表 6.16. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingAdmissionPolicyBinding schema

201 - Created

ValidatingAdmissionPolicyBinding schema

401 - Unauthorized

6.2.4. /apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicybindings/{name}

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

name

string

ValidatingAdmissionPolicyBinding 的名称

HTTP 方法
GET
描述
观察对类型为 ValidatingAdmissionPolicyBinding 的对象的更改。已弃用:使用带有 list 操作的 'watch' 参数,而是过滤到带有 'fieldSelector' 参数的单个项目。
表 6.18. HTTP 响应
HTTP 代码响应正文

200 - OK

WatchEvent 模式

401 - Unauthorized

第 7 章 ValidatingWebhookConfiguration [admissionregistration.k8s.io/v1]

描述
ValidatingWebhookConfiguration 描述了 和 admission webhook 的配置,它们接受或拒绝和对象,而不更改它。
类型
对象

7.1. 规格

属性类型描述

apiVersion

字符串

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

kind

字符串

kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: 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

array

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

webhooks[]

对象

validatingwebhook 描述了准入 Webhook 以及它应用到的资源和操作。

7.1.1. .webhooks

描述
Webhook 是 Webhook 以及受影响的资源和操作的列表。
类型
array

7.1.2. .webhooks[]

描述
validatingwebhook 描述了准入 Webhook 以及它应用到的资源和操作。
类型
object
必填
  • 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 的请求必须满足的条件列表。匹配条件过滤请求,它们已与 rules、namespaceSelector 和 objectSelector 匹配。空 matchConditions 列表与所有请求匹配。允许最多有 64 个匹配条件。

完全匹配逻辑为(按顺序):1。如果 ANY matchCondition 评估为 FALSE,则会跳过 Webhook。2.如果 ALL matchConditions 评估为 TRUE,则会调用 Webhook。3.如果任何 matchCondition 评估为错误(但没有是 FALSE):- 如果 failurePolicy=Fail,拒绝请求 - If failurePolicy=Ignore,则忽略错误,并跳过 Webhook

matchConditions[]

object

MatchCondition 代表一个条件,需要满足该条件才能将请求发送到 webhook。

matchPolicy

字符串

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

- exact :仅在与指定规则完全匹配时才匹配请求。例如,如果可通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改部署,但 "rules" 仅包含 apiGroups:["apps"], apiVersions:["v1"],resources: ["deployments"],对 apps/v1beta1 或 extensions/v1beta1 的请求不会发送到 webhook。

- equivalent :如果修改规则中列出的资源,即使通过另一个 API 组或版本来匹配请求。例如,如果可通过 apps/v1、apps/v1beta1 和 extensions/v1beta1 和 "rules" 修改部署,则只有 apiGroups:["apps"], apiVersions:["v1"],resources: ["deployments"],请求 apps/v1beta1 或 extensions/v1beta1 将转换为 apps/v1beta1,并发送到 webhook。

默认为 "Equivalent"

可能枚举值:- "Equivalent" 表示如果请求通过另一个 API 组或版本修改规则中列出的资源,则应只将请求发送到 webhook。

名称

字符串

准入 Webhook 的名称。名称应该是完全限定的,如 imagepolicy.kubernetes.io,其中 "imagepolicy" 是 webhook 的名称,kubernetes.io 是机构的名称。必需。

namespaceSelector

LabelSelector

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

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

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

有关标签选择器的更多信息,请参阅 https://kubernetes.io/docs/concepts/overview/working-with-objects/labels

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

objectSelector

LabelSelector

objectSelector 决定是否根据对象是否匹配标签运行 webhook。将针对要发送到 webhook 的 oldObject 和 newObject 评估 objectSelector,并在其中一个对象与选择器匹配时被视为匹配。一个 null 对象(如果是 create, 或 newObject in the delete 时),或没有标签(如 DeploymentRollback 或 PodProxyOptions 对象)的对象不会被认为匹配。只有在 webhook 是 opt-in 时才使用对象选择器,因为最终用户可以通过设置标签来跳过准入 Webhook。默认为空 LabelSelector,它将匹配所有内容。

rules

array

规则描述了 webhook 对资源/子资源执行的操作。如果 webhook 匹配任何 规则,则 webhook 会小心操作。但是,为了防止 ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 将集群置于状态,在没有完全禁用插件的情况下,无法完全禁用插件,ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 不会对 ValidatingWebhookConfiguration 和 MutatingWebhookConfiguration 对象的准入请求调用。

rules[]

对象

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

sideEffects

字符串

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

可能枚举值: - "None" 表示调用 Webhook 将没有副作用。- "NoneOnDryRun" 表示调用 Webhook 可能具有副作用,但如果检查的请求具有 dry-run 属性,则侧效果将会被禁止。"Some" 表示调用 Webhook 可能具有副作用。如果具有 dry-run 属性的请求会触发对此 webhook 的调用,则请求将失败。- "Unknown" 表示没有已知调用 webhook 的副作用的信息。如果具有 dry-run 属性的请求会触发对此 webhook 的调用,则请求将失败。

timeoutSeconds

整数

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

7.1.3. .webhooks[].clientConfig

描述
WebhookClientConfig 包含与 webhook 进行 TLS 连接的信息
类型
object
属性类型描述

caBundle

字符串

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

service

对象

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

url

字符串

URL 以标准 URL 格式提供 webhook 的位置(scheme://host:port/path)。必须指定 url 或服务 中的一个。

主机 不应引用集群中运行的服务;使用 service 字段。在一些 apiservers 中,主机可以通过外部 DNS 解析(例如,kube-apiserver 无法解析集群内部 DNS,因为这将是一个分层违反情况)。主机 也可以是 IP 地址。

请注意,使用 localhost127.0.0.1 作为主机有风险,除非您特别注意在运行 apiserver 的主机上运行此 webhook,这可能需要对此 webhook 发出调用。此类安装可能不可移植,即无法在新集群中启动。

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

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

不允许使用用户或基本身份验证,如 "user:password@"。不允许 slices ("""…​")和查询参数("?…​")。

7.1.4. .webhooks[].clientConfig.service

描述
ServiceReference 包含对 Service.legacy.k8s.io 的引用
类型
object
必填
  • namespace
  • name
属性类型描述

name

字符串

name 是服务的名称。必填

namespace

字符串

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

path

字符串

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

port

整数

如果指定,托管 Webhook 的服务上的端口。默认为 443,以便向后兼容。port 应该是有效的端口号(1-65535,含)。

7.1.5. .webhooks[].matchConditions

描述

MatchConditions 是发送到此 webhook 的请求必须满足的条件列表。匹配条件过滤请求,它们已与 rules、namespaceSelector 和 objectSelector 匹配。空 matchConditions 列表与所有请求匹配。允许最多有 64 个匹配条件。

完全匹配逻辑为(按顺序):1。如果 ANY matchCondition 评估为 FALSE,则会跳过 Webhook。2.如果 ALL matchConditions 评估为 TRUE,则会调用 Webhook。3.如果任何 matchCondition 评估为错误(但没有是 FALSE):- 如果 failurePolicy=Fail,拒绝请求 - If failurePolicy=Ignore,则忽略错误,并跳过 Webhook

类型
数组

7.1.6. .webhooks[].matchConditions[]

描述
MatchCondition 代表一个条件,需要满足该条件才能将请求发送到 webhook。
类型
object
必填
  • 名称
  • expression
属性类型描述

expression

string

expression 代表将由 CEL 评估的表达式。必须评估 bool。CEL 表达式可以访问 AdmissionRequest 和 Authorizer 的内容,并组织成 CEL 变量:

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

必需。

名称

string

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

必需。

7.1.7. .webhooks[].rules

描述
规则描述了 webhook 对资源/子资源执行的操作。如果 webhook 匹配任何 规则,则 webhook 会小心操作。但是,为了防止 ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 将集群置于状态,在没有完全禁用插件的情况下,无法完全禁用插件,ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 不会对 ValidatingWebhookConfiguration 和 MutatingWebhookConfiguration 对象的准入请求调用。
类型
array

7.1.8. .webhooks[].rules[]

描述
RuleWithOperations 是 Operations 和 Resources 的元组。建议确保所有元组扩展都有效。
类型
object
属性类型描述

apiGroups

数组(字符串)

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

apiVersions

数组(字符串)

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

操作

数组(字符串)

操作是准入 hook 为所有操作以及添加的任何准入操作( CREATE、UPDATE、DELETE、CONNECT 或 *)的操作。如果 '*' 存在,则片段的长度必须是一。必需。

资源

数组(字符串)

resources 是一组这个规则应用到的资源列表。

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

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

根据封闭对象,可能无法允许子资源。必需。

scope

字符串

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

7.2. API 端点

可用的 API 端点如下:

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

    • DELETE: 删除 ValidatingWebhookConfiguration 集合
    • GET: list 或 watch kind 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 的对象的更改。已弃用:使用带有 list 操作的 'watch' 参数,而是过滤为带有 'fieldSelector' 参数的单个项目。

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

HTTP 方法
DELETE
描述
删除 ValidatingWebhookConfiguration 集合
表 7.1. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

表 7.2. HTTP 响应
HTTP 代码响应正文

200 - OK

Status 模式

401 - Unauthorized

HTTP 方法
GET
描述
列出或监视类型为 ValidatingWebhookConfiguration 的对象
表 7.3. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingWebhookConfigurationList 模式

401 - Unauthorized

HTTP 方法
POST
描述
创建 ValidatingWebhookConfiguration
表 7.4. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 7.5. 主体参数
参数类型描述

正文(body)

ValidatingWebhookConfiguration 模式

 
表 7.6. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingWebhookConfiguration 模式

201 - Created

ValidatingWebhookConfiguration 模式

202 - Accepted

ValidatingWebhookConfiguration 模式

401 - Unauthorized

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

HTTP 方法
GET
描述
观察单个对 ValidatingWebhookConfiguration 列表的更改。已弃用:改为使用 'watch' 参数及列表操作。
表 7.7. HTTP 响应
HTTP 代码响应正文

200 - OK

WatchEvent 模式

401 - Unauthorized

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

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

name

字符串

ValidatingWebhookConfiguration 的名称

HTTP 方法
DELETE
描述
删除 ValidatingWebhookConfiguration
表 7.9. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

表 7.10. HTTP 响应
HTTP 代码响应正文

200 - OK

Status 模式

202 - Accepted

Status 模式

401 - Unauthorized

HTTP 方法
GET
描述
阅读指定的 ValidatingWebhookConfiguration
表 7.11. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingWebhookConfiguration 模式

401 - Unauthorized

HTTP 方法
PATCH
描述
部分更新指定的 ValidatingWebhookConfiguration
表 7.12. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 7.13. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingWebhookConfiguration 模式

201 - Created

ValidatingWebhookConfiguration 模式

401 - Unauthorized

HTTP 方法
PUT
描述
替换指定的 ValidatingWebhookConfiguration
表 7.14. 查询参数
参数类型描述

dryRun

字符串

出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理

fieldValidation

string

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

表 7.15. 主体参数
参数类型描述

正文(body)

ValidatingWebhookConfiguration 模式

 
表 7.16. HTTP 响应
HTTP 代码响应正文

200 - OK

ValidatingWebhookConfiguration 模式

201 - Created

ValidatingWebhookConfiguration 模式

401 - Unauthorized

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

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

name

字符串

ValidatingWebhookConfiguration 的名称

HTTP 方法
GET
描述
观察对类型为 ValidatingWebhookConfiguration 的对象的更改。已弃用:使用带有 list 操作的 'watch' 参数,而是过滤到带有 'fieldSelector' 参数的单个项目。
表 7.18. HTTP 响应
HTTP 代码响应正文

200 - OK

WatchEvent 模式

401 - Unauthorized

Legal Notice

Copyright © 2024 Red Hat, Inc.

OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Modified versions must remove all Red Hat trademarks.

Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.