1 - APIGroup

APIGroup містить назву, підтримувані версії та бажану версію групи.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

APIGroup

APIGroup містить назву, підтримувані версії та бажану версію групи.


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind
string
Kind визначає тип REST-ресурсу, який представляє цей обʼєкт. Сервери можуть визначати це з точки доступу, до якої клієнт надсилає запити. Не може бути оновлено. У CamelCase. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
name *
string
name визначає назву групи.
preferredVersion
GroupVersionForDiscovery
preferredVersion визначає версію, якій віддає перевагу API-сервер, ймовірно, це версія зберігання.
serverAddressByClientCIDRs
ServerAddressByClientCIDR array
мапа відповідності між CIDR-діапазонами клієнтів та адресами серверів, що обслуговують цю групу. Це допомагає клієнтам підключатися до серверів найбільш ефективним з точки зору мережевого трафіку способом. Клієнти можуть використовувати відповідну адресу сервера відповідно до CIDR-діапазону, якому вони відповідають. У разі наявності декількох збігів клієнти повинні використовувати найдовший CIDR-діапазон, що відповідає їхнім параметрам. Сервер повертає лише ті CIDR-діапазони, які, на його думку, можуть відповідати параметрам клієнта. Наприклад: головний сервер поверне лише внутрішній IP-CIDR, якщо клієнт підключається до сервера, використовуючи внутрішню IP-адресу. Сервер перевіряє заголовок X-Forwarded-For або заголовок X-Real-Ip або request.RemoteAddr (у цьому порядку), щоб отримати IP-адресу клієнта.
versions *
GroupVersionForDiscovery array
versions визначає версії, які підтримуються в цій групі.

APIGroupList

APIGroupList є списком APIGroup, що дозволяє клієнтам відкривати API за адресою /apis.


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
groups *
APIGroup array
groups є списком APIGroup.
kind
string
Kind визначає тип REST-ресурсу, який представляє цей обʼєкт. Сервери можуть визначати це з точки доступу, до якої клієнт надсилає запити. Не може бути оновлено. У CamelCase. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

2 - APIResource

APIResource визначає назву ресурсу та чи є він обмеженим простором імен.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

APIResource

APIResource визначає назву ресурсу та чи є він обмеженим простором імен.


ПолеОпис
categories
string array
categories є списком групованих ресурсів, до яких належить цей ресурс (наприклад, 'all')
group
string
group є переважною групою ресурсу. Порожнє значення означає групу списку ресурсів, що містить цей ресурс. Для субресурсів це може мати інше значення, наприклад: Scale".
kind *
string
kind визначає тип ресурсу (наприклад, 'Foo' є типом для ресурсу 'foo')
name *
string
name є множинною назвою ресурсу.
namespaced *
boolean
namespaced визначає, чи є ресурс обмеженим простором імен.
shortNames
string array
shortNames є списком рекомендованих коротких назв ресурсу.
singularName *
string
singularName є назвою ресурсу в однині. Це дозволяє клієнтам обробляти множину та однину прозоро. Назва в однині більш коректна для звітування про стан одного елемента, і обидві форми, однина та множина, дозволені з інтерфейсу kubectl CLI.
storageVersionHash
string
Хеш-значення версії зберігання, версії, до якої цей ресурс конвертується при записі в сховище даних. Значення повинно розглядатися як непрозоре для клієнтів. Дійсним є лише порівняння на рівність значення. Це альфа-функція і може змінюватися або бути видаленою в майбутньому. Поле заповнюється лише API-сервером, якщо увімкнено функціональну можливість StorageVersionHash. Це поле залишатиметься необовʼязковим, навіть якщо воно стане стабільним.
verbs *
string array
verbs є списком підтримуваних kube-дій (це включає get, list, watch, create, update, patch, delete, deletecollection та proxy)
version
string
version є переважною версією ресурсу. Порожнє значення означає версію списку ресурсів, що містить цей ресурс. Для субресурсів це може мати інше значення, наприклад: v1 (поки всередині версії v1beta1 групи основного ресурсу)".

APIResourceList

APIResourceList є списком APIResource, він використовується для відображення назв ресурсів, підтримуваних у конкретній групі та версії, а також чи є ресурс обмеженим простором імен.


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
groupVersion *
string
groupVersion визначає групу та версію, для якої призначений цей APIResourceList.
kind
string
Kind визначає тип REST-ресурсу, який представляє цей обʼєкт. Сервери можуть визначати це з точки доступу, до якої клієнт надсилає запити. Не може бути оновлено. У CamelCase. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
resources *
APIResource array
resources містить назви ресурсів та інформацію про те, чи вони обмежені простором імен.

3 - APIVersions

APIVersions перелічує доступні версії, щоб дозволити клієнтам виявляти API за адресою /api, яка є кореневим шляхом для застарілого API v1.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

APIVersions

APIVersions перелічує доступні версії, щоб дозволити клієнтам виявляти API за адресою /api, яка є кореневим шляхом для застарілого API v1.


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind
string
Kind визначає тип REST-ресурсу, який представляє цей обʼєкт. Сервери можуть визначати це з точки доступу, до якої клієнт надсилає запити. Не може бути оновлено. У CamelCase. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
serverAddressByClientCIDRs *
ServerAddressByClientCIDR array
a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.
versions *
string array
versions are the api versions that are available.

4 - BasicDevice

BasicDevice визначає один екземпляр пристрою.

apiVersion: resource.k8s.io/v1beta1

import "k8s.io/api/resource/v1beta1"

BasicDevice

BasicDevice визначає один екземпляр пристрою.


ПолеОпис
allNodes
boolean
AllNodes вказує, що всі вузли мають доступ до пристрою. Має бути встановлено лише якщо Spec.PerDeviceNodeSelection встановлено в true. Можна встановити не більше одного з NodeName, NodeSelector та AllNodes.
allowMultipleAllocations
boolean
AllowMultipleAllocations вказує, чи дозволено виділяти пристрій для кількох DeviceRequests. Якщо AllowMultipleAllocations встановлено в true, пристрій може бути виділений більше одного разу, і вся його ємність є споживаною, незалежно від того, чи визначено requestPolicy.
attributes
object
Attributes визначає набір атрибутів для цього пристрою. Імʼя кожного атрибуту має бути унікальним у цьому наборі. Максимальна кількість атрибутів і ємностей разом становить 32.
bindingConditions
string array
BindingConditions визначає умови для продовження привʼязки. Всі ці умови повинні бути встановлені в умовах стану кожного пристрою зі значенням True, щоб продовжити привʼязку пода до вузла під час планування пода. Максимальна кількість умов привʼязки — 4. Умови повинні бути дійсним рядком типу умови. Це бета-поле і вимагає увімкнення функціональних можливостей DRADeviceBindingConditions та DRAResourceClaimDeviceStatus.
bindingFailureConditions
string array
BindingFailureConditions визначає умови невдалої привʼязки. Вони можуть бути встановлені в умовах стану кожного пристрою. Якщо будь-яка з них істинна, сталася невдала привʼязка. Максимальна кількість умов невдалої привʼязки — 4. Умови повинні бути дійсним рядком типу умови. Це бета-поле і вимагає увімкнення функціональних можливостей DRADeviceBindingConditions та DRAResourceClaimDeviceStatus.
bindsToNode
boolean
BindsToNode вказує, чи використання виділення, що включає цей пристрій, має бути обмежене саме тим вузлом, який був обраний під час обробки заявки. Якщо встановлено в true, планувальник встановить ResourceClaim.Status.Allocation.NodeSelector, щоб відповідати вузлу, де було зроблено виділення. Це бета-поле і вимагає увімкнення функціональних можливостей DRADeviceBindingConditions та DRAResourceClaimDeviceStatus.
capacity
object
Capacity визначає набір ємностей для цього пристрою. Імʼя кожної ємності має бути унікальним у цьому наборі. Максимальна кількість атрибутів і ємностей разом становить 32.
consumesCounters
DeviceCounterConsumption array
ConsumesCounters визначає список посилань на sharedCounters та набір лічильників, які пристрій буде споживати з цих наборів лічильників. Може бути лише один запис на counterSet. Максимальна кількість споживань лічильників пристрою на пристрій становить 2.
nodeAllocatableResourceMappings
object
NodeAllocatableResourceMappings визначає відповідність ресурсів вузла, які керуються драйвером DRA, що надає цей пристрій. Це включає ресурси, які наразі повідомляються в v1.Node `status.allocatable`, але не є розширеними ресурсами (див. https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#extended-resources). Приклади включають "cpu", "memory", "ephemeral-storage" та hugepages. Крім стандартних запитів, зроблених через Pod `spec`, ці ресурси також можуть бути запитані через заявки та виділені драйвером DRA. Наприклад, драйвер CPU DRA може виділяти ексклюзивні CPU або допоміжні залежності памʼяті вузла для прискорювача. Ключі цієї мапи є іменами ресурсів, доступних для вузла (наприклад, "cpu", "memory"). Розширені імена ресурсів не дозволяються як ключі.
nodeName
string
NodeName визначає вузол, де доступний пристрій. Має бути встановлено лише якщо Spec.PerDeviceNodeSelection встановлено в true. Можна встановити не більше одного з NodeName, NodeSelector та AllNodes.
nodeSelector
NodeSelector
NodeSelector визначає вузли, де доступний пристрій. Має використовуватися точно один термін. Має бути встановлено лише якщо Spec.PerDeviceNodeSelection встановлено в true. Можна встановити не більше одного з NodeName, NodeSelector та AllNodes.
taints
DeviceTaint array
Якщо вказано, це позначки taints драйверів. Максимальна кількість taints — 16. Якщо taints встановлено для будь-якого пристрою в ResourceSlice, то максимальна кількість дозволених пристроїв на ResourceSlice становить 64 замість 128. Це бета-поле і вимагає увімкнення функціональної можливості DRADeviceTaints.

5 - Binding

Binding повʼязує один обʼєкт з іншим; наприклад, под привʼязується до вузла за допомогою планувальника.

apiVersion: v1

import "k8s.io/api/core/v1"

Binding

Binding повʼязує один обʼєкт з іншим; наприклад, под привʼязується до вузла за допомогою планувальника.


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind
string
Kind визначає тип REST-ресурсу, який представляє цей обʼєкт. Сервери можуть визначати це з точки доступу, до якої клієнт надсилає запити. Не можна оновлювати. У CamelCase. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ObjectMeta
Метадані стандартного обʼєкта. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
target *
ObjectReference
Цільовий обʼєкт, до якого ви хочете привʼязати стандартний обʼєкт.

6 - Condition

Condition містить деталі щодо одного аспекту поточного стану цього API ресурсу.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

Condition

Condition містить деталі щодо одного аспекту поточного стану цього API ресурсу.


ПолеОпис
lastTransitionTime *
Time
lastTransitionTime — це останній час, коли стан перейшов з одного стану в інший. Це має бути тоді, коли змінився основний стан. Якщо це невідомо, можна використовувати час, коли змінилося поле API.
message *
string
message — це повідомлення, зрозуміле людині, яке вказує деталі щодо переходу. Це може бути порожній рядок.
observedGeneration
integer
observedGeneration представляє .metadata.generation, на основі якого була встановлено стан. Наприклад, якщо .metadata.generation наразі 12, але .status.conditions[x].observedGeneration дорівнює 9, стан застарів щодо поточного стану екземпляра.
reason *
string
reason містить програмний ідентифікатор, що вказує причину останнього переходу стану. Створювачі конкретних типів станіів можуть визначати очікувані значення та значення для цього поля, а також чи вважаються ці значення гарантованим API. Значення повинно бути рядком у CamelCase. Це поле не може бути порожнім.
status *
string
status стану, одне з True, False, Unknown.
type *
string
type стану у CamelCase або у foo.example.com/CamelCase.

7 - DeleteOptions

DeleteOptions можуть бути надані під час видалення обʼєкта API.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

DeleteOptions

DeleteOptions можуть бути надані під час видалення обʼєкта API.


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
dryRun
string array
Коли присутній, вказує, що зміни не повинні зберігатися. Неправильна або невизнана директива dryRun призведе до помилки та припинення обробки запиту. Дійсні значення: - All: всі етапи dry run будуть оброблені
gracePeriodSeconds
integer
Час у секундах перед видаленням обʼєкта. Значення повинно бути невідʼємним цілим числом. Значення нуль означає негайне видалення. Якщо це значення nil, буде використано стандартний період очікування для зазначеного типу. Стандартно використовується значення для кожного обʼєкта, якщо не вказано. нуль означає негайне видалення.
ignoreStoreReadErrorWithClusterBreakingPotential
boolean
якщо встановлено значення true, це призведе до небезпечного видалення ресурсу у випадку, якщо звичайний процес видалення не вдасться через помилку пошкодженого обʼєкта. Ресурс вважається пошкодженим, якщо його не можна успішно отримати з відповідного сховища через а) неможливість трансформації даних, наприклад, помилка дешифрування, або б) невдачу при декодуванні в обʼєкт. ПРИМІТКА: небезпечне видалення ігнорує обмеження фіналізаторів, пропускає перевірки передумов і видаляє обʼєкт зі сховища. ПОПЕРЕДЖЕННЯ: це може потенційно порушити роботу кластера, якщо робоче навантаження, повʼязане з ресурсом, що видаляється небезпечно, покладається на звичайний процес видалення. Використовуйте лише якщо ви ДІЙСНО знаєте, що робите. Стандартне значення — false, і користувач повинен явно погодитися на його використання.
kind
string
Kind — це рядкове значення, що представляє REST-ресурс, який представляє цей обʼєкт. Сервери можуть визначати його з точки доступу, до якої клієнт надсилає запити. Не можна оновлювати. У CamelCase. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
orphanDependents
boolean
Застаріло: будь ласка, використовуйте PropagationPolicy, це поле буде застарілим у версії 1.7. Чи повинні залежні обʼєкти залишатися покинутими. Якщо true/false, завершувач "orphan" буде доданий до/видалений з списку завершувачів обʼєкта. Можна встановити або це поле, або PropagationPolicy, але не обидва.
preconditions
Preconditions
Попередні вимоги повинні бути задовільнені перед видаленням. Якщо це неможливо, буде повернуто статус 409 Conflict.
propagationPolicy
string
Чи і як буде виконано збір сміття. Можна встановити або це поле, або OrphanDependents, але не обидва. Стандартна політика визначається наявним завершувачем у metadata.finalizers та стандартною політикою для конкретного ресурсу. Допустимі значення: 'Orphan' — залишити залежні обʼєкти покинутими; 'Background' — дозволити збирачу сміття видаляти залежні обʼєкти у фоновому режимі; 'Foreground' — каскадна політика, яка видаляє всі залежні обʼєкти з показом всіх дій.

