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 (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.club.tw/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.club.tw/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.club.tw/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.club.tw/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning

JSONSchemaProps

JSONSchemaProps 是遵循規範草案 4 (http://json-schema.org/) 的 JSON 模式。


  • $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:一個 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 的子項:

    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` 的陣列添加註釋。

    此標籤只能用於將 "x-kubernetes-list-type" 擴充套件設定為 "map" 的列表。此外,為此屬性指定的值必須是子結構的標量型別欄位(不支援巢狀)。

    指定的屬性必須是必需的或具有預設值,以確保所有列表項都存在這些屬性。

  • x-kubernetes-list-type (string)

    x-kubernetes-list-type 為陣列添加註釋以進一步描述其拓撲。此擴充套件只能用於列表,並且可能有 3 個可能的值:

    1. `atomic`:列表被視為單個實體,就像標量一樣。更新時,原子列表將完全替換。此擴充套件可用於任何型別的列表(結構體、標量等)。
    2. `set`:集合是必須沒有多個相同值的項的列表。每個值必須是標量、具有 x-kubernetes-map-type `atomic` 的物件或具有 x-kubernetes-list-type `atomic` 的陣列。
    3. `map`:這些列表類似於對映,因為它們的元素具有用於識別它們的非索引鍵。合併時保留順序。對映標籤只能用於元素型別為物件的列表。陣列預設為 atomic。
  • x-kubernetes-map-type (string)

    x-kubernetes-map-type 為物件添加註釋以進一步描述其拓撲。此擴充套件只能在型別為物件時使用,並且可能有 2 個可能的值:

    1. `granular`:這些對映是實際的對映(鍵值對),每個欄位彼此獨立(它們可以由不同的參與者分別操作)。這是所有對映的預設行為。
    2. `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 物件的列表。


操作


get 讀取指定的 CustomResourceDefinition

HTTP 請求

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

引數

  • name (在路徑中): string,必填

    CustomResourceDefinition 的名稱

  • pretty (在查詢中): string

    pretty

響應

200 (CustomResourceDefinition): OK

401: 未授權

get 讀取指定 CustomResourceDefinition 的狀態

HTTP 請求

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

引數

  • name (在路徑中): string,必填

    CustomResourceDefinition 的名稱

  • pretty (在查詢中): string

    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): 已建立

202 (CustomResourceDefinition): 已接受

401: 未授權

update 替換指定的 CustomResourceDefinition

HTTP 請求

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

引數

響應

200 (CustomResourceDefinition): OK

201 (CustomResourceDefinition): 已建立

401: 未授權

update 替換指定的 CustomResourceDefinition 的狀態

HTTP 請求

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

引數

響應

200 (CustomResourceDefinition): OK

201 (CustomResourceDefinition): 已建立

401: 未授權

patch 部分更新指定的 CustomResourceDefinition

HTTP 請求

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

引數

  • name (在路徑中): string,必填

    CustomResourceDefinition 的名稱

  • body: Patch,必需

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • force (在查詢中): boolean

    force

  • pretty (在查詢中): string

    pretty

響應

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

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • force (在查詢中): boolean

    force

  • pretty (在查詢中): string

    pretty

響應

200 (CustomResourceDefinition): OK

201 (CustomResourceDefinition): 已建立

401: 未授權

delete 刪除 CustomResourceDefinition

HTTP 請求

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

引數

響應

200 (Status): OK

202 (Status): 已接受

401: 未授權

deletecollection 刪除 CustomResourceDefinition 集合

HTTP 請求

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

引數

響應

200 (Status): OK

401: 未授權

本頁面是自動生成的。

如果你打算報告此頁面存在的問題,請在問題描述中提及此頁面是自動生成的。修復可能需要在 Kubernetes 專案的其他地方進行。

上次修改時間:2025 年 4 月 9 日太平洋標準時間下午 6:36:更新 v1.32 的 API 參考文件 (a3b579d035)