CustomResourceDefinition

CustomResourceDefinition 代表应该在 API 服务器上公开的资源。

apiVersion: apiextensions.k8s.io/v1

import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"

CustomResourceDefinition

CustomResourceDefinition 代表应该在 API 服务器上公开的资源。它的名称必须采用以下格式 <.spec.name>.<.spec.group>。


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 是此资源的列表的序列化种类。默认为 "kindList"。

    • names.shortNames ([]string)

      shortNames 是资源的简短名称,在 API 发现文档中公开,并由客户端用于支持类似 kubectl get \<shortname> 的调用。它必须全部为小写。

    • names.singular (字符串)

      singular 是资源的单数名称。它必须全部为小写。默认为小写 kind

  • scope (字符串), 必需

    scope 指示定义的自定义资源是集群范围的还是命名空间范围的。允许的值为 ClusterNamespaced

  • 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)。必须指定 urlservice 中的一个。

          host 不应指向集群中运行的服务;请改为使用 service 字段。在某些 apiserver 中,主机可能会通过外部 DNS 解析(例如,kube-apiserver 无法解析集群内 DNS,因为这将是分层违规)。host 也可能是 IP 地址。

          请注意,除非您非常小心地将此 Webhook 运行在所有运行可能需要调用此 Webhook 的 apiserver 的主机上,否则使用 localhost127.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)

    JSONSchemaPropsOrStringArray 表示一个 JSONSchemaProps 或一个字符串数组。

  • 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 子级出现的类型

    1. anyOf
      • type: integer
      • type: string
    2. allOf
      • anyOf
        • type: integer
        • type: string
      • ... 零个或多个
  • 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 个可能的值

    1. atomic:列表被视为单个实体,如标量。更新原子列表时,将完全替换它们。此扩展可以在任何类型的列表(结构、标量等)上使用。
    2. set:集合是列表,其元素不能具有多个具有相同值的项目。每个值必须是标量、具有 x-kubernetes-map-type atomic 的对象,或具有 x-kubernetes-list-type atomic 的数组。
    3. map:这些列表类似于映射,因为它们的元素具有非索引键来标识它们。在合并时保留顺序。map 标签 MUST 仅用于元素类型为对象的列表。对于数组,默认值为 atomic。
  • x-kubernetes-map-type (string)

    x-kubernetes-map-type 注释对象以进一步描述其拓扑。此扩展 MUST 仅在类型为 object 时使用,并且可能具有 2 个可能的值

    1. granular: 这些映射是实际的映射(键值对),每个字段彼此独立(它们可以由不同的参与者分别操作)。这是所有映射的默认行为。
    2. 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')"}

      apiVersionkindmetadata.namemetadata.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 中所有键的数组位置,但当 XY 的键集相交时,其值将被 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 是此资源的列表的序列化种类。默认为 "kindList"。

    • 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 对象的列表。


操作


get 读取指定的 CustomResourceDefinition

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    CustomResourceDefinition 的名称

  • pretty (在查询中): 字符串

    pretty

响应

200 (CustomResourceDefinition): OK

401: 未经授权

get 读取指定 CustomResourceDefinition 的状态

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    CustomResourceDefinition 的名称

  • pretty (在查询中): 字符串

    pretty

响应

200 (CustomResourceDefinition): OK

401: 未经授权

list 列出或观察 CustomResourceDefinition 类型的对象

HTTP 请求

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

参数

响应

200 (CustomResourceDefinitionList): OK

401: 未经授权

create 创建一个 CustomResourceDefinition

HTTP 请求

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

参数

响应

200 (CustomResourceDefinition): OK

201 (CustomResourceDefinition): Created

202 (CustomResourceDefinition): Accepted

401: 未经授权

update 替换指定的 CustomResourceDefinition

HTTP 请求

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

参数

响应

200 (CustomResourceDefinition): OK

201 (CustomResourceDefinition): Created

401: 未经授权

update 替换指定 CustomResourceDefinition 的状态

HTTP 请求

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

参数

响应

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

    dryRun

  • fieldManager (查询中): string

    fieldManager

  • fieldValidation (查询中): string

    fieldValidation

  • force (查询中): boolean

    force

  • pretty (在查询中): 字符串

    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

    dryRun

  • fieldManager (查询中): string

    fieldManager

  • fieldValidation (查询中): string

    fieldValidation

  • force (查询中): boolean

    force

  • pretty (在查询中): 字符串

    pretty

响应

200 (CustomResourceDefinition): OK

201 (CustomResourceDefinition): Created

401: 未经授权

delete 删除一个 CustomResourceDefinition

HTTP 请求

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

参数

响应

200 (Status): OK

202 (Status): Accepted

401: 未经授权

deletecollection 删除 CustomResourceDefinition 集合

HTTP 请求

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

参数

响应

200 (Status): OK

401: 未经授权

此页面是自动生成的。

如果您计划报告此页面问题,请在您的问题描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

最后修改时间 2023 年 7 月 26 日下午 1:45 PST: 生成内容 (1e2ed88743)