扩展 API


OpenShift Container Platform 4.15

扩展 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 的配置。
类型
对象

1.4. 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

整数

GroupPriorityMininum 是此组至少应该具有的优先级。优先级更高的意味着客户端优先于优先级较低的组。请注意,此组的其他版本可能会指定更高的 GroupPriorityMininum 值,以便整个组具有更高的优先级。主排序基于 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 的验证方法列表。

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[].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.13. .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.14. .spec.versions[].subresources.status

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

3.1.15. .status

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

acceptedNames

对象

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

conditions

array

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

conditions[]

对象

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

storedVersions

数组(字符串)

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

3.1.16. .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.17. .status.conditions

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

3.1.18. .status.conditions[]

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

lastTransitionTime

时间

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

这是一个 beta 功能,由 AdmissionWebhookMatchConditions 功能门管理。

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

这是一个 beta 功能,由 AdmissionWebhookMatchConditions 功能门管理。

类型
数组

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 章 ValidatingWebhookConfiguration [admissionregistration.k8s.io/v1]

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

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。

webhooks

array

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

webhooks[]

对象

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

5.1.1. .webhooks

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

5.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

这是一个 beta 功能,由 AdmissionWebhookMatchConditions 功能门管理。

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 秒。

5.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 ("""…​")和查询参数("?…​")。

5.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,含)。

5.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

这是一个 beta 功能,由 AdmissionWebhookMatchConditions 功能门管理。

类型
数组

5.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')

必需。

5.1.7. .webhooks[].rules

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

5.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" 表示只有命名空间的资源将与此规则匹配。"" 表示没有范围限制。子资源与其父资源的范围匹配。默认为 "*"。

5.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' 参数的单个项目。

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

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

dryRun

字符串

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

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

200 - OK

Status 模式

401 - Unauthorized

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

200 - OK

ValidatingWebhookConfigurationList 模式

401 - Unauthorized

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

dryRun

字符串

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

fieldValidation

string

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

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

正文(body)

ValidatingWebhookConfiguration 模式

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

200 - OK

ValidatingWebhookConfiguration 模式

201 - Created

ValidatingWebhookConfiguration 模式

202 - Accepted

ValidatingWebhookConfiguration 模式

401 - Unauthorized

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

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

200 - OK

WatchEvent 模式

401 - Unauthorized

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

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

name

字符串

ValidatingWebhookConfiguration 的名称

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

dryRun

字符串

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

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

200 - OK

Status 模式

202 - Accepted

Status 模式

401 - Unauthorized

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

200 - OK

ValidatingWebhookConfiguration 模式

401 - Unauthorized

HTTP 方法
PATCH
描述
部分更新指定的 ValidatingWebhookConfiguration
表 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

ValidatingWebhookConfiguration 模式

201 - Created

ValidatingWebhookConfiguration 模式

401 - Unauthorized

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

dryRun

字符串

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

fieldValidation

string

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

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

正文(body)

ValidatingWebhookConfiguration 模式

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

200 - OK

ValidatingWebhookConfiguration 模式

201 - Created

ValidatingWebhookConfiguration 模式

401 - Unauthorized

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

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

name

字符串

ValidatingWebhookConfiguration 的名称

HTTP 方法
GET
描述
观察对类型为 ValidatingWebhookConfiguration 的对象的更改。已弃用:使用带有 list 操作的 'watch' 参数,而是过滤到带有 'fieldSelector' 参数的单个项目。
表 5.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.