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.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)
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 專案的其他地方進行。