CustomResourceDefinition
apiVersion: apiextensions.k8s.io/v1
import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
CustomResourceDefinition
CustomResourceDefinition 代表应该在 API 服务器上公开的资源。它的名称必须采用以下格式 <.spec.name>.<.spec.group>。
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata (ObjectMeta)
标准对象的元数据 更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (CustomResourceDefinitionSpec), 必需
spec 描述了用户希望资源如何呈现
status (CustomResourceDefinitionStatus)
status 指示 CustomResourceDefinition 的实际状态
CustomResourceDefinitionSpec
CustomResourceDefinitionSpec 描述了用户希望他们的资源如何呈现
group (字符串), 必需
group 是定义的自定义资源的 API 组。自定义资源在
/apis/\<group>/...
下提供服务。必须与 CustomResourceDefinition 的名称匹配(格式为\<names.plural>.\<group>
)。names (CustomResourceDefinitionNames), 必需
names 指定自定义资源的资源和种类名称。
CustomResourceDefinitionNames 指示为该 CustomResourceDefinition 提供服务的名称
names.kind (字符串), 必需
kind 是资源的序列化种类。它通常是驼峰式大小写且为单数。自定义资源实例将使用此值作为 API 调用中的
kind
属性。names.plural (字符串), 必需
plural 是要提供的资源的复数名称。自定义资源在
/apis/\<group>/\<version>/.../\<plural>
下提供服务。必须与 CustomResourceDefinition 的名称匹配(格式为\<names.plural>.\<group>
)。必须全部为小写。names.categories ([]string)
categories 是此自定义资源所属的已分组资源列表(例如 'all')。这在 API 发现文档中发布,并由客户端用于支持类似
kubectl get all
的调用。names.listKind (字符串)
listKind 是此资源的列表的序列化种类。默认为 "
kind
List"。names.shortNames ([]string)
shortNames 是资源的简短名称,在 API 发现文档中公开,并由客户端用于支持类似
kubectl get \<shortname>
的调用。它必须全部为小写。names.singular (字符串)
singular 是资源的单数名称。它必须全部为小写。默认为小写
kind
。
scope (字符串), 必需
scope 指示定义的自定义资源是集群范围的还是命名空间范围的。允许的值为
Cluster
和Namespaced
。versions ([]CustomResourceDefinitionVersion), 必需
versions 是定义的自定义资源的所有 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。
CustomResourceDefinitionVersion 描述 CRD 的版本。
versions.name (字符串), 必需
name 是版本名称,例如 “v1”,"v2beta1" 等。如果
served
为 true,自定义资源将在此版本的/apis/\<group>/\<version>/...
下提供服务。versions.served (布尔值), 必需
served 是一个标志,用于启用/禁用通过 REST API 提供此版本。
versions.storage (布尔值), 必需
storage 指示此版本应在将自定义资源持久化到存储时使用。必须恰好有一个版本具有 storage=true。
versions.additionalPrinterColumns ([]CustomResourceColumnDefinition)
additionalPrinterColumns 指定在表格输出中返回的附加列。有关详细信息,请参阅 https://kubernetes.ac.cn/docs/reference/using-api/api-concepts/#receiving-resources-as-tables。如果没有指定列,将使用一列来显示自定义资源的年龄。
CustomResourceColumnDefinition 指定服务器端打印的列。
versions.additionalPrinterColumns.jsonPath (字符串), 必需
jsonPath 是一个简单的 JSON 路径(即使用数组表示法),它针对每个自定义资源进行评估以生成此列的值。
versions.additionalPrinterColumns.name (字符串), 必需
name 是列的易于理解的名称。
versions.additionalPrinterColumns.type (字符串), 必需
type 是此列的 OpenAPI 类型定义。有关详细信息,请参阅 https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types。
versions.additionalPrinterColumns.description (字符串)
description 是此列的易于理解的描述。
versions.additionalPrinterColumns.format (字符串)
format 是此列的可选 OpenAPI 类型定义。“name” 格式应用于主标识符列,以帮助客户端识别列是资源名称。有关详细信息,请参阅 https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types。
versions.additionalPrinterColumns.priority (int32)
priority 是一个整数,定义了此列相对于其他列的相对重要性。数字越小,优先级越高。在空间有限的情况下可能会被省略的列应赋予大于 0 的优先级。
versions.deprecated (布尔值)
deprecated 指示此版本的自定义资源 API 已弃用。当设置为 true 时,对该版本的 API 请求将在服务器响应中收到警告标头。默认为 false。
versions.deprecationWarning (字符串)
deprecationWarning 覆盖返回给 API 客户端的默认警告。仅当
deprecated
为 true 时才可设置。默认警告指示此版本已弃用,并建议使用最新提供的稳定性相同或更高的版本(如果存在)。versions.schema (CustomResourceValidation)
schema 描述了用于验证、修剪和为此版本的自定义资源设置默认值的模式。
CustomResourceValidation 是用于 CustomResources 的验证方法列表。
versions.schema.openAPIV3Schema (JSONSchemaProps)
openAPIV3Schema 是用于验证和修剪的 OpenAPI v3 模式。
versions.subresources (CustomResourceSubresources)
subresources 指定定义的自定义资源的此版本具有哪些子资源。
CustomResourceSubresources 为 CustomResources 定义状态和比例子资源。
versions.subresources.scale (CustomResourceSubresourceScale)
scale 指示自定义资源应提供一个
/scale
子资源,该子资源返回一个autoscaling/v1
Scale 对象。CustomResourceSubresourceScale 定义了如何为 CustomResources 提供比例子资源。
versions.subresources.scale.specReplicasPath (字符串), 必需
specReplicasPath 定义自定义资源内部对应于 Scale
spec.replicas
的 JSON 路径。仅允许没有数组表示法的 JSON 路径。必须是.spec
下的 JSON 路径。如果自定义资源中给定路径下没有值,则/scale
子资源将在 GET 时返回错误。versions.subresources.scale.statusReplicasPath (字符串), 必需
statusReplicasPath 定义自定义资源内部对应于 Scale
status.replicas
的 JSON 路径。仅允许没有数组表示法的 JSON 路径。必须是.status
下的 JSON 路径。如果自定义资源中给定路径下没有值,则/scale
子资源中的status.replicas
值将默认为 0。versions.subresources.scale.labelSelectorPath (字符串)
labelSelectorPath 定义自定义资源内部对应于 Scale
status.selector
的 JSON 路径。仅允许没有数组表示法的 JSON 路径。必须是.status
或.spec
下的 JSON 路径。必须设置为与 HorizontalPodAutoscaler 一起使用。此 JSON 路径指向的字段必须是一个字符串字段(而不是一个复杂的 selector 结构),其中包含以字符串形式序列化的标签选择器。更多信息: https://kubernetes.ac.cn/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource 如果自定义资源中给定路径下没有值,则/scale
子资源中的status.selector
值将默认为空字符串。
versions.subresources.status (CustomResourceSubresourceStatus)
status 指示自定义资源应提供一个
/status
子资源。启用后:1. 对自定义资源主端点的请求会忽略对对象status
节的更改。2. 对自定义资源/status
子资源的请求会忽略对除对象status
节以外任何内容的更改。CustomResourceSubresourceStatus 定义了如何为 CustomResources 提供状态子资源。状态由 CustomResource 内部的
.status
JSON 路径表示。设置后,* 为自定义资源公开 /status 子资源 * 对 /status 子资源的 PUT 请求会获取一个自定义资源对象,并忽略对除状态节以外任何内容的更改 * 对自定义资源的 PUT/POST/PATCH 请求会忽略对状态节的更改
conversion (CustomResourceConversion)
conversion 为 CRD 定义转换设置。
CustomResourceConversion 描述了如何转换 CR 的不同版本。
conversion.strategy (字符串), 必需
strategy 指定了自定义资源在不同版本之间转换的方式。允许的值包括: -
"None"
:转换器只修改 apiVersion,不会修改自定义资源中的任何其他字段。 -"Webhook"
:API 服务器将调用外部 Webhook 来执行转换。此选项需要额外的信息。这需要将 spec.preserveUnknownFields 设置为 false,并将 spec.conversion.webhook 设置为 true。conversion.webhook (WebhookConversion)
webhook 描述了如何调用转换 Webhook。当
strategy
设置为"Webhook"
时,此字段为必填字段。WebhookConversion 描述了如何调用转换 Webhook。
conversion.webhook.conversionReviewVersions ([]string), 必填
conversionReviewVersions 是 Webhook 期望的
ConversionReview
版本的排序列表。API 服务器将使用列表中它支持的第一个版本。如果 API 服务器不支持列表中指定的任何版本,则自定义资源的转换将失败。如果持久化的 Webhook 配置指定了允许的版本,但未包含 API 服务器已知的任何版本,则对 Webhook 的调用将失败。conversion.webhook.clientConfig (WebhookClientConfig)
clientConfig 是如果 strategy 为
Webhook
,则如何调用 Webhook 的说明。WebhookClientConfig 包含与 Webhook 建立 TLS 连接的信息。
conversion.webhook.clientConfig.caBundle ([]byte)
caBundle 是一个 PEM 编码的 CA 证书捆绑包,用于验证 Webhook 的服务器证书。如果未指定,则使用 apiserver 上的系统信任根证书。
conversion.webhook.clientConfig.service (ServiceReference)
service 是指向此 Webhook 的服务的引用。必须指定 service 或 url 之一。
如果 Webhook 在集群内运行,则应使用
service
。ServiceReference 持有一个对 Service.legacy.k8s.io 的引用。
conversion.webhook.clientConfig.service.name (string), 必填
name 是服务的名称。必填。
conversion.webhook.clientConfig.service.namespace (string), 必填
namespace 是服务的命名空间。必填。
conversion.webhook.clientConfig.service.path (string)
path 是可选的 URL 路径,Webhook 将通过该路径进行访问。
conversion.webhook.clientConfig.service.port (int32)
port 是可选的服务端口,Webhook 将通过该端口进行访问。
port
应为有效的端口号(1-65535,包含)。为了向后兼容,默认为 443。
conversion.webhook.clientConfig.url (string)
url 给出了 Webhook 的位置,采用标准的 URL 格式 (
scheme://host:port/path
)。必须指定url
或service
中的一个。host
不应指向集群中运行的服务;请改为使用service
字段。在某些 apiserver 中,主机可能会通过外部 DNS 解析(例如,kube-apiserver
无法解析集群内 DNS,因为这将是分层违规)。host
也可能是 IP 地址。请注意,除非您非常小心地将此 Webhook 运行在所有运行可能需要调用此 Webhook 的 apiserver 的主机上,否则使用
localhost
或127.0.0.1
作为host
是有风险的。这种安装很可能不可移植,即不容易在新的集群中启动。scheme 必须为 "https";URL 必须以 "https://" 开头。
路径是可选的,如果存在,可以是 URL 中允许的任何字符串。您可以使用路径将任意字符串传递给 Webhook,例如集群标识符。
尝试使用用户或基本身份验证,例如 "user:password@" 是不允许的。片段 ("#...") 和查询参数 ("?...") 也不允许。
preserveUnknownFields (boolean)
preserveUnknownFields 指示在将对象持久化到存储时,是否保留 OpenAPI 架构中未指定的字段。apiVersion、kind、metadata 和 metadata 中的已知字段始终保留。此字段已弃用,取而代之的是在
spec.versions[*].schema.openAPIV3Schema
中将x-preserve-unknown-fields
设置为 true。有关详细信息,请参阅 https://kubernetes.ac.cn/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning。
JSONSchemaProps
JSONSchemaProps 是遵循规范草案 4 (https://json-schema.fullstack.org.cn/) 的 JSON-Schema。
$ref (string)
$schema (string)
additionalItems (JSONSchemaPropsOrBool)
JSONSchemaPropsOrBool 表示 JSONSchemaProps 或一个布尔值。布尔属性的默认值为 true。
additionalProperties (JSONSchemaPropsOrBool)
JSONSchemaPropsOrBool 表示 JSONSchemaProps 或一个布尔值。布尔属性的默认值为 true。
allOf ([]JSONSchemaProps)
anyOf ([]JSONSchemaProps)
default (JSON)
default 是未定义对象字段的默认值。默认值是一个在 CustomResourceDefaulting 特性门控下处于 Beta 阶段的功能。默认值需要将 spec.preserveUnknownFields 设置为 false。
JSON 表示任何有效的 JSON 值。支持以下类型:bool、int64、float64、string、[]interface{}、map[string]interface{} 和 nil。
definitions (map[string]JSONSchemaProps)
dependencies (map[string]JSONSchemaPropsOrStringArray)
description (string)
enum ([]JSON)
JSON 表示任何有效的 JSON 值。支持以下类型:bool、int64、float64、string、[]interface{}、map[string]interface{} 和 nil。
example (JSON)
JSON 表示任何有效的 JSON 值。支持以下类型:bool、int64、float64、string、[]interface{}、map[string]interface{} 和 nil。
exclusiveMaximum (boolean)
exclusiveMinimum (boolean)
externalDocs (ExternalDocumentation)
ExternalDocumentation 允许引用外部资源以获取扩展文档。
externalDocs.description (string)
externalDocs.url (string)
format (string)
format 是一个 OpenAPI v3 格式字符串。未知格式将被忽略。以下格式将被验证
- bsonobjectid: 一个 bson 对象 ID,即一个 24 个字符的十六进制字符串 - uri: 由 Golang net/url.ParseRequestURI 解析的 URI - email: 由 Golang net/mail.ParseAddress 解析的电子邮件地址 - hostname: RFC 1034 第 3.1 节 [RFC1034] 中定义的 Internet 主机名的有效表示。 - ipv4: 由 Golang net.ParseIP 解析的 IPv4 IP - ipv6: 由 Golang net.ParseIP 解析的 IPv6 IP - cidr: 由 Golang net.ParseCIDR 解析的 CIDR - mac: 由 Golang net.ParseMAC 解析的 MAC 地址 - uuid: 允许大写的 UUID,由正则表达式 (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$ 定义 - uuid3: 允许大写的 UUID3,由正则表达式 (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$ 定义 - uuid4: 允许大写的 UUID4,由正则表达式 (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ 定义 - uuid5: 允许大写的 UUID5,由正则表达式 (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ 定义 - isbn: ISBN10 或 ISBN13 编号字符串,如 "0321751043" 或 "978-0321751041" - isbn10: ISBN10 编号字符串,如 "0321751043" - isbn13: ISBN13 编号字符串,如 "978-0321751041" - creditcard: 由正则表达式 ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$ 定义的信用卡号,可以混合任何非数字字符 - ssn: 遵循正则表达式 ^\d{3}[- ]?\d{2}[- ]?\d{4}$ 的美国社会安全号码 - hexcolor: 十六进制颜色代码,如 "#FFFFFF",遵循正则表达式 ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ - rgbcolor: RGB 颜色代码,如 "rgb(255,255,2559" - byte: base64 编码的二进制数据 - password: 任何类型的字符串 - date: RFC3339 中定义的 full-date 格式的日期字符串,如 "2006-01-02" - duration: 由 Golang time.ParseDuration 解析的持续时间字符串,如 "22 ns",或与 Scala 持续时间格式兼容 - datetime: RFC3339 中定义的 date-time 格式的日期时间字符串,如 "2014-12-15T19:30:20.000Z"。
id (string)
items (JSONSchemaPropsOrArray)
JSONSchemaPropsOrArray 表示一个值,该值可以是 JSONSchemaProps 或 JSONSchemaProps 数组。主要用于序列化目的。
maxItems (int64)
maxLength (int64)
maxProperties (int64)
maximum (double)
minItems (int64)
minLength (int64)
minProperties (int64)
minimum (double)
multipleOf (double)
not (JSONSchemaProps)
nullable (boolean)
oneOf ([]JSONSchemaProps)
pattern (string)
patternProperties (map[string]JSONSchemaProps)
properties (map[string]JSONSchemaProps)
required ([]string)
title (string)
type (string)
uniqueItems (boolean)
x-kubernetes-embedded-resource (boolean)
x-kubernetes-embedded-resource 定义该值为嵌入式 Kubernetes 运行时对象,具有 TypeMeta 和 ObjectMeta。类型必须为 object。允许进一步限制嵌入式对象。kind、apiVersion 和 metadata 将自动验证。允许 x-kubernetes-preserve-unknown-fields 为 true,但如果对象完全指定(直到 kind、apiVersion、metadata),则不需要为 true。
x-kubernetes-int-or-string (boolean)
x-kubernetes-int-or-string 指定该值为整数或字符串。如果为 true,则允许空类型,如果遵循以下模式之一,则允许作为 anyOf 子级出现的类型
- anyOf
- type: integer
- type: string
- allOf
- anyOf
- type: integer
- type: string
- ... 零个或多个
- anyOf
- anyOf
x-kubernetes-list-map-keys ([]string)
x-kubernetes-list-map-keys 使用 x-kubernetes-list-type
map
来注释数组,并指定用作映射索引的键。此标签 MUST 仅用于其 "x-kubernetes-list-type" 扩展设置为 "map" 的列表。此外,为此属性指定的值必须是子结构的标量类型字段(不支持嵌套)。
指定的属性必须是必需的,或者具有默认值,以确保这些属性在所有列表项中都存在。
x-kubernetes-list-type (string)
x-kubernetes-list-type 注释数组以进一步描述其拓扑。此扩展 MUST 仅用于列表,并且可能具有 3 个可能的值
atomic
:列表被视为单个实体,如标量。更新原子列表时,将完全替换它们。此扩展可以在任何类型的列表(结构、标量等)上使用。set
:集合是列表,其元素不能具有多个具有相同值的项目。每个值必须是标量、具有 x-kubernetes-map-typeatomic
的对象,或具有 x-kubernetes-list-typeatomic
的数组。map
:这些列表类似于映射,因为它们的元素具有非索引键来标识它们。在合并时保留顺序。map 标签 MUST 仅用于元素类型为对象的列表。对于数组,默认值为 atomic。
x-kubernetes-map-type (string)
x-kubernetes-map-type 注释对象以进一步描述其拓扑。此扩展 MUST 仅在类型为 object 时使用,并且可能具有 2 个可能的值
granular
: 这些映射是实际的映射(键值对),每个字段彼此独立(它们可以由不同的参与者分别操作)。这是所有映射的默认行为。atomic
: 该列表被视为单个实体,如标量。原子映射在更新时将被完全替换。
x-kubernetes-preserve-unknown-fields (布尔值)
x-kubernetes-preserve-unknown-fields 阻止 API 服务器解码步骤修剪验证模式中未指定的字段。这会递归地影响字段,但在模式中指定了嵌套属性或 additionalProperties 时,会切换回正常的修剪行为。这可以是 true 或未定义。禁止使用 false。
x-kubernetes-validations ([]ValidationRule)
修补策略:按键
rule
合并映射:合并期间将保留键 rule 上的唯一值
x-kubernetes-validations 描述了使用 CEL 表达式语言编写的验证规则列表。此字段处于 alpha 级别。使用此字段需要启用功能门
CustomResourceValidationExpressions
。ValidationRule 描述了使用 CEL 表达式语言编写的验证规则。
x-kubernetes-validations.rule (字符串), 必需
Rule 表示将由 CEL 评估的表达式。参考:https://github.com/google/cel-spec Rule 的范围是模式中 x-kubernetes-validations 扩展的位置。CEL 表达式中的
self
变量绑定到作用域值。示例:- 作用域为具有状态子资源的资源根部的规则:{"rule": "self.status.actual <= self.spec.maxDesired"}如果 Rule 的作用域是具有属性的对象,则可以通过
self.field
选择对象的可用属性,并且可以通过has(self.field)
检查属性是否存在。空值字段在 CEL 表达式中被视为不存在的字段。如果 Rule 的作用域是具有 additionalProperties(即映射)的对象,则可以通过self[mapKey]
访问映射的值,可以通过mapKey in self
检查映射的包含性,并且可以通过 CEL 宏和函数(例如self.all(...)
)访问映射的所有条目。如果 Rule 的作用域是数组,则可以通过self[i]
访问数组的元素,还可以通过宏和函数访问。如果 Rule 的作用域是标量,则self
绑定到标量值。示例:- 作用域为对象映射的规则:{"rule": "self.components['Widget'].priority < 10"} - 作用域为整数列表的规则:{"rule": "self.values.all(value, value >= 0 && value < 100)"} - 作用域为字符串值的规则:{"rule": "self.startsWith('kube')"}apiVersion
、kind
、metadata.name
和metadata.generateName
始终可以从对象的根部和任何 x-kubernetes-embedded-resource 注释的对象访问。其他元数据属性不可访问。通过 x-kubernetes-preserve-unknown-fields 保留的自定义资源中的未知数据在 CEL 表达式中不可访问。这包括:- 通过具有 x-kubernetes-preserve-unknown-fields 的对象模式保留的未知字段值。- 属性模式为“未知类型”的对象属性。“未知类型”的递归定义如下
- 没有类型且 x-kubernetes-preserve-unknown-fields 设置为 true 的模式
- 项目模式为“未知类型”的数组
- additionalProperties 模式为“未知类型”的对象
只有
[a-zA-Z_.-/][a-zA-Z0-9_.-/]*
形式的属性名称才可访问。在表达式中访问时,可访问的属性名称将根据以下规则转义:- '' 转义为 'underscores' - '.' 转义为 'dot' - '-' 转义为 'dash' - '/' 转义为 'slash' - 与 CEL 保留关键字完全匹配的属性名称转义为 '{keyword}__'. 关键字为:“true”、“false”、“null”、“in”、“as”、“break”、“const”、“continue”、“else”、“for”、“function”、“if”、“import”、“let”、“loop”、“package”、“namespace”、“return”。示例- 访问名为“namespace”的属性的规则:{"rule": "self.namespace > 0"}
- 访问名为“x-prop”的属性的规则:{"rule": "self.x__dash__prop > 0"}
- 访问名为“redact__d”的属性的规则:{"rule": "self.redact__underscores__d > 0"}
具有 x-kubernetes-list-type 为“set”或“map”的数组的相等性忽略元素顺序,即 [1, 2] == [2, 1]。具有 x-kubernetes-list-type 的数组的连接使用列表类型的语义
- 'set':
X + Y
执行联合操作,其中保留X
中所有元素的数组位置,并将Y
中的非交集元素附加到末尾,保留其部分顺序。 - 'map':
X + Y
执行合并操作,其中保留X
中所有键的数组位置,但当X
和Y
的键集相交时,其值将被Y
中的值覆盖。具有非交集键的Y
中的元素将被附加到末尾,保留其部分顺序。
x-kubernetes-validations.fieldPath (字符串)
fieldPath 表示验证失败时返回的字段路径。它必须是相对于模式中此 x-kubernetes-validations 扩展位置的相对 JSON 路径(即使用数组符号),并引用现有字段。例如,当验证检查映射
testMap
下的特定属性foo
时,fieldPath 可以设置为.testMap.foo
如果验证检查两个列表是否必须具有唯一的属性,则 fieldPath 可以设置为两个列表中的任何一个:例如.testList
它不支持列表数字索引。它目前支持子操作来引用现有字段。有关更多信息,请参阅 Kubernetes 中的 JSONPath 支持。不支持数组的数字索引。对于包含特殊字符的字段名称,请使用['specialName']
来引用字段名称。例如,对于属性foo.34$
出现在列表testList
中,fieldPath 可以设置为.testList['foo.34$']
x-kubernetes-validations.message (字符串)
Message 表示验证失败时显示的消息。如果 Rule 包含换行符,则消息是必需的。消息不得包含换行符。如果未设置,则消息为“failed rule: {Rule}”。例如,“必须是与 spec.host 匹配的主机的 URL”
x-kubernetes-validations.messageExpression (字符串)
MessageExpression 声明一个 CEL 表达式,该表达式评估为当此规则失败时返回的验证失败消息。由于 messageExpression 用作失败消息,因此它必须评估为字符串。如果规则上同时存在 message 和 messageExpression,则如果验证失败,将使用 messageExpression。如果 messageExpression 导致运行时错误,则运行时错误将被记录,并且验证失败消息将像 messageExpression 字段未设置一样产生。如果 messageExpression 评估为空字符串、仅包含空格的字符串或包含换行符的字符串,则验证失败消息也将像 messageExpression 字段未设置一样产生,并且 messageExpression 产生空字符串/仅包含空格的字符串/包含换行符的字符串的事实将被记录。messageExpression 能够访问与规则相同的变量;唯一的区别是返回类型。示例:“x 必须小于 max ("+string(self.max)+")”
x-kubernetes-validations.reason (字符串)
reason 提供一个机器可读的验证失败原因,当请求失败此验证规则时,该原因将返回给调用方。返回给调用方的 HTTP 状态代码将与第一个失败验证规则的原因的 reason 相匹配。当前支持的原因是:“FieldValueInvalid”、“FieldValueForbidden”、“FieldValueRequired”、“FieldValueDuplicate”。如果未设置,则默认为“FieldValueInvalid”。客户机在读取此值时必须接受所有将来添加的原因,并且未知原因应被视为 FieldValueInvalid。
CustomResourceDefinitionStatus
CustomResourceDefinitionStatus 指示 CustomResourceDefinition 的状态
acceptedNames (CustomResourceDefinitionNames)
acceptedNames 是实际用于提供发现的名称。它们可能与规范中的名称不同。
CustomResourceDefinitionNames 指示为该 CustomResourceDefinition 提供服务的名称
acceptedNames.kind (字符串), 必需
kind 是资源的序列化种类。它通常是驼峰式大小写且为单数。自定义资源实例将使用此值作为 API 调用中的
kind
属性。acceptedNames.plural (字符串), 必需
plural 是要提供的资源的复数名称。自定义资源在
/apis/\<group>/\<version>/.../\<plural>
下提供服务。必须与 CustomResourceDefinition 的名称匹配(格式为\<names.plural>.\<group>
)。必须全部为小写。acceptedNames.categories ([]字符串)
categories 是此自定义资源所属的已分组资源列表(例如 'all')。这在 API 发现文档中发布,并由客户端用于支持类似
kubectl get all
的调用。acceptedNames.listKind (字符串)
listKind 是此资源的列表的序列化种类。默认为 "
kind
List"。acceptedNames.shortNames ([]字符串)
shortNames 是资源的简短名称,在 API 发现文档中公开,并由客户端用于支持类似
kubectl get \<shortname>
的调用。它必须全部为小写。acceptedNames.singular (字符串)
singular 是资源的单数名称。它必须全部为小写。默认为小写
kind
。
conditions ([]CustomResourceDefinitionCondition)
映射:合并期间将保留键 type 上的唯一值
conditions 指示 CustomResourceDefinition 特定方面的状态
CustomResourceDefinitionCondition 包含有关此 pod 的当前状况的详细信息。
conditions.status (字符串), 必需
status 是状况的状态。可以是 True、False、Unknown。
conditions.type (字符串), 必需
type 是状况的类型。类型包括 Established、NamesAccepted 和 Terminating。
conditions.lastTransitionTime (时间)
lastTransitionTime 状况从一种状态过渡到另一种状态的最后时间。
Time 是围绕 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。包装器为 time 包提供的许多工厂方法提供。
conditions.message (字符串)
message 是一个可读的文本消息,指示有关最后一次过渡的详细信息。
conditions.reason (字符串)
reason 是状况最后一次过渡的唯一、单字、骆驼大小写的理由。
storedVersions ([]字符串)
storedVersions 列出曾经持久化的所有 CustomResources 版本。跟踪这些版本允许为 etcd 中的存储版本提供迁移路径。该字段是可变的,因此迁移控制器可以完成到另一个版本的迁移(确保没有旧对象留在存储中),然后从此列表中删除其余版本。当这些版本存在于此列表中时,不能从
spec.versions
中删除版本。
CustomResourceDefinitionList
CustomResourceDefinitionList 是 CustomResourceDefinition 对象的列表。
items ([]CustomResourceDefinition), 必需
items 列出各个 CustomResourceDefinition 对象
apiVersion (字符串)
APIVersion 定义此对象表示形式的版本化模式。服务器应将识别的模式转换为最新的内部值,并可能拒绝无法识别的值。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind (字符串)
Kind 是一个字符串值,表示此对象表示的 REST 资源。服务器可能会从客户端提交请求的端点推断出这一点。不可更新。以骆驼大小写形式表示。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata (ListMeta)
标准对象的元数据 更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
操作
get
读取指定的 CustomResourceDefinition
HTTP 请求
GET /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}
参数
name (在路径中): 字符串, 必需
CustomResourceDefinition 的名称
pretty (在查询中): 字符串
响应
200 (CustomResourceDefinition): OK
401: 未经授权
get
读取指定 CustomResourceDefinition 的状态
HTTP 请求
GET /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status
参数
name (在路径中): 字符串, 必需
CustomResourceDefinition 的名称
pretty (在查询中): 字符串
响应
200 (CustomResourceDefinition): OK
401: 未经授权
list
列出或观察 CustomResourceDefinition 类型的对象
HTTP 请求
GET /apis/apiextensions.k8s.io/v1/customresourcedefinitions
参数
allowWatchBookmarks (查询中): boolean
continue (查询中): string
fieldSelector (查询中): string
labelSelector (查询中): string
limit (查询中): integer
pretty (在查询中): 字符串
resourceVersion (查询中): string
resourceVersionMatch (查询中): string
sendInitialEvents (查询中): boolean
timeoutSeconds (查询中): integer
watch (查询中): boolean
响应
200 (CustomResourceDefinitionList): OK
401: 未经授权
create
创建一个 CustomResourceDefinition
HTTP 请求
POST /apis/apiextensions.k8s.io/v1/customresourcedefinitions
参数
body: CustomResourceDefinition, required
dryRun (查询中): string
fieldManager (查询中): string
fieldValidation (查询中): string
pretty (在查询中): 字符串
响应
200 (CustomResourceDefinition): OK
201 (CustomResourceDefinition): Created
202 (CustomResourceDefinition): Accepted
401: 未经授权
update
替换指定的 CustomResourceDefinition
HTTP 请求
PUT /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}
参数
name (在路径中): 字符串, 必需
CustomResourceDefinition 的名称
body: CustomResourceDefinition, required
dryRun (查询中): string
fieldManager (查询中): string
fieldValidation (查询中): string
pretty (在查询中): 字符串
响应
200 (CustomResourceDefinition): OK
201 (CustomResourceDefinition): Created
401: 未经授权
update
替换指定 CustomResourceDefinition 的状态
HTTP 请求
PUT /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status
参数
name (在路径中): 字符串, 必需
CustomResourceDefinition 的名称
body: CustomResourceDefinition, required
dryRun (查询中): string
fieldManager (查询中): string
fieldValidation (查询中): string
pretty (在查询中): 字符串
响应
200 (CustomResourceDefinition): OK
201 (CustomResourceDefinition): Created
401: 未经授权
patch
部分更新指定的 CustomResourceDefinition
HTTP 请求
PATCH /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}
参数
name (在路径中): 字符串, 必需
CustomResourceDefinition 的名称
body: Patch, required
dryRun (查询中): string
fieldManager (查询中): string
fieldValidation (查询中): string
force (查询中): boolean
pretty (在查询中): 字符串
响应
200 (CustomResourceDefinition): OK
201 (CustomResourceDefinition): Created
401: 未经授权
patch
部分更新指定 CustomResourceDefinition 的状态
HTTP 请求
PATCH /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status
参数
name (在路径中): 字符串, 必需
CustomResourceDefinition 的名称
body: Patch, required
dryRun (查询中): string
fieldManager (查询中): string
fieldValidation (查询中): string
force (查询中): boolean
pretty (在查询中): 字符串
响应
200 (CustomResourceDefinition): OK
201 (CustomResourceDefinition): Created
401: 未经授权
delete
删除一个 CustomResourceDefinition
HTTP 请求
DELETE /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}
参数
name (在路径中): 字符串, 必需
CustomResourceDefinition 的名称
body: DeleteOptions
dryRun (查询中): string
gracePeriodSeconds (查询中): integer
pretty (在查询中): 字符串
propagationPolicy (查询中): string
响应
200 (Status): OK
202 (Status): Accepted
401: 未经授权
deletecollection
删除 CustomResourceDefinition 集合
HTTP 请求
DELETE /apis/apiextensions.k8s.io/v1/customresourcedefinitions
参数
body: DeleteOptions
continue (查询中): string
dryRun (查询中): string
fieldSelector (查询中): string
gracePeriodSeconds (查询中): integer
labelSelector (查询中): string
limit (查询中): integer
pretty (在查询中): 字符串
propagationPolicy (查询中): string
resourceVersion (查询中): string
resourceVersionMatch (查询中): string
sendInitialEvents (查询中): boolean
timeoutSeconds (查询中): integer
响应
200 (Status): OK
401: 未经授权
此页面是自动生成的。
如果您计划报告此页面问题,请在您的问题描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。