第 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/access-kubernetes-api/custom-resources/custom-resource-definitions/#pruning-versus-preserving-unknown-fields

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 服务器将调用外部 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

Time

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

message

字符串

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

reason

字符串

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

status

字符串

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

type

字符串

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.