8 - EventSource

EventSource містить інформацію про подію.

apiVersion: v1

import "k8s.io/api/core/v1"

EventSource

EventSource містить інформацію про подію.


ПолеОпис
component
string
Компонент, з якого генерується подія.
host
string
Імʼя вузла, на якому генерується подія.

9 - Eviction

Eviction виселяє под з його вузла відповідно до певних політик та обмежень безпеки. Є субресурсом Pod. Запит на виклик такого виселення створюється шляхом POST до .../pods/<pod name>/evictions.

apiVersion: policy/v1

import "k8s.io/api/policy/v1"

Eviction

Eviction виселяє под з його вузла відповідно до певних політик та обмежень безпеки. Це субресурс Pod. Запит на виклик такого виселення створюється шляхом POST до .../pods/<pod name>/evictions.


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
deleteOptions
DeleteOptions
Можна надати DeleteOptions
kind
string
Kind є рядковим значенням, що представляє REST-ресурс, який цей обʼєкт представляє. Сервери можуть визначати це з точки доступу, до якої клієнт надсилає запити. Не може бути оновлено. У CamelCase. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ObjectMeta
ObjectMeta описує под, який виселяється.

10 - FieldSelectorAttributes

FieldSelectorAttributes вказує на обмежений доступ до поля. Розробникам вебхуків рекомендується:

  • переконатися, що rawSelector і requirements не встановлені одночасно
  • враховувати поле requirements, якщо воно встановлене
  • не намагатися аналізувати або враховувати поле rawSelector, якщо воно встановлене.

Це робиться для уникнення ще одного CVE-2022-2880 (тобто змусити різні системи погодитися щодо точного способу аналізу запиту — це не те, що ми хочемо), див. https://www.oxeye.io/resources/golang-parameter-smuggling-attack для отримання додаткової інформації.

Для точок доступу *SubjectAccessReview kube-apiserver:

  • Якщо rawSelector порожній і requirements порожні, запит не обмежений.
  • Якщо rawSelector присутній і requirements порожні, rawSelector буде проаналізований і обмежений, якщо аналіз успішний.
  • Якщо rawSelector порожній і requirements присутні, слід дотримуватися requirements
  • Якщо rawSelector присутній і requirements присутні, запит недійсний.

apiVersion: authorization.k8s.io/v1

import "k8s.io/api/authorization/v1"

FieldSelectorAttributes

FieldSelectorAttributes вказує на обмежений доступ до поля. Розробникам вебхуків рекомендується:

  • переконатися, що rawSelector і requirements не встановлені одночасно
  • враховувати поле requirements, якщо воно встановлене
  • не намагатися аналізувати або враховувати поле rawSelector, якщо воно встановлене.

Це робиться для уникнення ще одного CVE-2022-2880 (тобто змусити різні системи погодитися щодо точного способу аналізу запиту — це не те, що ми хочемо), див. https://www.oxeye.io/resources/golang-parameter-smuggling-attack для отримання додаткової інформації.

Для точок доступу *SubjectAccessReview kube-apiserver:

  • Якщо rawSelector порожній і requirements порожні, запит не обмежений.
  • Якщо rawSelector присутній і requirements порожні, rawSelector буде проаналізований і обмежений, якщо аналіз успішний.
  • Якщо rawSelector порожній і requirements присутні, слід дотримуватися requirements
  • Якщо rawSelector присутній і requirements присутні, запит недійсний.

ПолеОпис
rawSelector
string
rawSelector є серіалізацією селектора полів, який буде включений у параметр запиту. Рекомендується ігнорувати rawSelector у реалізаціях вебхуків. *SubjectAccessReview kube-apiserver буде аналізувати rawSelector, якщо requirements відсутні.
requirements
FieldSelectorRequirement array
requirements є опрацьованою інтерпретацією селектора полів. Всі вимоги повинні бути виконані, щоб екземпляр ресурсу відповідав селектору. Реалізації вебхуків повинні обробляти requirements, але як саме їх обробляти залежить від вебхука. Оскільки requirements можуть лише обмежувати запит, безпечно авторизувати як необмежений запит, якщо requirements не зрозумілі.

11 - FieldSelectorRequirement

FieldSelectorRequirement є селектором, який містить значення, ключ та оператор, що повʼязує ключ і значення.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

FieldSelectorRequirement

FieldSelectorRequirement є селектором, який містить значення, ключ та оператор, що повʼязує ключ і значення.


ПолеОпис
key *
string
key є ключем селектора полів, до якого застосовується вимога.
operator *
string
operator представляє відношення ключа до набору значень. Дійсні оператори: In, NotIn, Exists, DoesNotExist. Список операторів може розширюватися в майбутньому.
values
string array
values є масивом рядкових значень. Якщо оператор In або NotIn, масив values повинен бути непорожнім. Якщо оператор Exists або DoesNotExist, масив values повинен бути порожнім.

12 - FieldsV1

FieldsV1 зберігає набір полів у структурі даних, подібній до Trie, у форматі JSON.

Кожен ключ є або '.', що представляє саме поле, і завжди зіставляється з порожнім набором, або рядком, що представляє підполе або елемент. Рядок буде слідувати одному з цих чотирьох форматів: 'f:<name>', де <name> є імʼям поля в структурі або ключем у мапі 'v:<value>', де <value> є точним JSON-форматованим значенням елемента списку 'i:<index>', де <index> є позицією елемента в списку 'k:<keys>', де <keys> є мапою зіставлення полів ключів елемента списку до їх унікальних значень. Якщо ключ зіставляєтсья з порожнім значенням Fields, поле, яке представляє цей ключ, є частиною набору.

Точний формат визначено в sigs.k8s.io/structured-merge-diff

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

FieldsV1

FieldsV1 зберігає набір полів у структурі даних, подібній до Trie, у форматі JSON.

Кожен ключ є або '.', що представляє саме поле, і завжди зіставляється з порожнім набором, або рядком, що представляє підполе або елемент. Рядок буде слідувати одному з цих чотирьох форматів: 'f:<name>', де <name> є імʼям поля в структурі або ключем у мапі 'v:<value>', де <value> є точним JSON-форматованим значенням елемента списку 'i:<index>', де <index> є позицією елемента в списку 'k:<keys>', де <keys> є мапою зіставлення полів ключів елемента списку до їх унікальних значень. Якщо ключ зіставляєтсья з порожнім значенням Fields, поле, яке представляє цей ключ, є частиною набору.

Точний формат визначено в sigs.k8s.io/structured-merge-diff


13 - GroupResource

GroupResource визначає Group та Resource, але не вимагає версію. Це корисно для ідентифікації концепцій під час етапів пошуку без частково дійсних типів

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

GroupResource

GroupResource визначає Group та Resource, але не вимагає версію. Це корисно для ідентифікації концепцій під час етапів пошуку без частково дійсних типів


ПолеОпис
group *
string
resource *
string

14 - GroupVersionForDiscovery

GroupVersion містить рядки "group/version" та "version" версії. Зроблено у вигляді struct для збереження розширюваності.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

GroupVersionForDiscovery

GroupVersion містить рядки "group/version" та "version" версії. Зроблено у вигляді struct для збереження розширюваності.


ПолеОпис
groupVersion *
string
groupVersion вказує на API групу та версію у форматі "group/version"
version *
string
version вказує на версію у форматі "version". Це дозволяє клієнтам уникнути розділення GroupVersion.

15 - LabelSelector

label selector є запитом міток до набору ресурсів. Результат matchLabels та matchExpressions обʼєднується за допомогою AND. Порожній селектор міток відповідає всім обʼєктам. Значення null селектора міток не відповідає жодному обʼєкту.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

LabelSelector

LabelSelector є запитом міток до набору ресурсів. Результат matchLabels та matchExpressions обʼєднується за допомогою AND. Порожній селектор міток відповідає всім обʼєктам. Значення null селектора міток не відповідає жодному обʼєкту.


ПолеОпис
matchExpressions
LabelSelectorRequirement array
matchExpressions є списком вимог селектора міток. Всі вимоги обʼєднуються за допомогою AND.
matchLabels
object
matchLabels є мапою пар {ключ,значення}. Одна пара {ключ,значення} у мапі matchLabels еквівалентна елементу matchExpressions, у якому поле key дорівнює "ключ", оператор дорівнює "In", а масив values містить лише "значення". Всі вимоги обʼєднуються за допомогою AND.

16 - LabelSelectorAttributes

LabelSelectorAttributes вказує на обмежений доступ за мітками. Розробникам вебхуків рекомендується:

  • переконатися, що rawSelector та requirements не встановлені одночасно
  • враховувати поле requirements, якщо воно встановлене
  • не намагатися аналізувати або враховувати поле rawSelector, якщо воно встановлене.

Це робиться для уникнення ще одного CVE-2022-2880 (тобто змусити різні системи погодитися щодо того, як саме аналізувати запит, не є бажаним), див. https://www.oxeye.io/resources/golang-parameter-smuggling-attack для отримання додаткової інформації. Для кінцевих точок *SubjectAccessReview kube-apiserver:

  • Якщо rawSelector порожній і requirements порожні, запит не обмежений.
  • Якщо rawSelector присутній і requirements порожні, rawSelector буде проаналізований і обмежений, якщо аналіз успішний.
  • Якщо rawSelector порожній і requirements присутні, requirements повинні бути враховані.
  • Якщо rawSelector присутній і requirements присутні, запит недійсний."

apiVersion: authorization.k8s.io/v1

import "k8s.io/api/authorization/v1"

LabelSelectorAttributes

LabelSelectorAttributes вказує на обмежений доступ за мітками. Розробникам вебхуків рекомендується:

  • переконатися, що rawSelector та requirements не встановлені одночасно
  • враховувати поле requirements, якщо воно встановлене
  • не намагатися аналізувати або враховувати поле rawSelector, якщо воно встановлене.

