CustomResourceDefinition
apiVersion: apiextensions.k8s.io/v1
import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
CustomResourceDefinition
CustomResourceDefinition представляет ресурс, который должен быть экспонирован на сервере API. Его имя ДОЛЖНО быть в формате <.spec.name>.<.spec.group>.
-
apiVersion: apiextensions.k8s.io/v1
-
kind: CustomResourceDefinition
-
metadata (ObjectMeta)
Стандартные метаданные объекта. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
spec (CustomResourceDefinitionSpec), обязательно
spec описывает, как пользователь хочет видеть ресурсы
-
status (CustomResourceDefinitionStatus)
status показывает фактическое состояние CustomResourceDefinition
CustomResourceDefinitionSpec
CustomResourceDefinitionSpec описывает, как пользователь хочет видеть свой ресурс
-
group (строка), обязательно
group — группа API определённого пользовательского ресурса. Пользовательские ресурсы предоставляются по адресу
/apis/\<group>/.... Должно совпадать с именем CustomResourceDefinition (в формате\<names.plural>.\<group>). -
names (CustomResourceDefinitionNames), обязательно
names задают имена ресурса и типа для пользовательского ресурса.
CustomResourceDefinitionNames указывает имена для обработки этого CustomResourceDefinition
-
names.kind (строка), обязательно
kind — сериализованный тип ресурса. Обычно он представлен в формате CamelCase и в единственном числе. Экземпляры пользовательских ресурсов будут использовать это значение в качестве атрибута
kindв вызовах API. -
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 указывает, является ли определённый пользовательский ресурс кластерным или ограниченным пространством имён. Допустимые значения —
ClusterиNamespaced. -
versions ([]CustomResourceDefinitionVersion), обязательно
versions — список всех версий API определённого пользовательского ресурса. Имена версий используются для вычисления порядка, в котором представленные версии перечислены в документации по открытию API. Если строка версии "kube-like", она будет сортироваться выше, чем не "kube-like" строки версий, которые сортируются лексикографически. "Kube-like" версии начинаются с "v", затем следуют числом (главной версией), а затем необязательно строками "alpha" или "beta" и другим числом (второстепенной версией). Они сортируются сначала по GA > beta > alpha (где GA — версия без суффиксов, таких как beta или alpha), а затем по сравнению с главной версией, а затем со второстепенной версией. Пример отсортированного списка версий: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
CustomResourceDefinitionVersion описывает версию CRD.
-
versions.name (строка), обязательно
name — имя версии, например, “v1”, “v2beta1” и т. д. Пользовательские ресурсы предоставляются по этой версии по адресу
/apis/\<group>/\<version>/...еслиservedравно true. -
versions.served (булево), обязательно
served — флаг, включающий/отключающий эту версию для предоставления через REST API
-
versions.storage (булево), обязательно
storage указывает, что эта версия должна использоваться при сохранении пользовательских ресурсов в хранилище. Должна быть ровно одна версия со storage=true.
-
versions.additionalPrinterColumns ([]CustomResourceColumnDefinition)
additionalPrinterColumns указывает дополнительные столбцы, возвращаемые в табличном выводе. См. https://kubernetes.io/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 определяет субресурсы status и scale для CustomResources.
-
versions.subresources.scale (CustomResourceSubresourceScale)
scale указывает, что пользовательский ресурс должен обслуживать субресурс
/scale, который возвращает объектautoscaling/v1Scale.CustomResourceSubresourceScale определяет, как обслуживать субресурс масштаба для CustomResources.
-
versions.subresources.scale.specReplicasPath (строка), обязательно
specReplicasPath определяет JSON путь внутри пользовательского ресурса, соответствующий
spec.replicasScale. Разрешены только JSON пути без обозначения массивов. Должен быть JSON путь внутри.spec. Если значение в заданном пути пользовательского ресурса отсутствует, субресурс/scaleвернёт ошибку при GET. -
versions.subresources.scale.statusReplicasPath (строка), обязательно
statusReplicasPath определяет JSON путь внутри пользовательского ресурса, соответствующий
status.replicasScale. Разрешены только JSON пути без обозначения массивов. Должен быть JSON путь внутри.status. Если значение в заданном пути пользовательского ресурса отсутствует, значениеstatus.replicasв субресурсе/scaleбудет по умолчанию равно 0. -
versions.subresources.scale.labelSelectorPath (строка)
labelSelectorPath определяет JSON путь внутри пользовательского ресурса, соответствующий
status.selectorScale. Разрешены только JSON пути без обозначения массивов. Должен быть JSON путь внутри.statusили.spec. Необходимо установить для работы с HorizontalPodAutoscaler. Поле, на которое указывает этот JSON путь, должно быть строковым полем (не сложной структурой селектора), содержащим сериализованный селектор меток в строковом формате. Дополнительная информация: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource. Если значение в заданном пути пользовательского ресурса отсутствует, значениеstatus.selectorв субресурсе/scaleбудет по умолчанию пустой строкой.
-
-
versions.subresources.status (CustomResourceSubresourceStatus)
status указывает, что пользовательский ресурс должен обслуживать субресурс
/status. При включении: 1. Запросы к основному конечной точке пользовательского ресурса игнорируют изменения в разделеstatusобъекта. 2. Запросы к субресурсу/statusпользовательского ресурса игнорируют изменения, кроме разделаstatusобъекта.CustomResourceSubresourceStatus определяет, как обслуживать субресурс status для CustomResources. Статус представлен
.statusJSON путём внутри CustomResource. При установке: * открывает субресурс /status для пользовательского ресурса * запросы PUT к субресурсу /status принимают объект пользовательского ресурса и игнорируют изменения, кроме раздела status * запросы PUT/POST/PATCH к пользовательскому ресурсу игнорируют изменения в разделе status
-
-
-
Преобразование (CustomResourceConversion)
Преобразование определяет параметры преобразования для CRD.
CustomResourceConversion описывает, как преобразовывать различные версии CR.
-
conversion.strategy (строка), обязательно
strategy определяет, как пользовательские ресурсы преобразуются между версиями. Допустимые значения: -
None: преобразователь изменяет только apiVersion и не затрагивает другие поля в пользовательском ресурсе. -Webhook: API-сервер вызовет внешний вебхук для преобразования. Для этого варианта требуется дополнительная информация. Это требует, чтобы spec.preserveUnknownFields был false, а spec.conversion.webhook был задан. -
conversion.webhook (WebhookConversion)
webhook описывает, как вызывать вебхук преобразования. Требуется, когда
strategyустановлен наWebhook.WebhookConversion описывает, как вызывать вебхук преобразования
-
conversion.webhook.conversionReviewVersions ([]строка), обязательно
conversionReviewVersions — упорядоченный список предпочтительных
ConversionReviewверсий, ожидаемых вебхуком. API-сервер будет использовать первую поддерживаемую версию в списке. Если ни одна из указанных версий не поддерживается API-сервером, преобразование пользовательского ресурса завершится ошибкой. Если в сохранённой конфигурации вебхука указаны разрешенные версии, а среди них нет версий, известных API-серверу, вызовы вебхука завершатся ошибкой. -
conversion.webhook.clientConfig (WebhookClientConfig)
clientConfig содержит инструкции о том, как вызывать вебхук, если strategy —
Webhook.WebhookClientConfig содержит информацию для создания TLS-соединения с вебхуком.
-
conversion.webhook.clientConfig.caBundle ([]байт)
caBundle — PEM-кодированный набор сертификатов CA, который будет использоваться для проверки сертификата сервера вебхука. Если не указано, используются системные корневые сертификаты доверенных центров на apiserver.
-
conversion.webhook.clientConfig.service (ServiceReference)
service — ссылка на сервис для этого вебхука. Должен быть указан либо service, либо url.
Если вебхук работает внутри кластера, используйте
service.ServiceReference содержит ссылку на Service.legacy.k8s.io
-
conversion.webhook.clientConfig.service.name (строка), обязательно
name — имя сервиса. Обязательно
-
conversion.webhook.clientConfig.service.namespace (строка), обязательно
namespace — имя пространства имён сервиса. Обязательно
-
conversion.webhook.clientConfig.service.path (строка)
path — необязательный URL-путь, по которому будет обращаться к вебхуку.
-
conversion.webhook.clientConfig.service.port (int32)
port — необязательный порт сервиса, по которому будет обращаться к вебхуку.
portдолжен быть корректным номером порта (от 1 до 65535 включительно). По умолчанию равен 443 для совместимости с предыдущими версиями.
-
-
conversion.webhook.clientConfig.url (строка)
url указывает расположение вебхука в стандартном формате URL (
scheme://host:port/path). Должен быть указан только один изurlилиservice.hostне должен ссылаться на сервис, работающий в кластере; вместо этого используйте полеservice. Хост может быть разрешён через внешний DNS в некоторых apiservers (например,kube-apiserverне может разрешить внутрикластерный DNS, так как это будет нарушение уровня).hostтакже может быть IP-адресом.Обратите внимание, что использование
localhostили127.0.0.1в качествеhostрискованно, если вы не позаботились о запуске этого вебхука на всех узлах, на которых может потребоваться обращение к нему apiserver. Такие установки, вероятно, будут непереносимы, то есть нелегко развернуть в новом кластере.Схема должна быть "https"; URL должен начинаться с "https://".
Путь необязателен и, если присутствует, может быть любой строкой, допустимой в URL. Вы можете использовать путь для передачи произвольной строки вебхуку, например, идентификатора кластера.
Попытка использовать аутентификацию пользователя или basic auth, например "user:password@", запрещена. Фрагменты ("#...") и параметры запроса ("?...") также запрещены.
-
-
-
-
preserveUnknownFields (булево)
preserveUnknownFields указывает, что поля объекта, которые не указаны в схеме OpenAPI, должны сохраняться при сохранении в хранилище. apiVersion, kind, metadata и известные поля внутри metadata всегда сохраняются. Это поле устарело в пользу установки
x-preserve-unknown-fieldsв значение true вspec.versions[*].schema.openAPIV3Schema. См. https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#pruning-versus-preserving-unknown-fields для получения подробной информации.
JSONSchemaProps
JSONSchemaProps — это JSON-схема, следующая спецификации черновика 4 (http://json-schema.org/).
-
$ref (строка)
-
$schema (строка)
-
additionalItems (JSONSchemaPropsOrBool)
JSONSchemaPropsOrBool представляет JSONSchemaProps или булево значение. По умолчанию для булевого свойства установлено значение true.
-
additionalProperties (JSONSchemaPropsOrBool)
JSONSchemaPropsOrBool представляет JSONSchemaProps или булево значение. По умолчанию для булевого свойства установлено значение true.
-
allOf ([]JSONSchemaProps)
-
anyOf ([]JSONSchemaProps)
-
default (JSON)
default — это значение по умолчанию для неопределённых полей объекта. Функция по умолчанию — это бета-функция, которая работает при включённой функции CustomResourceDefaulting. Для использования функции по умолчанию необходимо установить 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 (строка)
-
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 (булево)
-
exclusiveMinimum (булево)
-
externalDocs (ExternalDocumentation)
ExternalDocumentation позволяет ссылаться на внешний ресурс для расширенной документации.
-
externalDocs.description (строка)
-
externalDocs.url (строка)
-
-
format (строка)
format — это строка формата OpenAPI v3. Неизвестные форматы игнорируются. Поддерживаются следующие форматы:
- bsonobjectid: идентификатор объекта bson, т.е. шестнадцатеричная строка из 24 символов - uri: URI, как анализируется функцией Golang net/url.ParseRequestURI - email: адрес электронной почты, как анализируется функцией Golang net/mail.ParseAddress - hostname: допустимое представление имени хоста в Интернете, как определено в RFC 1034, раздел 3.1 [RFC1034]. - ipv4: IP-адрес IPv4, как анализируется функцией Golang net.ParseIP - ipv6: IP-адрес IPv6, как анализируется функцией Golang net.ParseIP - cidr: CIDR, как анализируется функцией Golang net.ParseCIDR - mac: MAC-адрес, как анализируется функцией Golang net.ParseMAC - 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 - duration: строка длительности, например, "22 ns", как анализируется функцией Golang time.ParseDuration или совместимая с форматом длительности Scala - datetime: строка даты и времени, например, "2014-12-15T19:30:20.000Z", как определено в RFC3339.
-
id (строка)
-
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 (булево)
-
oneOf ([]JSONSchemaProps)
-
pattern (строка)
-
patternProperties (map[string]JSONSchemaProps)
-
properties (map[string]JSONSchemaProps)
-
required ([]строка)
-
title (строка)
-
type (строка)
-
uniqueItems (булево)
-
x-kubernetes-embedded-resource (булево)
x-kubernetes-embedded-resource определяет, что значение является встроенным объектом Kubernetes runtime.Object с TypeMeta и ObjectMeta. Тип должен быть object. Разрешено дополнительно ограничивать встроенный объект. kind, apiVersion и metadata автоматически проверяются. x-kubernetes-preserve-unknown-fields может быть true, но не обязательно, если объект полностью определён (вплоть до kind, apiVersion, metadata).
-
x-kubernetes-int-or-string (булево)
x-kubernetes-int-or-string указывает, что это значение может быть целым числом или строкой. Если это значение true, разрешено пустой тип, и тип как дочерний элемент anyOf допускается, если соответствует одному из следующих шаблонов:
- anyOf:
- type: целое число
- type: строка
- allOf:
- anyOf:
- type: целое число
- type: строка
- ... ноль или более
- anyOf:
- anyOf:
-
x-kubernetes-list-map-keys ([]строка)
x-kubernetes-list-map-keys аннотирует массив с помощью x-kubernetes-list-type
map, указывая ключи, используемые в качестве индекса карты.Этот тег ДОЛЖЕН использоваться только для списков, для которых установлен расширенный атрибут "x-kubernetes-list-type" со значением "map". Кроме того, указанные значения для этого атрибута должны быть скалярным типом поля дочерней структуры (вложенность не поддерживается).
Указанные свойства должны быть либо обязательными, либо иметь значение по умолчанию, чтобы гарантировать, что эти свойства присутствуют во всех элементах списка.
-
x-kubernetes-list-type (строка)
x-kubernetes-list-type аннотирует массив, чтобы дополнительно описать его топологию. Этот расширенный атрибут должен использоваться только для списков и может иметь три возможных значения:
-
atomic: список обрабатывается как единое целое, подобно скаляру. Атомные списки будут полностью заменены при обновлении. Этот расширенный атрибут может использоваться для списков любого типа (структура, скаляр и т. д.). -
set: множества — это списки, которые не должны содержать несколько элементов с одинаковым значением. Каждое значение должно быть скаляром, объектом с x-kubernetes-map-typeatomicили массивом с x-kubernetes-list-typeatomic. -
map: Эти списки подобны картам тем, что их элементы имеют ключ, отличный от индекса, используемый для их идентификации. Порядок сохраняется при слиянии. Тэг карты должен использоваться только для списков с элементами типа объект. По умолчанию для массивов устанавливается значение atomic.
-
-
x-kubernetes-map-type (строка)
x-kubernetes-map-type аннотирует объект, чтобы дополнительно описать его топологию. Этот расширенный атрибут должен использоваться только при type = object и может принимать два возможных значения:
-
granular: Эти карты — это фактические карты (пары ключ-значение), и каждое поле независимо от других (каждое поле может быть изменено отдельными исполнителями). Это стандартное поведение для всех карт. -
atomic: список обрабатывается как единое целое, подобно скаляру. Атомные карты будут полностью заменены при обновлении.
-
-
x-kubernetes-preserve-unknown-fields (булево)
x-kubernetes-preserve-unknown-fields останавливает API-сервер от удаления полей, которые не указаны в схеме проверки. Это затрагивает поля рекурсивно, но возвращает обычное поведение отбрасывания, если в схеме указаны вложенные свойства или additionalProperties. Это значение может быть true или undefined. Значение false запрещено.
-
x-kubernetes-validations ([]ValidationRule)
Стратегия патча: слияние по ключу
ruleКарта: уникальные значения по ключу rule будут сохранены при слиянии
x-kubernetes-validations описывает список правил валидации, написанных на языке выражений CEL. Это поле находится на стадии альфа-версии. Для использования этого поля необходимо включить функциональный флаг
CustomResourceValidationExpressions.ValidationRule описывает правило валидации, написанное на языке выражений CEL.
-
x-kubernetes-validations.rule (строка), обязательно
Rule представляет выражение, которое будет вычислено CEL. Ссылка: https://github.com/google/cel-spec Правило ограничено местоположением расширения x-kubernetes-validations в схеме. Переменная
selfв выражении CEL связана со значением в пределах области видимости. Пример: - Правило, ограниченное корнем ресурса с подресурсом status: {"rule": "self.status.actual <= self.spec.maxDesired"}Если правило ограничено объектом со свойствами, доступные свойства объекта можно выбрать с помощью
self.field, а наличие свойства можно проверить с помощьюhas(self.field). Значения null обрабатываются как отсутствующие свойства в выражениях CEL. Если правило ограничено объектом с дополнительными свойствами (т.е. картой), значения карты доступны через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
- Массив, где схема элементов имеет тип "неизвестный"
- Объект, где схема дополнительного свойства имеет тип "неизвестный"
Доступны только имена свойств вида
[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сохраняются, но значения перезаписываются значениями вYпри пересечении множеств ключейXиY. Элементы вYс непересекающимися ключами добавляются, сохраняя их частичный порядок.
-
x-kubernetes-validations.message (строка)
Сообщение отображается при ошибке валидации. Сообщение необходимо, если правило содержит переводы строк. Сообщение не должно содержать переводы строк. Если не задано, сообщение равно "failed rule: {Rule}". Например: "должно быть URL с хостом, соответствующим spec.host"
-
CustomResourceDefinitionStatus
CustomResourceDefinitionStatus указывает состояние CustomResourceDefinition
-
acceptedNames (CustomResourceDefinitionNames)
acceptedNames - это имена, которые фактически используются для предоставления информации об открытии. Они могут отличаться от имен в spec.
CustomResourceDefinitionNames указывает имена для предоставления информации об открытии CustomResourceDefinition
-
acceptedNames.kind (строка), обязательно
kind - сериализованное имя ресурса. Обычно используется CamelCase и единственное число. Экземпляры пользовательских ресурсов будут использовать это значение как атрибут
kindв вызовах API. -
acceptedNames.plural (строка), обязательно
plural - множественное имя ресурса для предоставления информации об открытии. Пользовательские ресурсы предоставляются по адресу
/apis/\<group>/\<version>/.../\<plural>. Должно совпадать с именем CustomResourceDefinition (в формате\<names.plural>.\<group>). Должно быть в нижнем регистре. -
acceptedNames.categories ([]string)
categories - список групп ресурсов, к которым относится этот пользовательский ресурс (например, 'all'). Это публикуется в документах API discovery и используется клиентами для поддержки вызовов, таких как
kubectl get all. -
acceptedNames.listKind (строка)
listKind - сериализованное имя списка для этого ресурса. По умолчанию "
kindList". -
acceptedNames.shortNames ([]string)
shortNames - короткие имена ресурса, опубликованные в документах API discovery и используемые клиентами для поддержки вызовов, таких как
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 (Time)
lastTransitionTime - последнее время перехода условия из одного состояния в другое.
Time - это обёртка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Обёртки предоставляются для многих фабричных методов, которые предлагает пакет time.
-
conditions.message (строка)
message - удобочитаемое сообщение, содержащее подробности о последнем переходе.
-
conditions.reason (строка)
reason - уникальное, однословное, имя с большой буквы, причина последнего перехода состояния.
-
-
storedVersions ([]string)
storedVersions перечисляет все версии CustomResources, которые когда-либо хранились. Отслеживание этих версий позволяет определить путь миграции для сохранённых версий в etcd. Поле изменяемо, поэтому контроллер миграции может завершить миграцию в другую версию (убедившись, что старые объекты не остаются в хранилище), а затем удалить остальные версии из этого списка. Версии нельзя удалять из
spec.versionsпри их наличии в этом списке.
CustomResourceDefinitionList
CustomResourceDefinitionList - это список объектов CustomResourceDefinition.
-
items ([]CustomResourceDefinition), обязательно
items - список отдельных объектов CustomResourceDefinition
-
apiVersion (строка)
APIVersion определяет версионированную схему этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее значение и могут отклонять нераспознанные значения. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
-
kind (строка)
Kind - строковое значение, представляющее REST-ресурс, который представляет этот объект. Серверы могут вывести это из конечной точки, к которой клиент отправляет запросы. Не может быть обновлено. В CamelCase. Подробнее: 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
© 2022 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2022 The Linux Foundation ®. All rights reserved.
https://v1-24.docs.kubernetes.io/docs/reference/kubernetes-api/extend-resources/custom-resource-definition-v1/