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 (string), 必填
group 是所定义自定义资源的 API 组。自定义资源在 `/apis/
/...` 下提供。必须与 CustomResourceDefinition 的名称匹配(格式为 ` . `)。 names (CustomResourceDefinitionNames), 必填
names 指定自定义资源的资源和种类名称。
CustomResourceDefinitionNames 表示用于提供此 CustomResourceDefinition 的名称
names.kind (string), 必填
kind 是资源的序列化种类。它通常是驼峰式且单数。自定义资源实例将使用此值作为 API 调用中的 `kind` 属性。
names.plural (string), 必填
plural 是要提供的资源的复数名称。自定义资源在 `/apis/
/ /.../ ` 下提供。必须与 CustomResourceDefinition 的名称匹配(格式为 ` . `)。必须全部小写。 names.categories ([]string)
原子性:在合并期间将被替换
categories 是此自定义资源所属的分组资源列表(例如“all”)。这在 API 发现文档中发布,并由客户端用于支持诸如 `kubectl get all` 之类的调用。
names.listKind (string)
listKind 是此资源列表的序列化种类。默认为“`kind`List”。
names.shortNames ([]string)
原子性:在合并期间将被替换
shortNames 是资源的短名称,在 API 发现文档中公开,并由客户端用于支持诸如 `kubectl get
` 之类的调用。它必须全部小写。 names.singular (string)
singular 是资源的单数名称。它必须全部小写。默认为小写 `kind`。
scope (string), 必填
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 (string), 必填
name 是版本名称,例如“v1”、“v2beta1”等。如果 `served` 为 true,则自定义资源在此版本下通过 `/apis/
/ /...` 提供。 versions.served (boolean), 必填
served 是一个标志,用于启用/禁用此版本通过 REST API 提供。
versions.storage (boolean), 必填
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 (string), 必填
jsonPath 是一个简单的 JSON 路径(即带数组表示法),针对每个自定义资源进行评估,以生成此列的值。
versions.additionalPrinterColumns.name (string), 必填
name 是列的人类可读名称。
versions.additionalPrinterColumns.type (string), 必填
type 是此列的 OpenAPI 类型定义。有关详细信息,请参见 https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types。
versions.additionalPrinterColumns.description (string)
description 是此列的人类可读描述。
versions.additionalPrinterColumns.format (string)
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 (boolean)
deprecated 指示此版本的自定义资源 API 已弃用。设置为 true 时,对此版本的 API 请求在服务器响应中会收到警告标头。默认为 false。
versions.deprecationWarning (string)
deprecationWarning 覆盖返回给 API 客户端的默认警告。只能在 `deprecated` 为 true 时设置。默认警告表示此版本已弃用,并建议使用具有相同或更高稳定性的最新已提供版本(如果存在)。
versions.schema (CustomResourceValidation)
schema 描述了用于此版本自定义资源的验证、剪枝和默认设置的模式。
CustomResourceValidation 是 CustomResources 的验证方法列表。
versions.schema.openAPIV3Schema (JSONSchemaProps)
openAPIV3Schema 是用于验证和剪枝的 OpenAPI v3 模式。
versions.selectableFields ([]SelectableField)
原子性:在合并期间将被替换
selectableFields 指定可用作字段选择器的字段路径。最多允许 8 个可选择字段。请参阅 https://kubernetes.ac.cn/docs/concepts/overview/working-with-objects/field-selectors
SelectableField 指定可用作字段选择器的字段的 JSON 路径。
versions.selectableFields.jsonPath (string), 必填
jsonPath 是一个简单的 JSON 路径,针对每个自定义资源进行评估以生成字段选择器值。只允许不带数组表示法的 JSON 路径。必须指向字符串、布尔或整数类型的字段。允许带枚举值和带格式的字符串类型。如果 jsonPath 指向资源中不存在的字段,则 jsonPath 评估为空字符串。不能指向元数据字段。必填。
versions.subresources (CustomResourceSubresources)
subresources 指定此版本定义的自定义资源具有哪些子资源。
CustomResourceSubresources 定义了 CustomResources 的状态和规模子资源。
versions.subresources.scale (CustomResourceSubresourceScale)
scale 指示自定义资源应提供一个 `/scale` 子资源,该子资源返回一个 `autoscaling/v1` Scale 对象。
CustomResourceSubresourceScale 定义了如何为 CustomResources 提供规模子资源。
versions.subresources.scale.specReplicasPath (string), 必填
specReplicasPath 定义了自定义资源中与 Scale `spec.replicas` 对应的 JSON 路径。只允许不带数组表示法的 JSON 路径。必须是 `.spec` 下的 JSON 路径。如果在自定义资源中给定路径下没有值,则 `/scale` 子资源在 GET 时将返回错误。
versions.subresources.scale.statusReplicasPath (string), 必填
statusReplicasPath 定义了自定义资源中与 Scale `status.replicas` 对应的 JSON 路径。只允许不带数组表示法的 JSON 路径。必须是 `.status` 下的 JSON 路径。如果在自定义资源中给定路径下没有值,则 `/scale` 子资源中的 `status.replicas` 值将默认为 0。
versions.subresources.scale.labelSelectorPath (string)
labelSelectorPath 定义了自定义资源中与 Scale `status.selector` 对应的 JSON 路径。只允许不带数组表示法的 JSON 路径。必须是 `.status` 或 `.spec` 下的 JSON 路径。必须设置才能与 HorizontalPodAutoscaler 配合使用。此 JSON 路径指向的字段必须是字符串字段(而不是复杂的选择器结构),其中包含字符串形式的序列化标签选择器。更多信息: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 请求接受一个自定义资源对象,并忽略除 status 节之外的任何更改 * 对自定义资源的 PUT/POST/PATCH 请求将忽略 status 节的更改
conversion (CustomResourceConversion)
conversion 定义了 CRD 的转换设置。
CustomResourceConversion 描述了如何转换 CR 的不同版本。
conversion.strategy (string), 必填
strategy 指定自定义资源如何在版本之间进行转换。允许的值为: - `"None"`:转换器只更改 apiVersion,不会触及自定义资源中的任何其他字段。 - `"Webhook"`:API 服务器将调用外部 Webhook 进行转换。此选项需要额外信息。这要求 spec.preserveUnknownFields 为 false,并且必须设置 spec.conversion.webhook。
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 是 Webhook 将被联系的可选 URL 路径。
conversion.webhook.clientConfig.service.port (int32)
port 是 Webhook 将被联系的可选服务端口。`port` 应为有效的端口号(包括 1-65535)。为了向后兼容,默认为 443。
conversion.webhook.clientConfig.url (string)
url 以标准 URL 形式 (`scheme://host:port/path`) 提供 Webhook 的位置。`url` 或 `service` 必须且只能指定一个。
`host` 不应引用在集群中运行的服务;请改用 `service` 字段。某些 apiserver 可能通过外部 DNS 解析主机(例如,`kube-apiserver` 无法解析集群内 DNS,因为这将违反分层)。`host` 也可以是 IP 地址。
请注意,使用 `localhost` 或 `127.0.0.1` 作为 `host` 是有风险的,除非您非常小心地在所有运行 apiserver 的主机上运行此 Webhook,这些 apiserver 可能需要调用此 Webhook。此类安装可能不可移植,即,在新集群中不易启动。
方案必须是“https”;URL 必须以“https://”开头。
path 是可选的,如果存在,可以是 URL 中允许的任何字符串。您可以使用 path 向 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 模式。
$ref (string)
$schema (string)
additionalItems (JSONSchemaPropsOrBool)
additionalProperties (JSONSchemaPropsOrBool)
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:一个 Internet 主机名的有效表示,如 RFC 1034,第 3.1 节 [RFC1034] 定义 - 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:一个日期字符串,例如“2006-01-02”,如 RFC3339 中的 full-date 定义 - duration:一个持续时间字符串,例如“22 ns”,由 Golang time.ParseDuration 解析或与 Scala 持续时间格式兼容 - datetime:一个日期时间字符串,例如“2014-12-15T19:30:20.000Z”,如 RFC3339 中的 date-time 定义。
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 runtime.Object,具有 TypeMeta 和 ObjectMeta。类型必须是对象。允许进一步限制嵌入式对象。kind、apiVersion 和 metadata 会自动验证。x-kubernetes-preserve-unknown-fields 允许为 true,但如果对象完全指定(包括 kind、apiVersion、metadata),则不必如此。
x-kubernetes-int-or-string (boolean)
x-kubernetes-int-or-string 指定此值是整数或字符串。如果为 true,则允许空类型,并且如果遵循以下模式之一,则允许将 type 作为 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` 的数组添加注释。
此标签只能用于将 "x-kubernetes-list-type" 扩展设置为 "map" 的列表。此外,为此属性指定的值必须是子结构的标量类型字段(不支持嵌套)。
指定的属性必须是必需的或具有默认值,以确保所有列表项都存在这些属性。
x-kubernetes-list-type (string)
x-kubernetes-list-type 为数组添加注释以进一步描述其拓扑。此扩展只能用于列表,并且可能有 3 个可能的值:
- `atomic`:列表被视为单个实体,就像标量一样。更新时,原子列表将完全替换。此扩展可用于任何类型的列表(结构体、标量等)。
- `set`:集合是必须没有多个相同值的项的列表。每个值必须是标量、具有 x-kubernetes-map-type `atomic` 的对象或具有 x-kubernetes-list-type `atomic` 的数组。
- `map`:这些列表类似于映射,因为它们的元素具有用于识别它们的非索引键。合并时保留顺序。映射标签只能用于元素类型为对象的列表。数组默认为 atomic。
x-kubernetes-map-type (string)
x-kubernetes-map-type 为对象添加注释以进一步描述其拓扑。此扩展只能在类型为对象时使用,并且可能有 2 个可能的值:
- `granular`:这些映射是实际的映射(键值对),每个字段彼此独立(它们可以由不同的参与者分别操作)。这是所有映射的默认行为。
- `atomic`:列表被视为单个实体,就像标量一样。更新时,原子映射将完全替换。
x-kubernetes-preserve-unknown-fields (boolean)
x-kubernetes-preserve-unknown-fields 阻止 API 服务器解码步骤剪枝验证模式中未指定的字段。这会递归影响字段,但如果模式中指定了嵌套属性或 additionalProperties,则会恢复正常的剪枝行为。这可以是 true 或未定义。禁止设置为 false。
x-kubernetes-validations ([]ValidationRule)
补丁策略:按键 `rule` 合并
映射:合并时将保留键 `rule` 的唯一值
x-kubernetes-validations 描述了用 CEL 表达式语言编写的验证规则列表。
ValidationRule 描述了用 CEL 表达式语言编写的验证规则。
x-kubernetes-validations.rule (string), 必填
Rule 表示将由 CEL 评估的表达式。参考:https://github.com/google/cel-spec 规则的作用域是模式中 x-kubernetes-validations 扩展的位置。CEL 表达式中的 `self` 变量绑定到作用域值。示例: - 作用域为具有 status 子资源的资源根的规则:{"rule": "self.status.actual <= self.spec.maxDesired"}
如果规则的作用域是具有属性的对象,则可以通过 `self.field` 选择对象的访问属性,并通过 `has(self.field)` 检查字段是否存在。空值字段在 CEL 表达式中被视为不存在的字段。如果规则的作用域是具有 additionalProperties 的对象(即映射),则可以通过 `self[mapKey]` 访问映射的值,可以通过 `mapKey in self` 检查映射包含,并且可以通过 CEL 宏和函数(例如 `self.all(...)`)访问映射的所有条目。如果规则的作用域是数组,则可以通过 `self[i]` 以及宏和函数访问数组的元素。如果规则的作用域是标量,则 `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 RESERVED 关键字完全匹配的属性名称转义为 '___{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` 中所有键的数组位置都保留,但值被 `Y` 中的值覆盖,当 `X` 和 `Y` 的键集相交时。`Y` 中不相交键的元素被追加,保留其部分顺序。
如果 `rule` 使用 `oldSelf` 变量,则它隐式地是一个 `transition rule`。
默认情况下,`oldSelf` 变量的类型与 `self` 相同。当 `optionalOldSelf` 为 true 时,`oldSelf` 变量是一个 CEL 可选变量,其 value() 的类型与 `self` 相同。有关 `optionalOldSelf` 字段的详细信息,请参阅文档。
过渡规则默认仅应用于 UPDATE 请求,如果找不到旧值则跳过。您可以通过将 `optionalOldSelf` 设置为 true 来选择过渡规则进行无条件评估。
x-kubernetes-validations.fieldPath (string)
fieldPath 表示验证失败时返回的字段路径。它必须是相对 JSON 路径(即带数组表示法),作用域为模式中此 x-kubernetes-validations 扩展的位置,并引用现有字段。例如,当验证检查映射 `testMap` 下的特定属性 `foo` 时,fieldPath 可以设置为 `.testMap.foo`。如果验证检查两个列表必须具有唯一属性,则 fieldPath 可以设置为其中一个列表:例如 `.testList`。它不支持列表数字索引。它目前支持子操作来引用现有字段。有关更多信息,请参阅 Kubernetes 中的 JSONPath 支持。不支持数组的数字索引。对于包含特殊字符的字段名,请使用 `['specialName']` 来引用字段名。例如,对于列表中出现属性 `foo.34$` 的 `testList`,fieldPath 可以设置为 `.testList['foo.34$']`。
x-kubernetes-validations.message (string)
Message 表示验证失败时显示的消息。如果 Rule 包含换行符,则 Message 是必需的。Message 不得包含换行符。如果未设置,消息为“failed rule: {Rule}”。例如,“must be a URL with the host matching spec.host”。
x-kubernetes-validations.messageExpression (string)
MessageExpression 声明一个 CEL 表达式,该表达式评估为当此规则失败时返回的验证失败消息。由于 messageExpression 用作失败消息,它必须评估为字符串。如果规则上同时存在 message 和 messageExpression,则如果验证失败,将使用 messageExpression。如果 messageExpression 导致运行时错误,则会记录运行时错误,并且验证失败消息将像 messageExpression 字段未设置一样生成。如果 messageExpression 评估为空字符串、仅包含空格的字符串或包含换行符的字符串,则验证失败消息也将像 messageExpression 字段未设置一样生成,并且将记录 messageExpression 生成空字符串/仅包含空格的字符串/包含换行符的字符串的事实。messageExpression 可以访问与规则相同的所有变量;唯一的区别是返回类型。示例:“x must be less than max ("+string(self.max)+")”。
x-kubernetes-validations.optionalOldSelf (boolean)
optionalOldSelf 用于选择过渡规则进行评估,即使对象是首次创建或旧对象缺少值。
启用后,`oldSelf` 将是一个 CEL 可选值,如果旧值不存在或对象最初创建时,其值将为 `None`。
您可以使用 `oldSelf.hasValue()` 检查 oldSelf 是否存在,并在检查后使用 `oldSelf.value()` 解封它。有关可选类型的 CEL 文档,请参阅:https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes
除非在 `rule` 中使用 `oldSelf`,否则不得设置。
x-kubernetes-validations.reason (string)
reason 提供机器可读的验证失败原因,当请求失败此验证规则时返回给调用者。返回给调用者的 HTTP 状态代码将与第一个失败验证规则的原因匹配。当前支持的原因有:“FieldValueInvalid”、“FieldValueForbidden”、“FieldValueRequired”、“FieldValueDuplicate”。如果未设置,默认为使用“FieldValueInvalid”。将来添加的所有原因在读取此值时必须被客户端接受,未知原因应视为 FieldValueInvalid。
CustomResourceDefinitionStatus
CustomResourceDefinitionStatus 指示 CustomResourceDefinition 的状态
acceptedNames (CustomResourceDefinitionNames)
acceptedNames 是实际用于提供发现的名称。它们可能与 spec 中的名称不同。
CustomResourceDefinitionNames 表示用于提供此 CustomResourceDefinition 的名称
acceptedNames.kind (string), 必填
kind 是资源的序列化种类。它通常是驼峰式且单数。自定义资源实例将使用此值作为 API 调用中的 `kind` 属性。
acceptedNames.plural (string), 必填
plural 是要提供的资源的复数名称。自定义资源在 `/apis/
/ /.../ ` 下提供。必须与 CustomResourceDefinition 的名称匹配(格式为 ` . `)。必须全部小写。 acceptedNames.categories ([]string)
原子性:在合并期间将被替换
categories 是此自定义资源所属的分组资源列表(例如“all”)。这在 API 发现文档中发布,并由客户端用于支持诸如 `kubectl get all` 之类的调用。
acceptedNames.listKind (string)
listKind 是此资源列表的序列化种类。默认为“`kind`List”。
acceptedNames.shortNames ([]string)
原子性:在合并期间将被替换
shortNames 是资源的短名称,在 API 发现文档中公开,并由客户端用于支持诸如 `kubectl get
` 之类的调用。它必须全部小写。 acceptedNames.singular (string)
singular 是资源的单数名称。它必须全部小写。默认为小写 `kind`。
conditions ([]CustomResourceDefinitionCondition)
映射:合并时将保留键类型上的唯一值
conditions 指示 CustomResourceDefinition 特定方面的状态
CustomResourceDefinitionCondition 包含此 pod 当前状况的详细信息。
conditions.status (string),必需
status 是状况的状态。可以是 True、False、Unknown。
conditions.type (string),必需
type 是状况的类型。类型包括 Established、NamesAccepted 和 Terminating。
conditions.lastTransitionTime (Time)
lastTransitionTime 上次状况从一个状态转换到另一个状态的时间。
Time 是 time.Time 的一个包装器,支持正确地编组到 YAML 和 JSON。提供了 time 包提供的许多工厂方法的包装器。
conditions.message (string)
message 是人类可读的消息,指示上次转换的详细信息。
conditions.reason (string)
reason 是一个唯一、单字、驼峰式的理由,说明状况上次转换的原因。
storedVersions ([]string)
原子性:在合并期间将被替换
storedVersions 列出所有曾被持久化的 CustomResources 版本。跟踪这些版本允许在 etcd 中存储的版本迁移路径。该字段是可变的,因此迁移控制器可以完成到另一个版本的迁移(确保存储中没有旧对象),然后从该列表中删除其余版本。当版本存在于此列表中时,不能从 `spec.versions` 中删除。
CustomResourceDefinitionList
CustomResourceDefinitionList 是 CustomResourceDefinition 对象的列表。
items ([]CustomResourceDefinition), 必填
items 列出单个 CustomResourceDefinition 对象
apiVersion (string)
APIVersion 定义了此对象表示的带版本模式。服务器应将已识别的模式转换为最新的内部值,并可能拒绝无法识别的值。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind (string)
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 (在路径中): string,必填
CustomResourceDefinition 的名称
pretty (在查询中): string
响应
200 (CustomResourceDefinition): OK
401: 未授权
get
读取指定 CustomResourceDefinition 的状态
HTTP 请求
GET /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status
参数
name (在路径中): string,必填
CustomResourceDefinition 的名称
pretty (在查询中): string
响应
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 (在查询中): string
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, 必填
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
响应
200 (CustomResourceDefinition): OK
201 (CustomResourceDefinition): 已创建
202 (CustomResourceDefinition): 已接受
401: 未授权
update
替换指定的 CustomResourceDefinition
HTTP 请求
PUT /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}
参数
name (在路径中): string,必填
CustomResourceDefinition 的名称
body: CustomResourceDefinition, 必填
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
响应
200 (CustomResourceDefinition): OK
201 (CustomResourceDefinition): 已创建
401: 未授权
update
替换指定的 CustomResourceDefinition 的状态
HTTP 请求
PUT /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status
参数
name (在路径中): string,必填
CustomResourceDefinition 的名称
body: CustomResourceDefinition, 必填
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
响应
200 (CustomResourceDefinition): OK
201 (CustomResourceDefinition): 已创建
401: 未授权
patch
部分更新指定的 CustomResourceDefinition
HTTP 请求
PATCH /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}
参数
name (在路径中): string,必填
CustomResourceDefinition 的名称
body: Patch,必需
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
force (在查询中): boolean
pretty (在查询中): string
响应
200 (CustomResourceDefinition): OK
201 (CustomResourceDefinition): 已创建
401: 未授权
patch
部分更新指定的 CustomResourceDefinition 的状态
HTTP 请求
PATCH /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status
参数
name (在路径中): string,必填
CustomResourceDefinition 的名称
body: Patch,必需
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
force (在查询中): boolean
pretty (在查询中): string
响应
200 (CustomResourceDefinition): OK
201 (CustomResourceDefinition): 已创建
401: 未授权
delete
删除 CustomResourceDefinition
HTTP 请求
DELETE /apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}
参数
name (在路径中): string,必填
CustomResourceDefinition 的名称
body: DeleteOptions
dryRun (在查询中): string
gracePeriodSeconds (在查询中): integer
ignoreStoreReadErrorWithClusterBreakingPotential (在查询中): boolean
pretty (在查询中): string
propagationPolicy (在查询中): string
响应
200 (Status): OK
202 (Status): 已接受
401: 未授权
deletecollection
删除 CustomResourceDefinition 集合
HTTP 请求
DELETE /apis/apiextensions.k8s.io/v1/customresourcedefinitions
参数
body: DeleteOptions
continue (在查询中): string
dryRun (在查询中): string
fieldSelector (在查询中): string
gracePeriodSeconds (在查询中): integer
ignoreStoreReadErrorWithClusterBreakingPotential (在查询中): boolean
labelSelector (在查询中): string
limit (在查询中): integer
pretty (在查询中): string
propagationPolicy (在查询中): string
resourceVersion (在查询中): string
resourceVersionMatch (在查询中): string
sendInitialEvents (在查询中): boolean
timeoutSeconds (在查询中): integer
响应
200 (Status): OK
401: 未授权
本页面是自动生成的。
如果你打算报告此页面存在的问题,请在问题描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。