Це робиться для уникнення ще одного CVE-2022-2880 (тобто змусити різні системи погодитися щодо того, як саме аналізувати запит, не є бажаним), див. https://www.oxeye.io/resources/golang-parameter-smuggling-attack для отримання додаткової інформації. Для кінцевих точок *SubjectAccessReview kube-apiserver:

  • Якщо rawSelector порожній і requirements порожні, запит не обмежений.
  • Якщо rawSelector присутній і requirements порожні, rawSelector буде проаналізований і обмежений, якщо аналіз успішний.
  • Якщо rawSelector порожній і requirements присутні, requirements повинні бути враховані.
  • Якщо rawSelector присутній і requirements присутні, запит недійсний.

ПолеОпис
rawSelector
string
rawSelector є серіалізацією селектора полів, який буде включений у параметр запиту. Розробникам вебхуків рекомендується ігнорувати rawSelector. *SubjectAccessReview kube-apiserver буде аналізувати rawSelector, якщо requirements відсутні.
requirements
LabelSelectorRequirement array
requirements є обробленою інтерпретацією селектора міток. Всі вимоги повинні бути виконані, щоб екземпляр ресурсу відповідав селектору. Реалізації вебхуків повинні обробляти requirements, але як саме їх обробляти залежить від вебхука. Оскільки requirements можуть лише обмежувати запит, безпечно авторизувати як необмежений запит, якщо requirements не зрозумілі.

17 - LabelSelectorRequirement

label selector requirement є селектором, який містить значення, ключ та оператор, що повʼязує ключ і значення.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

LabelSelectorRequirement

LabelSelectorRequirement є селектором, який містить значення, ключ та оператор, що повʼязує ключ і значення.


ПолеОпис
key *
string
key є ключем мітки, до якої застосовується селектор.
operator *
string
operator представляє відношення ключа до набору значень. Дійсні оператори: In, NotIn, Exists та DoesNotExist.
values
string array
values є масивом рядкових значень. Якщо оператор In або NotIn, масив values повинен бути непорожнім. Якщо оператор Exists або DoesNotExist, масив values повинен бути порожнім. Цей масив замінюється під час стратегічного об'єднання патчів.

18 - ListMeta

ListMeta описує метадані, які повинні мати синтетичні ресурси, включаючи списки та різні обʼєкти стану. Ресурс може мати лише один з {ObjectMeta, ListMeta}.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

ListMeta

ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.


ПолеОпис
continue
string
continue може бути встановлено, якщо користувач встановив обмеження на кількість повернутих елементів, і вказує, що на сервері є більше даних. Значення є непрозорим і може бути використано для виконання іншого запиту до точки доступу, яка обслуговувала цей список, щоб отримати наступний набір доступних обʼєктів. Продовження послідовного списку може бути неможливим, якщо конфігурація сервера змінилася або пройшло більше кількох хвилин. Поле resourceVersion, отримане при використанні цього значення continue, буде ідентичним значенню в першій відповіді, якщо ви не отримали цей токен з повідомлення про помилку.
remainingItemCount
integer
remainingItemCount є кількістю наступних елементів у списку, які не включені в цю відповідь списку. Якщо запит list містив селектори міток або полів, тоді кількість залишкових елементів невідома, і поле залишиться незаповненим і буде опущене під час серіалізації. Якщо список повний (або тому, що він не розбивається на частини, або тому, що це остання частина), тоді більше немає залишкових елементів, і це поле залишиться незаповненим і буде опущене під час серіалізації. Сервери старші за v1.15 не встановлюють це поле. Передбачуване використання remainingItemCount полягає в оцінці розміру колекції. Клієнти не повинні покладатися на те, що remainingItemCount буде встановлено або буде точним.
resourceVersion
string
Рядок, який ідентифікує внутрішню версію цього обʼєкта на сервері і може бути використаний клієнтами для визначення, коли обʼєкти змінилися. Значення повинно розглядатися як непрозоре для клієнтів і передаватися назад на сервер без змін. Заповнюється системою. Тільки для читання. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
selfLink
string
Застаріле: selfLink є застарілим полем лише для читання, яке більше не заповнюється системою.
shardInfo
ShardInfo
shardInfo встановлюється, коли список є відфільтрованою підмножиною повної колекції, як вибрано за допомогою селектора шардінгу в запиті. Він повертає селектор назад, щоб клієнти могли перевірити, який шард вони отримали, і обʼєднати часткові відповіді. Клієнти не повинні кешувати часткові відповіді списку як повне представлення колекції. Це альфа-поле і вимагає увімкнення функціональної можливості ShardedListAndWatch.

19 - LocalObjectReference

LocalObjectReference містить достатньо інформації, щоб дозволити вам знайти вказаний обʼєкт всередині того самого простору імен.

apiVersion: v1

import "k8s.io/api/core/v1"

LocalObjectReference

LocalObjectReference містить достатньо інформації, щоб дозволити вам знайти вказаний обʼєкт всередині того самого простору імен." title: "LocalObjectReference


ПолеОпис
name
string
Назва обʼєкта, на який ви посилаєтеся. Це поле є фактично обов'язковим, але через зворотну сумісність дозволено залишати його порожнім. Екземпляри цього типу з порожнім значенням тут, як правило, є помилковими. Докладніше: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

20 - LocalSubjectAccessReview

LocalSubjectAccessReview перевіряє, чи може користувач або група виконати дію в заданому просторі імен. Наявність ресурсу з обмеженням за простором імен значно спрощує надання політики з обмеженням за простором імен, яка включає перевірку дозволів.

apiVersion: authorization.k8s.io/v1

import "k8s.io/api/authorization/v1"

LocalSubjectAccessReview

LocalSubjectAccessReview перевіряє, чи може користувач або група виконати дію в заданому просторі імен. Наявність ресурсу з обмеженням за простором імен значно спрощує надання політики з обмеженням за простором імен, яка включає перевірку дозволів.


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind
string
Kind є рядковим значенням, що представляє REST-ресурс, який цей обʼєкт представляє. Сервери можуть визначати це з кінцевої точки, до якої клієнт надсилає запити. Не можна оновлювати. У CamelCase. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ObjectMeta
metadata є стандартною метаданою списку. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec *
SubjectAccessReviewSpec
spec містить інформацію про запит, що оцінюється. spec.namespace повинен бути рівним простору імен, до якого ви зробили запит. Якщо порожній, використовується значення за замовчуванням.
status
SubjectAccessReviewStatus
status заповнюється сервером і вказує, чи дозволено запит чи ні.

21 - ManagedFieldsEntry

ManagedFieldsEntry є ідентифікатором робочого процесу, набором полів (FieldSet) та версією групи ресурсу, до якого застосовується цей набір полів.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

ManagedFieldsEntry

ManagedFieldsEntry є ідентифікатором робочого процесу, набором полів (FieldSet) та версією групи ресурсу, до якого застосовується цей набір полів.


ПолеОпис
apiVersion
string
APIVersion визначає версію цього ресурсу, до якої застосовується цей набір полів. Формат такий же, як у верхньому рівні поля APIVersion: "group/version". Необхідно відстежувати версію набору полів, оскільки її не можна автоматично конвертувати.
fieldsType
string
FieldsType є дискримінатором для різних форматів і версій полів. Наразі існує лише одне можливе значення: "FieldsV1"
fieldsV1
FieldsV1
FieldsV1 містить перший формат версії JSON, як описано в типі "FieldsV1".
manager
string
Manager є ідентифікатором робочого процесу, який керує цими полями.
operation
string
Operation є типом операції, яка призвела до створення цього запису ManagedFieldsEntry. Єдині допустимі значення для цього поля: 'Apply' та 'Update'.
subresource
string
Subresource є назвою субресурсу, який використовувався для оновлення цього обʼєкта, або порожній рядок, якщо обʼєкт було оновлено через основний ресурс. Значення цього поля використовується для розрізнення менеджерів, навіть якщо вони мають однакове імʼя. Наприклад, оновлення статусу буде відрізнятися від звичайного оновлення з використанням того ж імені менеджера. Зверніть увагу, що поле APIVersion не повʼязане з полем Subresource і завжди відповідає версії основного ресурсу.
time
Time
Time є відбитком часу, коли запис ManagedFields було додано. Відбиток часу також оновлюється, якщо додано поле, менеджер змінює будь-яке з керованих полів або видаляє поле. Відбиток часу не оновлюється, коли поле видаляється з запису, оскільки його взяв інший менеджер.

22 - MatchCondition

MatchCondition представляє умову, яка повинна бути виконана, щоб запит був надісланий вебхуку.

apiVersion: admissionregistration.k8s.io/v1

import "k8s.io/api/admissionregistration/v1"

MatchCondition

MatchCondition представляє умову, яка повинна бути виконана, щоб запит був надісланий вебхуку.


ПолеОпис
expression *
string
expression представляє вираз, який буде оцінюватися за допомогою CEL. Повинен оцінюватися до bool. Вирази CEL мають доступ до вмісту AdmissionRequest та Authorizer, організованих у змінні CEL:
  • 'object' — Обʼєкт з вхідного запиту. Значення дорівнює null для запитів DELETE.
  • 'oldObject' — Наявний обʼєкт. Значення дорівнює null для запитів CREATE.
  • 'request' — Атрибути запиту на допуск(/pkg/apis/admission/types.go#AdmissionRequest).
  • 'authorizer' — авторизатор CEL. Може використовуватися для перевірки авторизації для принципала (користувача або службового облікового запису) запиту. Див. https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
  • 'authorizer.requestResource' — CEL ResourceCheck, створений з 'authorizer' і налаштований з ресурсом запиту. Документація з CEL: https://kubernetes.io/docs/reference/using-api/cel/
Обовʼязково.
name *
string
name є ідентифікатором для цієї умови відповідності, використовується для стратегічного обʼєднання MatchConditions, а також для надання ідентифікатора для цілей журналювання. Хороше імʼя повинно бути описовим для повʼязаного виразу. Імʼя повинно бути кваліфікованим іменем, що складається з буквено-цифрових символів, '-', '_' або '.', і повинно починатися та закінчуватися буквено-цифровим символом (наприклад, 'MyName', або 'my.name', або '123-abc', регулярний вираз, що використовується для перевірки, це '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') з необовʼязковим префіксом піддомену DNS і '/' (наприклад, 'example.com/MyName') Обовʼязково.

23 - MatchResources

MatchResources вирішує, чи запускати політику контролю доступу до обʼєкта на основі того, чи відповідає він критеріям відповідності. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає має збіг з обома, він виключається)

apiVersion: admissionregistration.k8s.io/v1

import "k8s.io/api/admissionregistration/v1"

MatchResources

MatchResources вирішує, чи запускати політику контролю доступу до обʼєкта на основі того, чи відповідає він критеріям відповідності. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає має збіг з обома, він виключається)


ПолеОпис
excludeResourceRules
NamedRuleWithOperations array
excludeResourceRules описує, які операції над якими ресурсами/субресурсами ValidatingAdmissionPolicy не повинна враховувати. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає обом, він виключається)
matchPolicy
string
matchPolicy визначає, як список "MatchResources" використовується для відповідності вхідним запитам. Дозволені значення: "Exact" або "Equivalent".
  • Exact: відповідність запиту лише якщо він точно відповідає зазначеному правилу. Наприклад, якщо розгортання можна змінювати через apps/v1, apps/v1beta1 та extensions/v1beta1, але "rules" включали лише apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запит до apps/v1beta1 або extensions/v1beta1 не буде надіслано до ValidatingAdmissionPolicy.
  • Equivalent: відповідність запиту, якщо він змінює ресурс, зазначений у правилах, навіть через іншу групу API або версію. Наприклад, якщо розгортання можна змінювати через apps/v1, apps/v1beta1 та extensions/v1beta1, і "rules" включали лише apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запит до apps/v1beta1 або extensions/v1beta1 буде перетворено на apps/v1 і надіслано до ValidatingAdmissionPolicy.
Стандартне значення: "Equivalent"

Можливі значення enum:
  • "Equivalent" означає, що запити повинні бути надіслані до вебхука, якщо вони змінюють ресурс, зазначений у правилах, через іншу групу API або версію.
  • "Exact" означає, що запити повинні бути надіслані до вебхука лише якщо вони точно відповідають заданому правилу.
namespaceSelector
LabelSelector
namespaceSelector вирішує, чи запускати політику контролю допуску до обʼєкта на основі того, чи відповідає простір імен для цього обʼєкта селектору. Якщо обʼєкт сам є простором імен, відповідність перевіряється на object.metadata.labels. Якщо обʼєкт є іншим ресурсом з кластерною областю, політика ніколи не пропускається.

Наприклад, щоб запустити вебхук на будь-яких обʼєктах, простір імен яких не повʼязаний з "runlevel" значенням "0" або "1", ви встановите селектор наступним чином:
      "namespaceSelector": {
        "matchExpressions": [
          {
            "key": "runlevel",
            "operator": "NotIn",
            "values": [
              "0",
              "1"
            ]
          }
        ]
      }
      
Якщо замість цього ви хочете запускати політику лише на обʼєктах, простір імен яких повʼязаний з "environment" значенням "prod" або "staging", ви встановите селектор наступним чином:
      "namespaceSelector": {
        "matchExpressions": [
          {
            "key": "environment",
            "operator": "In",
            "values": [
              "prod",
              "staging"
            ]
          }
        ]
      }
      
Див. https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ для отримання додаткових прикладів селекторів міток.

Стандартно використовується порожній LabelSelector, який відповідає всьому.
objectSelector
LabelSelector
objectSelector вирішує, чи запускати валідацію на основі того, чи має обʼєкт відповідні мітки. objectSelector оцінюється як для oldObject, так і для newObject, які будуть надіслані до cel валідації, і вважається, що він відповідає, якщо будь-який з обʼєктів відповідає селектору. Null обʼєкт (oldObject у випадку створення або newObject у випадку видалення) або обʼєкт, який не може мати мітки (наприклад, DeploymentRollback або PodProxyOptions), не вважається відповідним. Використовуйте objectSelector лише якщо вебхук є опціональним, оскільки кінцеві користувачі можуть пропустити вебхук, встановивши мітки. Стандартно використовується порожній LabelSelector, який відповідає всьому.
resourceRules
NamedRuleWithOperations array
resourceRules описує, які операції над якими ресурсами/підресурсами відповідають ValidatingAdmissionPolicy. Політика враховує операцію, якщо вона відповідає будь-якому правилу.

24 - MicroTime

MicroTime є версією Time з точністю до мікросекунд.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

MicroTime

MicroTime є версією Time з точністю до мікросекунд.


25 - NamedRuleWithOperations

NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.

apiVersion: admissionregistration.k8s.io/v1

import "k8s.io/api/admissionregistration/v1"

NamedRuleWithOperations

NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.


ПолеОпис
apiGroups
масив рядків
apiGroups — це API групи, до яких належать ресурси. '*' означає всі групи. Якщо присутній '*', довжина зрізу повинна бути одна. Обов'язково.
apiVersions
масив рядків
apiVersions — це версії API, до яких належать ресурси. '*' означає всі версії. Якщо присутній '*', довжина зрізу повинна бути одна. Обовʼязково.
operations
масив рядків
operations — це операції, які цікавлять вебхук допуску: CREATE, UPDATE, DELETE, CONNECT або '*' для всіх цих операцій та будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній '*', довжина зрізу повинна бути одна. Обовʼязково.
resourceNames
масив рядків
resourceNames — це необов'язковий білий список імен, до яких застосовується правило. Порожній набір означає, що все дозволено.
resources
масив рядків
resources — це список ресурсів, до яких застосовується правило. Наприклад: 'pods' означає pods. 'pods/log' означає субресурс log для pods. '*' означає всі ресурси, але не субресурси. 'pods/*' означає всі субресурси для pods. '*/scale' означає всі субресурси scale. '*/*' означає всі ресурси та їх субресурси. Якщо присутній символ заміни, правило валідації забезпечить, щоб ресурси не перекривалися. Залежно від обʼєкта, субресурси можуть бути заборонені. Обовʼязково.
scope
string
scope визначає область застосування цього правила. Дійсні значення: "Cluster", "Namespaced" та "*". "Cluster" означає, що правило застосовується лише до ресурсів з областю дії кластера. Обʼєкти API простору імен мають область дії кластера. "Namespaced" означає, що правило застосовується лише до ресурсів з областю дії простору імен. "*" означає, що обмежень за областю дії немає. Субресурси відповідають області дії їх батьківського ресурсу. Стандартне значення: "*".

Можливі значення enum:
  • "*" означає, що включені всі області дії.
  • "Cluster" означає, що область дії обмежена обʼєктами з областю дії кластера. Обʼєкти простору імен мають область дії кластера.
  • "Namespaced" означає, що область дії обмежена обʼєктами з областю дії простору імен.

26 - NodeSelector

Селектор вузлів являє собою об’єднання результатів одного або декількох запитів за мітками щодо набору вузлів; іншими словами, він являє собою об’єднання за оператором OR селекторів, представлених термінами селектора вузлів.

apiVersion: v1

import "k8s.io/api/core/v1"

NodeSelector

Селектор вузлів являє собою об’єднання результатів одного або декількох запитів за мітками щодо набору вузлів; іншими словами, він являє собою об’єднання за оператором OR селекторів, представлених термінами селектора вузлів.


ПолеОпис
nodeSelectorTerms *
NodeSelectorTerm array
Обовʼязково. Список термінів селектора вузлів. Терміни обʼєднуються оператором OR.

27 - NodeSelectorTerm

Селектор вузлів з нульовим або порожнім значенням не відповідає жодному об’єкту. Вимоги до них об’єднуються логічним оператором AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.

apiVersion: v1

import "k8s.io/api/core/v1"

NodeSelectorTerm

Селектор вузлів з нульовим або порожнім значенням не відповідає жодному об’єкту. Вимоги до них об’єднуються логічним оператором AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.


ПолеОпис
matchExpressions
NodeSelectorRequirement array
Список вимог селектора вузлів за мітками вузлів.
matchFields
NodeSelectorRequirement array
Список вимог селектора вузлів за полями вузлів.

28 - NonResourceAttributes

NonResourceAttributes містить атрибути авторизації, доступні для запитів, що не стосуються ресурсів, до інтерфейсу Authorizer

apiVersion: authorization.k8s.io/v1

import "k8s.io/api/authorization/v1"

NonResourceAttributes

NonResourceAttributes містить атрибути авторизації, доступні для запитів, що не стосуються ресурсів, до інтерфейсу Authorizer


ПолеОпис
path
string
path є URL-шляхом запиту
verb
string
verb є стандартним HTTP-дієсловом

29 - NonResourceRule

NonResourceRule містить інформацію, що описує правило для обʼєктів, які не є ресурсами

apiVersion: authorization.k8s.io/v1

import "k8s.io/api/authorization/v1"

NonResourceRule

NonResourceRule містить інформацію, що описує правило для обʼєктів, які не є ресурсами


ПолеОпис
nonResourceURLs
string array
nonResourceURLs є набором часткових URL, до яких користувач повинен мати доступ. Дозволяються * лише як повний, останній крок у шляху. "*" означає всі.
verbs *
string array
verbs є списком Kubernetes non-resource API дієслів, таких як: get, post, put, delete, patch, head, options. "*" означає всі.

30 - ObjectMeta

ObjectMeta містить метадані, які повинні містити всі ресурси, що зберігаються в системі, зокрема всі об’єкти, які створюють користувачі.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

ObjectMeta

ObjectMeta містить метадані, які повинні містити всі ресурси, що зберігаються в системі, зокрема всі об’єкти, які створюють користувачі.


ПолеОпис
annotations
object
Annotations є неструктурованою мапою ключ-значення, збереженою з ресурсом, яку можуть встановлювати зовнішні інструменти для збереження та отримання довільних метаданих. Вони не підлягають запиту і повинні зберігатися при модифікації обʼєктів. Більше інформації: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations
creationTimestamp
Time
CreationTimestamp є відбитком часу, що представляє час сервера, коли цей обʼєкт був створений. Не гарантується, що буде встановлено в порядку "happens-before" для окремих операцій. Клієнти не можуть встановлювати це значення. Представлено у форматі RFC3339 і в UTC. Заповнюється системою. Тільки для читання. Null для списків. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
deletionGracePeriodSeconds
integer
Кількість секунд, дозволених для належного завершення роботи цього обʼєкта перед його видаленням з системи. Встановлюється лише тоді, коли також встановлено deletionTimestamp. Може бути лише скорочено. Тільки для читання.
deletionTimestamp
Time
DeletionTimestamp є датою та часом у форматі RFC 3339, коли цей ресурс буде видалено. Це поле встановлюється сервером, коли користувач запитує належне видалення, і не може бути безпосередньо встановлено клієнтом. Очікується, що ресурс буде видалено (більше не буде видимим у списках ресурсів і не буде доступним за іменем) після часу, зазначеного в цьому полі, коли список завершувачів буде порожнім. Поки список завершувачів містить елементи, видалення блокується. Після встановлення deletionTimestamp це значення не може бути скасовано або встановлено на більш пізній час, хоча його можна скоротити або ресурс може бути видалено раніше цього часу. Наприклад, користувач може запросити видалення поду через 30 секунд. Kubelet реагуватиме, надсилаючи сигнал належного завершення контейнерам у поді. Після цих 30 секунд Kubelet надішле сигнал примусового завершення (SIGKILL) контейнеру і після очищення видалить под з API. У разі мережевих розділень цей обʼєкт може все ще існувати після цього часу, поки адміністратор або автоматизований процес не визначить, що ресурс повністю завершено. Якщо не встановлено, належне видалення обʼєкта не запитувалося. Заповнюється системою при запиті належного видалення. Тільки для читання. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
finalizers
string array
patch strategy: злиття
Повинно бути порожнім перед видаленням обʼєкта з реєстру. Кожен запис є ідентифікатором відповідального компонента, який видалить запис зі списку. Якщо deletionTimestamp обʼєкта не є nil, записи в цьому списку можна лише видаляти. Завершувачі можуть оброблятися та видалятися в будь-якому порядку. Порядок НЕ гарантується, оскільки це створює значний ризик зависання завершувачів. finalizers є спільним полем, будь-який а́ктор з дозволом може змінювати його порядок. Якщо список завершувачів обробляється в порядку, це може призвести до ситуації, коли компонент, відповідальний за перший завершувач у списку, очікує сигналу (значення поля, зовнішня система або інше), створеного компонентом, відповідальним за завершувач пізніше в списку, що призводить до блокування. Без забезпеченого порядку завершувачі можуть вільно впорядковуватися між собою і не піддаються змінам порядку в списку.
generateName
string
GenerateName є необовʼязковим префіксом, який використовується сервером для генерації унікального імені ТІЛЬКИ У РАЗІ, якщо поле Name не було надано. Якщо це поле використовується, імʼя, яке повертається клієнту, буде відрізнятися від переданого імені. Це значення також буде поєднано з унікальним суфіксом. Надане значення має ті ж правила перевірки, що й поле Name, і може бути скорочене на довжину суфікса, необхідного для забезпечення унікальності на сервері. Якщо це поле вказано і згенероване імʼя вже існує, сервер поверне 409. Застосовується лише якщо Name не вказано. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency
generation
integer
Порядковий номер, що представляє конкретне покоління бажаного стану. Заповнюється системою. Тільки для читання.
labels
object
Мапа ключів і значень типу string, яка може використовуватися для організації та категоризації (scope and select) обʼєктів. Може відповідати селекторам контролерів реплікації та сервісів. Більше інформації: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
managedFields
ManagedFieldsEntry array
Поле ManagedFields повʼязує ідентифікатор робочого процесу (workflow-id) та версію з набором полів, які керуються цим робочим процесом. Це переважно призначено для внутрішнього адміністрування, і користувачам, як правило, не потрібно налаштовувати це поле чи розуміти його призначення. Робочим процесом може бути імʼя користувача, назва контролера або назва конкретного шляху застосування, наприклад «ci-cd». Набір полів завжди відповідає тій версії, яку робочий процес використовував під час модифікації обʼєкта.
name
string
Імʼя повинно бути унікальним у межах простору імен. Обовʼязкове при створенні ресурсів, хоча деякі ресурси можуть дозволяти клієнту запитувати генерацію відповідного імені автоматично. Імʼя призначене головним чином для ідемпотентності створення та визначення конфігурації. Не може бути оновлене. Більше інформації: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names
namespace
string
Простір імен визначає область дії, у межах якої кожне імʼя повинно бути унікальним. Порожній простір імен еквівалентний простору імен "default", але "default" є канонічним представленням. Не всі обʼєкти повинні бути обмежені простором імен — значення цього поля для таких обʼєктів буде порожнім. Повинно бути DNS_LABEL. Не може бути оновлене. Більше інформації: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces
ownerReferences
OwnerReference array
patch strategy: merge on key uid
Список обʼєктів, від яких залежить цей обʼєкт. Якщо ВСІ обʼєкти в списку були видалені, цей обʼєкт буде прибраний сміттєзбирачем. Якщо цей обʼєкт керується контролером, то запис у цьому списку вкаже на цей контролер, з полем controller, встановленим у true. Не може бути більше одного керуючого контролера.
resourceVersion
string
Непрозоре значення, яке позначає внутрішню версію цього об’єкта і може використовуватися клієнтами для визначення, коли об’єкти зазнали змін. Може використовуватися для оптимістичної паралельності, виявлення змін та операції спостереження за ресурсом або набором ресурсів. Клієнти повинні розглядати ці значення як непрозорі та передавати їх назад на сервер без змін. Вони можуть бути дійсними лише для певного ресурсу або набору ресурсів. Заповнюється системою. Тільки для читання. Тільки для читання. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
selfLink
string
Застаріле: selfLink є застарілим полем лише для читання, яке більше не заповнюється системою.
uid
string
UID є унікальним у часі та просторі значенням для цього обʼєкта. Зазвичай генерується сервером при успішному створенні ресурсу і не може змінюватися під час операцій PUT. Заповнюється системою. Тільки для читання. Більше інформації: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids

31 - ObjectReference

ObjectReference містить достатньо інформації, щоб ви могли перевірити або змінити об’єкт, на який вона посилається.

apiVersion: v1

import "k8s.io/api/core/v1"

ObjectReference

ObjectReference містить достатньо інформації, щоб ви могли перевірити або змінити об’єкт, на який вона посилається.


ПолеОпис
apiVersion
string
API версія об’єкта, на який посилаються.
fieldPath
string
Якщо посилання стосується частини об’єкта, а не всього об’єкта, цей рядок повинен містити дійсне вираження доступу до поля JSON/Go, наприклад desiredState.manifest.containers[2]. Наприклад, якщо посилання на об’єкт стосується контейнера всередині поду, це може мати значення: "spec.containers{name}" (де "name" відноситься до імені контейнера, який викликав подію) або, якщо ім’я контейнера не вказано, "spec.containers[2]" (контейнер з індексом 2 у цьому поді). Ця синтаксис обраний лише для того, щоб мати чітко визначений спосіб посилання на частину об’єкта.
kind
string
Тип об’єкта, на який посилаються. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
name
string
Ім’я об’єкта, на який посилаються. Більше інформації: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
namespace
string
Простір імен об’єкта, на який посилаються. Більше інформації: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
resourceVersion
string
Конкретна версія ресурсу, на яку посилається це посилання, якщо така є. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
uid
string
UID об’єкта, на який посилаються. Більше інформації: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids

32 - OwnerReference

OwnerReference містить достатньо інформації, щоб ви могли ідентифікувати об’єкт-власник. Об’єкт-власник повинен знаходитися в тому ж просторі імен, що й залежний об’єкт, або бути глобальним, тому поле простору імен відсутнє.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

OwnerReference

OwnerReference містить достатньо інформації, щоб ви могли ідентифікувати об’єкт-власник. Об’єкт-власник повинен знаходитися в тому ж просторі імен, що й залежний об’єкт, або бути глобальним, тому поле простору імен відсутнє.


ПолеОпис
apiVersion *
string
API версія об’єкта, на який посилаються.
blockOwnerDeletion
boolean
Якщо true, AND якщо у власника є завершувач "foregroundDeletion", тоді власника не можна видалити зі сховища ключ-значення, поки це посилання не буде видалено. Див. https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion для того, як збирач сміття взаємодіє з цим полем і забезпечує передній видалення. Стандартне значення — false. Щоб встановити це поле, користувач повинен мати дозвіл "delete" для власника, інакше буде повернуто 422 (Unprocessable Entity).
controller
boolean
Якщо true, це посилання вказує на керуючий контролер.
kind *
string
Kind референта. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
name *
string
Ім’я референта. Більше інформації: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names
uid *
string
UID референта. Більше інформації: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids

33 - ParamKind

ParamKind є кортежем Group Kind та Version.

apiVersion: admissionregistration.k8s.io/v1

import "k8s.io/api/admissionregistration/v1"

ParamKind

ParamKind є кортежем Group Kind та Version.


ПолеОпис
apiVersion
string
apiVersion є версією групи API, до якої належать ресурси. У форматі "group/version". Обовʼязково.
kind
string
kind є видом API, до якого належать ресурси. Обовʼязково.

34 - ParamRef

ParamRef описує, як знайти параметри, які будуть використані як вхідні дані для виразів правил, застосованих політикою.

apiVersion: admissionregistration.k8s.io/v1

import "k8s.io/api/admissionregistration/v1"

ParamRef

ParamRef описує, як знайти параметри, які будуть використані як вхідні дані для виразів правил, застосованих політикою.


ПолеОпис
name
string
name є ім’ям ресурсу, на який посилаються. Одне з полів name або selector повинно бути встановлено, але name і selector є взаємовиключними властивостями. Якщо одне встановлено, інше повинно бути скинуто. Один параметр, який використовується для всіх запитів на допуск, можна налаштувати, встановивши поле name, залишивши selector порожнім і встановивши namespace, якщо paramKind обмежений простором імен.
namespace
string
namespace є простором імен ресурсу, на який посилаються. Дозволяє обмежити пошук параметрів до конкретного простору імен. Застосовується до обох полів name і selector. Параметр для конкретного простору імен можна використовувати, вказавши paramKind, обмежений простором імен, у політиці та залишивши це поле порожнім.
  • Якщо paramKind обмежений кластером, це поле МАЄ бути скинуто. Встановлення цього поля призводить до помилки конфігурації.
  • Якщо paramKind обмежений простором імен, простір імен об’єкта, що оцінюється для допуску, буде використано, коли це поле залишено порожнім. Будьте обережні, якщо це поле залишено порожнім, зв’язування не повинно відповідати жодним ресурсам, обмеженим кластером, що призведе до помилки.
parameterNotFoundAction
string
parameterNotFoundAction контролює поведінку зв’язування, коли ресурс існує, а name або selector дійсні, але немає параметрів, що відповідають зв’язуванню. Якщо значення встановлено на Allow, то відсутність відповідних параметрів буде розглядатися як успішна перевірка зв’язування. Якщо встановлено на Deny, то відсутність відповідних параметрів підпадатиме під failurePolicy політики. Дозволені значення: Allow або Deny. Обов’язково.
selector
LabelSelector
selector можна використовувати для порівняння кількох об’єктів param на основі їхніх міток. Вкажіть selector: {} для відповідності всім ресурсам ParamKind. Якщо знайдено кілька параметрів, вони всі оцінюються з виразами політики, а результати об’єднуються за допомогою AND. Одне з полів name або selector повинно бути встановлено, але name і selector є взаємовиключними властивостями. Якщо одне встановлено, інше повинно бути скинуто.

35 - Patch

Patch надається для того, щоб надати конкретне імʼя та тип тілу запиту Kubernetes PATCH.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

Patch

Patch надається для того, щоб надати конкретне імʼя та тип тілу запиту Kubernetes PATCH.


36 - PolicyRule

PolicyRule містить інформацію, яка описує правило політики, але не містить інформації про те, до кого застосовується правило або до якого простору імен застосовується правило.

apiVersion: rbac.authorization.k8s.io/v1

import "k8s.io/api/rbac/v1"

PolicyRule

PolicyRule містить інформацію, яка описує правило політики, але не містить інформації про те, до кого застосовується правило або до якого простору імен застосовується правило.


ПолеОпис
apiGroups
string array
APIGroups є назвою APIGroup, яка містить ресурси. Якщо вказано кілька API груп, будь-яка дія, запитана для одного з перерахованих ресурсів у будь-якій API групі, буде дозволена. "" представляє основну API групу, а "*" представляє всі API групи.
nonResourceURLs
string array
NonResourceURLs є набором часткових URL-адрес, до яких користувач повинен мати доступ. Дозволяються * як повний, кінцевий крок у шляху. Оскільки URL-адреси не є іменованими, це поле застосовується лише до ClusterRoles, на які посилаються ClusterRoleBinding. Правила можуть застосовуватися або до ресурсів API (наприклад, "pods" або "secrets"), або до шляхів URL-адрес, що не є ресурсами (наприклад, "/api"), але не до обох одночасно.
resourceNames
string array
ResourceNames є необовʼязковим білим списком імен, до яких застосовується правило. Порожній набір означає, що все дозволено.
resources
string array
Resources є списком ресурсів, до яких застосовується правило. '*' представляє всі ресурси.
verbs *
string array
Verbs є списком дієслів, які застосовуються до всіх ResourceKinds, що містяться в цьому правилі. '*' представляє всі дієслова.

37 - Preconditions

Preconditions повинні бути виконані перед виконанням операції (оновлення, видалення тощо).

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

Preconditions

Preconditions повинні бути виконані перед виконанням операції (оновлення, видалення тощо).


ПолеОпис
resourceVersion
string
Вказує цільовий ResourceVersion
uid
string
Вказує цільовий UID.

38 - Quantity

Quantity — це представлення числа у форматі з фіксованою комою. Воно забезпечує зручну серіалізацію та десеріалізацію у форматах JSON та YAML, а також має доступ до String() та AsInt64().

Формат серіалізації такий:

<quantity>        ::= <signedNumber><suffix>

  (Зверніть увагу, що <suffix> може бути порожнім, як у випадку з "" у <decimalSI>.)

<digit>           ::= 0 | 1 | ... | 9
<digits>          ::= <digit> | <digit><digits>
<number>          ::= <digits> | <digits>.<digits> | <digits>. | .<digits>
<sign>            ::= "+" | "-"
<signedNumber>    ::= <number> | <sign><number>
<suffix>          ::= <binarySI> | <decimalExponent> | <decimalSI>
<binarySI>        ::= Ki | Mi | Gi | Ti | Pi | Ei

  (Міжнародна система одиниць; Див.: http://physics.nist.gov/cuu/Units/binary.html)

<decimalSI>       ::= m | "" | k | M | G | T | P | E

  (Зверніть увагу, що 1024 = 1Ki, але 1000 = 1k; Не ми обирали капіталізацію.)

<decimalExponent> ::= "e" <signedNumber> | "E" <signedNumber>

Незалежно від того, яка з трьох форм експоненти використовується, жодна величина не може перевищувати 2^63-1 за абсолютним значенням, а також не може мати більше 3 знаків після коми. Числа, що перевищують ці межі або є точнішими, будуть обмежені або округлені в більшу сторону. (Наприклад: 0,1 м буде округлено до 1 м.) У майбутньому ці обмеження можуть бути розширені, якщо виникне потреба у більших або менших величинах.

Коли Quantity аналізується з рядка, воно запамʼятовує тип суфікса, який у нього був, і використовує той самий тип під час серіалізації.

Перед серіалізацією Quantity буде приведено до "канонічної форми". Це означає, що експонента/суфікс буде відрегульовано вгору або вниз (з відповідним збільшенням або зменшенням мантиси) таким чином:

  • Точність не буде втрачена
  • Дробові цифри не виводяться — показник ступеня (або суфікс) є максимально великим. Знак буде опущено, якщо число не відʼємне.

Приклади:

  • 1.5 буде серіалізовано як "1500m"
  • 1.5Gi буде серіалізовано як "1536Mi"

Зверніть увагу, що величина НІКОЛИ не буде внутрішньо представлена як число з рухомою комою. Саме в цьому і полягає суть цього підходу.

Неканонічні значення все ще будуть розпізнаватися, якщо вони правильно сформовані, але будуть повторно виведені у своїй канонічній формі. (Тому завжди використовуйте канонічну форму або не порівнюйте їх.)

Цей формат розроблено з метою ускладнити використання цих чисел без написання спеціального коду для їх обробки, в надії, що це спонукає розробників також застосовувати реалізацію з фіксованою комою.

apiVersion: resource

import "k8s.io/apimachinery/pkg/api/resource"

Quantity

Quantity — це представлення числа у форматі з фіксованою комою. Воно забезпечує зручну серіалізацію та десеріалізацію у форматах JSON та YAML, а також має доступ до String() та AsInt64().

Формат серіалізації такий:

<quantity>        ::= <signedNumber><suffix>

  (Зверніть увагу, що <suffix> може бути порожнім, як у випадку з "" у <decimalSI>.)

<digit>           ::= 0 | 1 | ... | 9
<digits>          ::= <digit> | <digit><digits>
<number>          ::= <digits> | <digits>.<digits> | <digits>. | .<digits>
<sign>            ::= "+" | "-"
<signedNumber>    ::= <number> | <sign><number>
<suffix>          ::= <binarySI> | <decimalExponent> | <decimalSI>
<binarySI>        ::= Ki | Mi | Gi | Ti | Pi | Ei

  (Міжнародна система одиниць; Див.: http://physics.nist.gov/cuu/Units/binary.html)

<decimalSI>       ::= m | "" | k | M | G | T | P | E

  (Зверніть увагу, що 1024 = 1Ki, але 1000 = 1k; Не ми обирали капіталізацію.)

<decimalExponent> ::= "e" <signedNumber> | "E" <signedNumber>

Незалежно від того, яка з трьох форм експоненти використовується, жодна величина не може перевищувати 2^63-1 за абсолютним значенням, а також не може мати більше 3 знаків після коми. Числа, що перевищують ці межі або є точнішими, будуть обмежені або округлені в більшу сторону. (Наприклад: 0,1 м буде округлено до 1 м.) У майбутньому ці обмеження можуть бути розширені, якщо виникне потреба у більших або менших величинах.

Коли Quantity аналізується з рядка, воно запамʼятовує тип суфікса, який у нього був, і використовує той самий тип під час серіалізації.

Перед серіалізацією Quantity буде приведено до "канонічної форми". Це означає, що експонента/суфікс буде відрегульовано вгору або вниз (з відповідним збільшенням або зменшенням мантиси) таким чином:

  • Точність не буде втрачена
  • Дробові цифри не виводяться — показник ступеня (або суфікс) є максимально великим. Знак буде опущено, якщо число не відʼємне.

Приклади:

  • 1.5 буде серіалізовано як "1500m"
  • 1.5Gi буде серіалізовано як "1536Mi"

Зверніть увагу, що величина НІКОЛИ не буде внутрішньо представлена як число з рухомою комою. Саме в цьому і полягає суть цього підходу.

Неканонічні значення все ще будуть розпізнаватися, якщо вони правильно сформовані, але будуть повторно виведені у своїй канонічній формі. (Тому завжди використовуйте канонічну форму або не порівнюйте їх.)

Цей формат розроблено з метою ускладнити використання цих чисел без написання спеціального коду для їх обробки, в надії, що це спонукає розробників також застосовувати реалізацію з фіксованою комою.


39 - ResourceAttributes

ResourceAttributes включає атрибути авторизації, доступні для запитів ресурсів до інтерфейсу Authorizer

apiVersion: authorization.k8s.io/v1

import "k8s.io/api/authorization/v1"

ResourceAttributes

ResourceAttributes включає атрибути авторизації, доступні для запитів ресурсів до інтерфейсу Authorizer


ПолеОпис
fieldSelector
FieldSelectorAttributes
fieldSelector описує обмеження доступу на основі поля. Воно може лише обмежувати доступ, а не розширювати його.
group
string
group є API Group ресурсу. "*" означає всі.
labelSelector
LabelSelectorAttributes
labelSelector описує обмеження доступу на основі міток. Воно може лише обмежувати доступ, а не розширювати його.
name
string
name є імʼям ресурсу, до якого запитується доступ для "get" або видаляється для "delete". "" (порожнє) означає всі.
namespace
string
namespace є простором імен дії, до якої запитується доступ. Наразі немає різниці між відсутністю простору імен та всіма просторами імен "" (порожнє) зазвичай для LocalSubjectAccessReviews "" (порожнє) є порожнім для ресурсів з обмеженням на кластер "" (порожнє) означає "всі" для ресурсів з обмеженням на простір імен з SubjectAccessReview або SelfSubjectAccessReview
resource
string
resource є одним з наявних типів ресурсів. "*" означає всі.
subresource
string
subresource є одним з наявних типів ресурсів. "" означає відсутність.
verb
string
verb є дією API ресурсу Kubernetes, наприклад: get, list, watch, create, update, delete, proxy. "*" означає всі.
version
string
version є версією API ресурсу. "*" означає всі.

40 - ResourceRule

ResourceRule є списком дій, які субʼєкт може виконувати над ресурсами. Порядок у списку не має значення, можуть бути дублікати, і можливо, що список є неповний.

apiVersion: authorization.k8s.io/v1

import "k8s.io/api/authorization/v1"

ResourceRule

ResourceRule є списком дій, які субʼєкт може виконувати над ресурсами. Порядок у списку не має значення, можуть бути дублікати, і можливо, що список є неповний.


ПолеОпис
apiGroups
string array
apiGroups є імʼям APIGroup, яка містить ресурси. Якщо вказано кілька API груп, будь-яка дія, запитана для одного з перерахованих ресурсів у будь-якій API групі, буде дозволена. "*" означає всі.
resourceNames
string array
resourceNames є необовʼязковим білим списком імен, до яких застосовується правило. Порожній набір означає, що все дозволено. "*" означає всі.
resources
string array
resources є списком ресурсів, до яких застосовується правило. "*" означає всі в зазначених apiGroups. "*/foo" представляє підресурс 'foo' для всіх ресурсів у зазначених apiGroups.
verbs *
string array
verbs є списком дій API ресурсів Kubernetes, таких як: get, list, watch, create, update, delete, proxy. "*" означає всі.

41 - RoleRef

RoleRef містить інформацію, яка вказує на роль, що використовується

apiVersion: rbac.authorization.k8s.io/v1

import "k8s.io/api/rbac/v1"

RoleRef

RoleRef містить інформацію, яка вказує на роль, що використовується


ПолеОпис
apiGroup
string
APIGroup є групою для ресурсу, на який посилаються
kind *
string
Kind є типом ресурсу, на який посилаються
name *
string
Name є імʼям ресурсу, на який посилаються

42 - RuleWithOperations

RuleWithOperations є кортежем Operations та Resources. Рекомендується переконатися, що всі розширення кортежу є дійсними.

apiVersion: admissionregistration.k8s.io/v1

import "k8s.io/api/admissionregistration/v1"

RuleWithOperations

RuleWithOperations є кортежем Operations та Resources. Рекомендується переконатися, що всі розширення кортежу є дійсними.


ПолеОпис
apiGroups
string array
apiGroups є групами API, до яких належать ресурси. '*' означає всі групи. Якщо присутній '*', довжина зрізу повинна бути одна. Обовʼязково.
apiVersions
string array
apiVersions є версіями API, до яких належать ресурси. '*' означає всі версії. Якщо присутній '*', довжина зрізу повинна бути одна. Обовʼязково.
operations
string array
operations є операціями, які цікавлять хук допуску — CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій та будь-яких майбутніх операцій admission, які будуть додані. Якщо присутній '*', довжина зрізу повинна бути одна. Обовʼязково.
resources
string array
resources є списком ресурсів, до яких застосовується правило. Наприклад: 'pods' означає pods. 'pods/log' означає субресурс log для pods. '*' означає всі ресурси, але не субресурси. 'pods/*' означає всі субресурси для pods. '*/scale' означає всі субресурси scale. '*/ *' означає всі ресурси та їх субресурси. Якщо присутній символ підстановки, правило валідації забезпечить, що ресурси не перекриваються. Залежно від об'єкта, субресурси можуть бути заборонені. Обовʼязково.
scope
string
scope визначає область дії цього правила. Дійсні значення: "Cluster", "Namespaced" та "*" "Cluster" означає, що лише ресурси з областю кластера відповідатимуть цьому правилу. Обʼєкти API простору імен є ресурсами з областю дії кластера. "Namespaced" означає, що лише ресурси з областю дії простору імен відповідатимуть цьому правилу. "*" означає, що обмежень за областю немає. Субресурси відповідають області свого батьківського ресурсу. Стандартне значення — "*".

Можливі значення enum:
  • "*" означає, що включені всі області.
  • "Cluster" означає, що область обмежена ресурсами з областю кластера. Обʼєкти простору імен є ресурсами з областю кластера.
  • "Namespaced" означає, що область обмежена ресурсами з областю простору імен.

43 - Scale

Scale представляє запит на масштабування ресурсу.

apiVersion: autoscaling/v1

import "k8s.io/api/autoscaling/v1"

Scale

Scale представляє запит на масштабування ресурсу.


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення об'єкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources.
kind
string
Kind є рядком, що представляє REST-ресурс, який цей обʼєкт представляє. Сервери можуть визначати це з точки доступу, до якої клієнт надсилає запити. Не можна оновлювати. У CamelCase. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds.
metadata
ObjectMeta
Стандартні метадані обʼєкта; Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
spec
ScaleSpec
spec визначає поведінку масштабування. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
status
ScaleStatus
status визначає поточний стан масштабування. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Тільки для читання.

ScaleSpec

ScaleSpec описує атрибути субресурсу масштабування.


ПолеОпис
replicas
integer
replicas є бажаною кількістю екземплярів для масштабованого обʼєкта.

ScaleStatus

ScaleStatus описує поточний стан субресурсу масштабування.


ПолеОпис
replicas *
integer
replicas є фактичною кількістю спостережуваних екземплярів масштабованого обʼєкта.
selector
string
selector є запитом міток для подів, які повинні відповідати кількості реплік. Це те саме, що і селектор міток, але у форматі рядка, щоб уникнути інспекції клієнтами. Рядок буде у тому ж форматі, що й синтаксис параметра запиту. Більше інформації про селектори міток: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/

44 - SelfSubjectAccessReview

SelfSubjectAccessReview перевіряє, чи може поточний користувач виконати дію. Не заповнення spec.namespace означає "у всіх просторах імен". Self є особливим випадком, оскільки користувачі завжди повинні мати можливість перевірити, чи можуть вони виконати дію

apiVersion: authorization.k8s.io/v1

import "k8s.io/api/authorization/v1"

SelfSubjectAccessReview

SelfSubjectAccessReview перевіряє, чи може поточний користувач виконати дію. Не заповнення spec.namespace означає "у всіх просторах імен". Self є особливим випадком, оскільки користувачі завжди повинні мати можливість перевірити, чи можуть вони виконати дію


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind
string
Kind є рядком, що представляє REST-ресурс, який цей обʼєкт представляє. Сервери можуть визначати це з точки доступу, до якої клієнт надсилає запити. Не можна оновлювати. У CamelCase. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ObjectMeta
Метадані є стандартними метаданими списку. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec *
SelfSubjectAccessReviewSpec
spec містить інформацію про запит, що оцінюється. user та groups повинні бути порожніми
status
SubjectAccessReviewStatus
status заповнюється сервером і вказує, чи дозволено запит чи ні

SelfSubjectAccessReviewSpec

SelfSubjectAccessReviewSpec описує запит на доступ. Точно один з resourceAttributes або nonResourceAttributes повинен бути встановлений


ПолеОпис
nonResourceAttributes
NonResourceAttributes
nonResourceAttributes описує інформацію для запиту доступу до не-ресурсу
resourceAttributes
ResourceAttributes
resourceAttributes описує інформацію для запиту доступу до ресурсу

45 - SelfSubjectReview

SelfSubjectReview містить інформацію про користувача, яку kube-apiserver має про користувача, який робить цей запит. При використанні імперсоніфікації користувачі отримають інформацію про користувача, якого імітують. Якщо використовується імітація або автентифікація за заголовком запиту, будь-які додаткові ключі будуть ігнорувати регістр і повертатися у нижньому регістрі.

apiVersion: authentication.k8s.io/v1

import "k8s.io/api/authentication/v1"

SelfSubjectReview

SelfSubjectReview містить інформацію про користувача, яку kube-apiserver має про користувача, який робить цей запит. При використанні імперсоніфікації користувачі отримають інформацію про користувача, якого імітують. Якщо використовується імітація або автентифікація за заголовком запиту, будь-які додаткові ключі будуть ігнорувати регістр і повертатися у нижньому регістрі.


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind
string
Kind є рядком, що представляє REST-ресурс, який цей обʼєкт представляє. Сервери можуть визначати це з точки доступу, до якої клієнт надсилає запити. Не можна оновлювати. У CamelCase. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ObjectMeta
Метадані є стандартними метаданими обʼєкта. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
status
SelfSubjectReviewStatus
status заповнюється сервером і містить атрибути користувача.

SelfSubjectReviewStatus

SelfSubjectReviewStatus заповнюється kube-apiserver і надсилається назад користувачу.


ПолеОпис
userInfo
UserInfo
userInfo є набором атрибутів, що належать користувачу, який робить цей запит.

46 - SelfSubjectRulesReview

SelfSubjectRulesReview перераховує набір дій, які поточний користувач може виконувати в межах простору імен. Отриманий список дій може бути неповним залежно від режиму авторизації сервера та будь-яких помилок, що виникли під час оцінки. SelfSubjectRulesReview слід використовувати інтерфейсами користувача для показу/приховування дій або для швидкого дозволу кінцевому користувачу оцінити свої права. Його НЕ слід використовувати зовнішніми системами для прийняття рішень про авторизацію, оскільки це викликає проблеми з плутаним довіреним, часом життя кешу/скасуванням та правильністю. SubjectAccessReview та LocalAccessReview є правильним способом делегування рішень про авторизацію серверу API.

apiVersion: authorization.k8s.io/v1

import "k8s.io/api/authorization/v1"

SelfSubjectRulesReview

SelfSubjectRulesReview перераховує набір дій, які поточний користувач може виконувати в межах простору імен. Отриманий список дій може бути неповним залежно від режиму авторизації сервера та будь-яких помилок, що виникли під час оцінки. SelfSubjectRulesReview слід використовувати інтерфейсами користувача для показу/приховування дій або для швидкого дозволу кінцевому користувачу оцінити свої права. Його НЕ слід використовувати зовнішніми системами для прийняття рішень про авторизацію, оскільки це викликає проблеми з плутаним довіреним, часом життя кешу/скасуванням та правильністю. SubjectAccessReview та LocalAccessReview є правильним способом делегування рішень про авторизацію серверу API.


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind
string
Kind є рядком, що представляє REST-ресурс, який цей обʼєкт представляє. Сервери можуть визначати це з точки доступу, до якої клієнт надсилає запити. Не можна оновлювати. У CamelCase. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ObjectMeta
Метадані є стандартними метаданими обʼєкта. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec *
SelfSubjectRulesReviewSpec
spec містить інформацію про запит, що оцінюється.
status
SubjectRulesReviewStatus
status заповнюється сервером і вказує набір дій, які користувач може виконувати.

SelfSubjectRulesReviewSpec

SelfSubjectRulesReviewSpec визначає специфікацію для SelfSubjectRulesReview.


ПолеОпис
namespace
string
namespace для оцінки правил. Обовʼязково.

47 - ServerAddressByClientCIDR

ServerAddressByClientCIDR допомагає клієнту визначити адресу сервера, яку вони повинні використовувати, залежно від clientCIDR, з яким вони збігаються.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

ServerAddressByClientCIDR

ServerAddressByClientCIDR допомагає клієнту визначити адресу сервера, яку вони повинні використовувати, залежно від clientCIDR, з яким вони збігаються.


ПолеОпис
clientCIDR *
string
CIDR, з яким клієнти можуть порівняти свою IP-адресу, щоб визначити адресу сервера, яку вони повинні використовувати.
serverAddress *
string
Адреса цього сервера, підходяща для клієнта, який відповідає вищезгаданому CIDR. Це може бути імʼя хоста, імʼя хоста:порт, IP або IP:порт.

48 - ServiceReference

ServiceReference містить посилання на Service.legacy.k8s.io

apiVersion: admissionregistration.k8s.io/v1

import "k8s.io/api/admissionregistration/v1"

ServiceReference

ServiceReference містить посилання на Service.legacy.k8s.io


ПолеОпис
name *
string
name є імʼям сервісу. Обовʼязково
namespace *
string
namespace є простором імен сервісу. Обовʼязково
path
string
path є необовʼязковим URL-шляхом, який буде надіслано в будь-якому запиті до цього сервісу.
port
integer
port є портом на сервісі, який обслуговує вебхук. Зазвичай 443 для зворотної сумісності. port повинен бути дійсним номером порту (1-65535, включно).

49 - ShardInfo

ShardInfo описує селектор шарда, який був застосований для отримання списку. Його наявність у відповіді списку вказує на те, що список є відфільтрованою підмножиною.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

ShardInfo

ShardInfo описує селектор шарда, який був застосований для отримання списку. Його наявність у відповіді списку вказує на те, що список є відфільтрованою підмножиною.


ПолеОпис
selector *
string
selector є рядком селектора шарда з запиту, який повертається назад, щоб клієнти могли перевірити, який шард вони отримали, і обʼєднати відповіді з кількох шардів.

50 - Status

Status є значенням, що повертається для викликів, які не повертають інші обʼєкти.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

Status

Status є значенням, що повертається для викликів, які не повертають інші обʼєкти.


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
code
integer
Пропонований HTTP код повернення для цього статусу, 0 якщо не встановлено.
details
StatusDetails
Розширені дані, повʼязані з причиною. Кожна причина може визначати свої власні розширені деталі. Це поле є необовʼязковим, і дані, що повертаються, не гарантують відповідність будь-якій схемі, окрім тієї, що визначена типом причини.
kind
string
Kind є рядковим значенням, що представляє REST ресурс, який цей обʼєкт представляє. Сервери можуть визначати це з кінцевої точки, до якої клієнт надсилає запити. Не можна оновлювати. У CamelCase. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
message
string
Зрозумілий для людини опис статусу цієї операції.
metadata
ListMeta
Стандартні метадані списку. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
reason
string
Опис того, чому ця операція знаходиться в статусі "Failure" в форматі придатному для машинної обробки. Якщо це значення порожнє, інформація недоступна. Reason уточнює HTTP код статусу, але не перевизначає його.
status
string
Статус операції. Одне з: "Success" або "Failure". Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

51 - StatusCause

StatusCause надає більше інформації про помилку api.Status, включаючи випадки, коли виникає кілька помилок.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

StatusCause

StatusCause надає більше інформації про помилку api.Status, включаючи випадки, коли виникає кілька помилок.


ПолеОпис
field
string
Поле ресурсу, яке спричинило цю помилку, як воно названо у його JSON-серіалізації. Може включати крапкову та постфіксну нотацію для вкладених атрибутів. Масиви нумеруються з нуля. Поля можуть зʼявлятися більше одного разу в масиві причин через наявність кількох помилок у полях. Необовʼязково. Приклади:
  • "name" — поле "name" у поточному ресурсі
  • "items[0].name" — поле "name" у першому елементі масиву "items"
message
string
Зрозумілий для людини опис причини помилки. Це поле може бути представлене читачеві без змін.
reason
string
Опис причини в форматі, придатному для машинної обробки. Якщо це значення порожнє, інформація недоступна.

52 - StatusDetails

StatusDetails є набором додаткових властивостей, які МОЖУТЬ бути встановлені сервером для надання додаткової інформації про відповідь. Поле Reason обʼєкта Status визначає, які атрибути будуть встановлені. Клієнти повинні ігнорувати поля, які не відповідають визначеному типу кожного атрибута, і повинні припускати, що будь-який атрибут може бути порожнім, недійсним або недостатньо визначеним.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

StatusDetails

StatusDetails є набором додаткових властивостей, які МОЖУТЬ бути встановлені сервером для надання додаткової інформації про відповідь. Поле Reason обʼєкта Status визначає, які атрибути будуть встановлені. Клієнти повинні ігнорувати поля, які не відповідають визначеному типу кожного атрибута, і повинні припускати, що будь-який атрибут може бути порожнім, недійсним або недостатньо визначеним.


ПолеОпис
causes
масив StatusCause
Масив Causes включає більше деталей, повʼязаних з помилкою StatusReason. Не всі StatusReasons можуть надавати детальні причини.
group
string
Атрибут group ресурсу, повʼязаного з помилкою StatusReason.
kind
string
Атрибут kind ресурсу, повʼязаного з помилкою StatusReason. У деяких операціях може відрізнятися від запитаного ресурсу Kind. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
name
string
Атрибут name ресурсу, повʼязаного з помилкою StatusReason (коли є одне імʼя, яке можна описати).
retryAfterSeconds
integer
Якщо вказано, час у секундах до повторної спроби операції. Деякі помилки можуть вказувати, що клієнт повинен виконати альтернативну дію — для цих помилок це поле може вказувати, скільки часу чекати перед виконанням альтернативної дії.
uid
string
UID ресурсу. (коли є один ресурс, який можна описати). Більше інформації: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids

53 - Subject

Subject містить посилання на обʼєкт або ідентичності користувачів, до яких застосовується привʼязка ролі. Це може бути пряме посилання на обʼєкт API або значення для не-обʼєктів, таких як імена користувачів і груп.

apiVersion: rbac.authorization.k8s.io/v1

import "k8s.io/api/rbac/v1"

Subject

Subject містить посилання на обʼєкт або ідентичності користувачів, до яких застосовується привʼязка ролі. Це може бути пряме посилання на обʼєкт API або значення для не-обʼєктів, таких як імена користувачів і груп.


ПолеОпис
apiGroup
string
APIGroup містить групу API для посилання на субʼєкт. Зазвичай "" для субʼєктів ServiceAccount. Стандартно "rbac.authorization.k8s.io" для субʼєктів User і Group.
kind *
string
Тип обʼєкта, на який посилається. Значення, визначені цією групою API, це "User", "Group" і "ServiceAccount". Якщо авторизатор не розпізнає значення типу, авторизатор повинен повідомити про помилку.
name *
string
Імʼя обʼєкта, на який посилається.
namespace
string
Простір імен обʼєкта, на який посилається. Якщо тип обʼєкта не є просторовим, наприклад "User" або "Group", і це значення не порожнє, авторизатор повинен повідомити про помилку.

54 - SubjectAccessReview

SubjectAccessReview перевіряє, чи може користувач або група виконати певну дію.

apiVersion: authorization.k8s.io/v1

import "k8s.io/api/authorization/v1"

SubjectAccessReview

SubjectAccessReview перевіряє, чи може користувач або група виконати певну дію.


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind
string
Kind є рядковим значенням, що представляє REST ресурс, який цей обʼєкт представляє. Сервери можуть визначати це з кінцевої точки, до якої клієнт надсилає запити. Не можна оновлювати. У CamelCase. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ObjectMeta
metadata є стандартними метаданими списку. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec *
SubjectAccessReviewSpec
spec містить інформацію про запит, що оцінюється
status
SubjectAccessReviewStatus
status заповнюється сервером і вказує, чи дозволено запит чи ні

SubjectAccessReviewSpec

SubjectAccessReviewSpec є описом запиту на доступ. Точнісінько одне з полів resourceAttributes або nonResourceAttributes повинно бути встановлено.


ПолеОпис
extra
object
extra відповідає методу user.Info.GetExtra() з автентифікатора. Оскільки це є вхідними даними для авторизатора, тут потрібно застосувати рефлексію.
groups
string array
groups є групами, для яких ви перевіряєте доступ.
nonResourceAttributes
NonResourceAttributes
nonResourceAttributes описує інформацію для запиту на доступ до не-ресурсу
resourceAttributes
ResourceAttributes
resourceAttributes описує інформацію для запиту на доступ до ресурсу
uid
string
uid містить інформацію про користувача, який робить запит.
user
string
user є користувачем, для якого ви перевіряєте доступ. Якщо ви вказуєте "User", але не "Groups", то це інтерпретується як "Що якщо користувач не є членом жодної групи".

SubjectAccessReviewStatus

SubjectAccessReviewStatus


ПолеОпис
allowed *
boolean
allowed є обовʼязковим. True, якщо дія дозволена, false в іншому випадку.
denied
boolean
denied є необовʼязковим. True, якщо дія буде заборонена, false в іншому випадку. Якщо allowed є false і denied є false, то авторизатор не має думки щодо того, чи дозволяти дію. Denied не може бути true, якщо Allowed є true.
evaluationError
string
evaluationError є індикацією того, що під час перевірки авторизації сталася помилка. Можливо отримати помилку і все ж мати можливість визначити статус авторизації. Наприклад, RBAC може не мати ролі, але достатньо ролей все ще присутні і привʼязані для оцінки запиту.
reason
string
reason є необовʼязковим. Вказує, чому запит був дозволений або заборонений.

55 - SubjectRulesReviewStatus

SubjectRulesReviewStatus містить результат перевірки правил. Ця перевірка може бути неповною залежно від набору авторизаторів, з якими налаштований сервер, та будь-яких помилок, що виникли під час оцінки. Оскільки правила авторизації є адитивними, якщо правило зʼявляється в списку, можна вважати, що субʼєкт має цей дозвіл, навіть якщо список неповний.

apiVersion: authorization.k8s.io/v1

import "k8s.io/api/authorization/v1"

SubjectRulesReviewStatus

SubjectRulesReviewStatus містить результат перевірки правил. Ця перевірка може бути неповною залежно від набору авторизаторів, з якими налаштований сервер, та будь-яких помилок, що виникли під час оцінки. Оскільки правила авторизації є адитивними, якщо правило зʼявляється в списку, можна вважати, що субʼєкт має цей дозвіл, навіть якщо список неповний.


ПолеОпис
evaluationError
string
evaluationError може зʼявлятися у поєднанні з Rules. Це вказує на те, що під час оцінки правил сталася помилка, наприклад, авторизатор не підтримує оцінку правил, і ResourceRules та/або NonResourceRules можуть бути неповними.
incomplete *
boolean
incomplete є true, коли правила, повернені цим викликом, є неповними. Це найчастіше зустрічається, коли авторизатор, такий як зовнішній авторизатор, не підтримує оцінку правил.
nonResourceRules *
NonResourceRule array
nonResourceRules є списком дій, які субʼєкт може виконувати на не-ресурсах. Порядок у списку не має значення, може містити дублікати і, можливо, бути неповним.
resourceRules *
ResourceRule array
resourceRules є списком дій, які субʼєкт може виконувати на ресурсах. Порядок у списку не має значення, може містити дублікати і, можливо, бути неповним.

56 - Time

Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Надаються обгортки для багатьох фабричних методів, які пропонує пакет time.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

Time

Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. В комплекті з пакунком time надаються обгортки для багатьох методів фабрики.


57 - TokenReview

TokenReview намагається автентифікувати токен для відомого користувача. Примітка: запити TokenReview можуть кешуватися втулком веб-хука автентифікації токенів у kube-apiserver.

apiVersion: authentication.k8s.io/v1

import "k8s.io/api/authentication/v1"

TokenReview

TokenReview намагається автентифікувати токен для відомого користувача. Примітка: запити TokenReview можуть кешуватися втулком веб-хука автентифікації токенів у kube-apiserver.


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind
string
Kind визначає тип REST-ресурсу, який представляє цей обʼєкт. Сервери можуть визначати його з точки доступу, до якої клієнт надсилає запити. Не можна оновлювати. У CamelCase. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ObjectMeta
metadata є стандартною метаданою обʼєкта. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec *
TokenReviewSpec
spec містить інформацію про запит, що оцінюється
status
TokenReviewStatus
status заповнюється сервером і вказує, чи можна автентифікувати запит.

TokenReviewSpec

TokenReviewSpec є описом запиту на автентифікацію токена.


ПолеОпис
audiences
string array
audiences є списком ідентифікаторів, з якими ідентифікується сервер ресурсів, що надав цей токен. Автентифікатори токенів, що підтримують audience, перевірять, чи призначений токен хоча б для однієї з аудиторій у цьому списку. Якщо аудиторії не вказано, стандартною буде аудиторія сервера API Kubernetes.
token *
string
token є непрозорим токеном на предʼявника.

TokenReviewStatus

TokenReviewStatus є результатом запиту на автентифікацію токена.


ПолеОпис
audiences
string array
audiences є ідентифікаторами аудиторії, обраними автентифікатором, які сумісні як з TokenReview, так і з токеном. Ідентифікатором є будь-який ідентифікатор, що знаходиться на перетині аудиторій TokenReviewSpec та аудиторій токена. Клієнт API TokenReview, який встановлює поле spec.audiences, повинен перевірити, що сумісний ідентифікатор аудиторії повертається в полі status.audiences, щоб переконатися, що сервер TokenReview підтримує аудиторії. Якщо TokenReview повертає порожнє поле status.audience, де status.authenticated дорівнює "true", токен дійсний для аудиторії сервера API Kubernetes.
authenticated
boolean
authenticated вказує, що токен був повʼязаний з відомим користувачем.
error
string
error вказує, що токен не вдалося перевірити
user
UserInfo
user є UserInfo, повʼязаним із наданим токеном.

58 - Toleration

Под, до якого прикріплено цей Toleration, толерує будь-який taint, що відповідає трійці <key,value,effect> за допомогою оператора <operator>.

apiVersion: v1

import "k8s.io/api/core/v1"

Toleration

Под, до якого прикріплено цей Toleration, толерує будь-який taint, що відповідає трійці <key,value,effect> за допомогою оператора <operator>.


ПолеОпис
effect
string
Effect вказує ефект taint, який потрібно співставити. Порожнє значення означає співставлення всіх ефектів taint. Якщо вказано, допустимі значення: NoSchedule, PreferNoSchedule та NoExecute.

Можливі значення enum:
  • "NoExecute" Виселити будь-які вже запущені поди, які не толерують taint. Наразі застосовується NodeController.
  • "NoSchedule" Не дозволяти новим подам плануватися на вузол, якщо вони не толерують taint, але дозволяти всім подам, надісланим до Kubelet без проходження через планувальник, запускатися, і дозволяти всім вже запущеним подам продовжувати працювати. Застосовується планувальником.
  • "PreferNoSchedule" Як TaintEffectNoSchedule, але планувальник намагається не планувати нові поди на вузол, а не забороняє нові поди плануватися на вузол повністю. Застосовується планувальником.
key
string
Key є ключем taint, до якого застосовується толерація. Порожнє значення означає співставлення всіх ключів taint. Якщо ключ порожній, оператор повинен бути Exists; ця комбінація означає співставлення всіх значень і всіх ключів.
operator
string
Оператор визначає взаємозв’язок ключа зі значенням. Допустимі оператори: Exists, Equal, Lt та Gt. Стандартно — Equal. Exists еквівалентний символу-заміннику для значення, завдяки чому pod може толерувати всі taint певної категорії. Lt та Gt виконують числові порівняння (потребує включення функціональної можливості TaintTolerationComparisonOperators).

Можливі значення enum:
  • "Equal"
  • "Exists"
  • "Gt"
  • "Lt"
tolerationSeconds
integer
TolerationSeconds представляє період часу, протягом якого толерація (яка повинна мати ефект NoExecute, інакше це поле ігнорується) толерує taint. За замовчуванням не встановлено, що означає толерувати taint назавжди (не виселяти). Нульові та від’ємні значення будуть розглядатися як 0 (виселити негайно) системою.
value
string
Value є значенням taint, з яким співпадає толерація. Якщо оператор Exists, значення повинно бути порожнім, інакше це просто звичайний рядок.

59 - TypedLocalObjectReference

TypedLocalObjectReference містить достатньо інформації, щоб дозволити вам знаходити типізований згаданий обʼєкт всередині того ж простору імен.

apiVersion: v1

import "k8s.io/api/core/v1"

TypedLocalObjectReference

TypedLocalObjectReference містить достатньо інформації, щоб дозволити вам знаходити типізований згаданий обʼєкт всередині того ж простору імен.


ПолеОпис
apiGroup
string
APIGroup — це група для ресурсу, на який посилаються. Якщо APIGroup не вказано, вказаний Kind повинен бути в основній групі API. Для будь-яких інших сторонніх типів APIGroup є обовʼязковим.
kind *
string
Kind — це тип ресурсу, на який посилаються.
name *
string
Name — це назва ресурсу, на який посилаються.

60 - TypedLocalObjectReference

TypedLocalObjectReference дозволяє посилатися на типізований обʼєкт всередині того ж простору імен.

apiVersion: scheduling.k8s.io/v1alpha2

import "k8s.io/api/scheduling/v1alpha2"

TypedLocalObjectReference

TypedLocalObjectReference дозволяє посилатися на типізований обʼєкт всередині того ж простору імен.


ПолеОпис
apiGroup
string
APIGroup — це група для ресурсу, на який посилаються. Якщо APIGroup не вказано, вказаний Kind повинен бути в основній групі API. Для будь-яких інших сторонніх типів APIGroup є обовʼязковим. Має бути DNS-піддоменом.
kind *
string
Kind — це тип ресурсу, на який посилаються. Має бути імʼям сегмента шляху.
name *
string
Name — це назва ресурсу, на який посилаються. Має бути імʼям сегмента шляху.

61 - UserInfo

UserInfo містить інформацію про користувача, необхідну для реалізації інтерфейсу user.Info.

apiVersion: authentication.k8s.io/v1

import "k8s.io/api/authentication/v1"

UserInfo

UserInfo містить інформацію про користувача, необхідну для реалізації інтерфейсу user.Info.


ПолеОпис
extra
object
extra — будь-яка додаткова інформація, надана автентифікатором.
groups
string array
groups — це назви груп, до яких належить цей користувач.
uid
string
uid — це унікальне значення, яке ідентифікує цього користувача протягом часу. Якщо цього користувача видалено і додано іншого користувача з тим самим імʼям, вони матимуть різні UID.
username
string
username — це імʼя, яке унікально ідентифікує цього користувача серед усіх активних користувачів.

62 - Variable

Variable визначає змінну, яка використовується для композиції. Змінна визначається як іменований вираз.

apiVersion: admissionregistration.k8s.io/v1

import "k8s.io/api/admissionregistration/v1"

Variable

Variable визначає змінну, яка використовується для композиції. Змінна визначається як іменований вираз.


ПолеОпис
expression *
string
expression — це вираз, який буде оцінюватися як значення змінної. Вираз CEL має доступ до тих самих ідентифікаторів, що й вирази CEL у валідації.
name *
string
name — це імʼя змінної. Імʼя має бути дійсним ідентифікатором CEL і унікальним серед усіх змінних. Змінну можна використовувати в інших виразах через `variables`. Наприклад, якщо імʼя "foo", змінна буде доступна як `variables.foo`

63 - WatchEvent

Event представляє окрему подію для спостережуваного ресурсу.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

WatchEvent

Event представляє окрему подію для спостережуваного ресурсу.


ПолеОпис
object *
Object — це:
  • Якщо Type додано або змінено: новий стан об'єкта.
  • Якщо Type видалено: стан обʼєкта безпосередньо перед видаленням.
  • Якщо Type помилка: *Status рекомендовано; інші типи можуть мати сенс залежно від контексту.
type *
string
Type — це тип події. Можливі значення: "ADDED", "MODIFIED", "DELETED", "ERROR".

64 - WebhookClientConfig

WebhookClientConfig містить інформацію для встановлення TLS-зʼєднання з вебхуком

apiVersion: admissionregistration.k8s.io/v1

import "k8s.io/api/admissionregistration/v1"

WebhookClientConfig

WebhookClientConfig містить інформацію для встановлення TLS-зʼєднання з вебхуком


ПолеОпис
caBundle
string
caBundle — це PEM-кодований CA-пакунок, який буде використаний для перевірки сертифіката сервера вебхука. Якщо не вказано, використовуються системні кореневі сертифікати на apiserver.
service
ServiceReference
service — це посилання на сервіс для цього вебхука. Має бути вказано або service, або url. Якщо вебхук працює всередині кластера, слід використовувати service.
url
string
url — це розташування вебхука у стандартній формі URL (scheme://host:port/path). Має бути вказано або url, або service. Поле host не повинно посилатися на сервіс, що працює в кластері; замість цього використовуйте поле service. Хост може бути визначений через зовнішній DNS в деяких apiserver (наприклад, kube-apiserver не може визначити внутрішній DNS кластера, оскільки це порушення шарів). Хост також може бути IP-адресою. Зверніть увагу, що використання localhost або 127.0.0.1 як хоста є ризикованим, якщо ви не подбаєте про запуск цього вебхука на всіх хостах, які запускають apiserver, який може потребувати викликів до цього вебхука. Такі установки, ймовірно, будуть непортативними, тобто їх важко буде розгорнути в новому кластері. Схема повинна бути "https"; URL повинен починатися з "https://". Шлях є необовʼязковим, і якщо він присутній, може бути будь-яким рядком, дозволеним у URL. Ви можете використовувати шлях для передачі довільного рядка вебхуку, наприклад, ідентифікатора кластера. Спроба використання користувача або базової автентифікації, наприклад "user:password@", не дозволяється. Фрагменти ("#...") та параметри запиту ("?...") також не дозволяються.