Це багатосторінковий друкований вигляд цього розділу. Натисність щоб друкувати.
Ресурси політики
1 - FlowSchema
apiVersion: flowcontrol.apiserver.k8s.io/v1
import "k8s.io/api/flowcontrol/v1"
FlowSchema
FlowSchema визначає схему групи потоків. Зверніть увагу, що потік складається з набору вхідних API-запитів з подібними атрибутами та ідентифікується парою рядків: імʼям FlowSchema та "розрізнювачем потоку".
apiVersion: flowcontrol.apiserver.k8s.io/v1
kind: FlowSchema
metadata (ObjectMeta)
metadata
— стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadataspec (FlowSchemaSpec)
spec
— специфікація бажаної поведінки FlowSchema. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-statusstatus (FlowSchemaStatus)
status
— поточний статус FlowSchema. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
FlowSchemaSpec
FlowSchemaSpec описує вигляд специфікації FlowSchema.
distinguisherMethod (FlowDistinguisherMethod)
distinguisherMethod
визначає, як обчислюється розрізнювач потоку для запитів, які відповідають цій схемі.nil
вказує на те, що розрізнювач вимкнений і завжди буде пустий рядок.FlowDistinguisherMethod вказує на метод розрізнювача потоку.
distinguisherMethod.type (string), обовʼязково
type
- це тип методу розрізнювача потоку. Підтримувані типи: "ByUser" та "ByNamespace". Обовʼязково.
matchingPrecedence (int32)
matchingPrecedence
використовується для вибору серед FlowSchema, які відповідають заданому запиту. Обрана FlowSchema є серед тих, що мають чисельно найменший (який ми вважаємо логічно найвищим) MatchingPrecedence. Кожне значення MatchingPrecedence повинно бути в діапазоні [1, 10000]. Зауважте, що якщо пріоритет не вказано, він буде стандартно встановлений на 1000.priorityLevelConfiguration (PriorityLevelConfigurationReference), обовʼязково
priorityLevelConfiguration
повинна посилатися на PriorityLevelConfiguration в кластері. Якщо посилання не вдається вирішити, FlowSchema буде ігноруватися і позначатися як недійсна в її статусі. Обовʼязково.PriorityLevelConfigurationReference містить інформацію, яка посилається на використання "request-priority".
priorityLevelConfiguration.name (string), обовʼязково
name
— це імʼя конфігурації рівня пріоритетів, на яку є посилання. Обовʼязково.
rules ([]PolicyRulesWithSubjects)
Atomic: буде замінено під час злиття
rules
описують, які запити будуть відповідати цій схемі потоку. Ця FlowSchema відповідає запиту, якщо принаймні один член rules відповідає запиту. Якщо це порожній масив, то запити, які відповідають FlowSchema, не буде.PolicyRulesWithSubjects визначає тест, який застосовується до запиту до apiserver. Тест враховує субʼєкт, який робить запит, дієслово, яке запитується, і ресурс, яким має бути дія. Цей PolicyRulesWithSubjects відповідає запиту, якщо і тільки якщо обидва (а) принаймні один член subjects відповідає запиту і (б) принаймні один член resourceRules або nonResourceRules відповідає запиту.
rules.subjects ([]Subject), обовʼязково
Atomic: буде замінено під час злиття
subjects
— це список звичайних користувачів, службових облікових записів або груп, яких це правило стосується. У цьому зрізі повинен бути принаймні один член. Зріз, який включає як системні групи "system:authenticated" і "system:unauthenticated", відповідає кожному запиту. Обовʼязково.Тема відповідає ініціатору запиту, визначеному системою автентифікації запиту. Існує три способи зіставлення автора; за обліковим записом користувача, групи або службового облікового запиту.
rules.subjects.kind (string), обовʼязково
kind
показує, яке з полів не пусте. Обовʼязково.rules.subjects.group (GroupSubject)
group
відповідає на підставі назви групи користувачів.GroupSubject містить детальну інформацію для субʼєкта типу групи.
rules.subjects.group.name (string), обовʼязково
name
— це назва групи користувачів, з якою є збіг, або "*" для відповідності всім групам користувачів. Див. https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go для деяких відомих назв груп. Обовʼязково.
rules.subjects.serviceAccount (ServiceAccountSubject)
serviceAccount
відповідає службовим обліковим записам.ServiceAccountSubject містить детальну інформацію для субʼєкта типу службового облікового запису.
rules.subjects.serviceAccount.name (string), обовʼязково
name
— це імʼя облікових записів ServiceAccount, або "*" для відповідності незалежно від імені. Обовʼязково.rules.subjects.serviceAccount.namespace (string), обовʼязково
namespace
— це простір імен відповідних обʼєктів ServiceAccount. Обовʼязково.
rules.subjects.user (UserSubject)
user
збіг на основі імені користувача.UserSubject містить детальну інформацію для субʼєкта типу користувача.
rules.subjects.user.name (string), обовʼязково
name
— це імʼя користувача, яке має збіг, або "*" для відповідності всім іменам користувачів. Обовʼязково.
rules.nonResourceRules ([]NonResourcePolicyRule)
Atomic: буде замінено під час злиття
nonResourceRules
— це список NonResourcePolicyRules, які ідентифікують відповідні запити відповідно до їх дієслова і цільового URL без ресурсів.NonResourcePolicyRule є предикатом, який відповідає запитам без ресурсів відповідно до їх дієслова і цільового URL без ресурсів. NonResourcePolicyRule відповідає запиту, якщо і тільки якщо обидва (а) принаймні один член verbs відповідає запиту і (б) принаймні один член nonResourceURLs відповідає запиту.
rules.nonResourceRules.nonResourceURLs ([]string), обовʼязково
Set: унікальні значення будуть збережені під час злиття
nonResourceURLs
— це набір префіксів URL, до яких користувач має мати доступ і не може бути порожнім. Наприклад:- "/healthz" є допустимим
- "/hea*" є недійсним
- "/hea" є допустимим, але не відповідає нічому
- "/hea/*" також не відповідає нічому
- "/healthz/*" відповідає всім перевіркам стану компонентів. "*" відповідає всім URL без ресурсів. Якщо він присутній, він повинен бути єдиним елементом. Обовʼязково.
rules.nonResourceRules.verbs ([]string), обовʼязково
Set: унікальні значення будуть збережені під час злиття
verbs
— це список відповідних дієслів і не може бути порожнім. "*" відповідає всім дієсловам. Якщо він присутній, він повинен бути єдиним елементом. Обовʼязково.
rules.resourceRules ([]ResourcePolicyRule)
Atomic: буде замінено під час злиття
resourceRules
— це зріз ResourcePolicyRules, які ідентифікують відповідні запити відповідно до їх дієслова і цільового ресурсу. Принаймні одна з resourceRules або nonResourceRules має бути не порожньою.ResourcePolicyRule є предикатом, який відповідає деяким запитам ресурсів, перевіряючи дієслово запиту і цільовий ресурс. ResourcePolicyRule відповідає запиту ресурсу, якщо і тільки якщо: (а) принаймні один член verbs відповідає запиту, (б) принаймні один член apiGroups відповідає запиту, (в) принаймні один член resources відповідає запиту, і (г) або (d1) запит не вказує простір імен (тобто
Namespace==""
) і clusterScope є true або (d2) запит вказує простір імен, і принаймні один член namespaces відповідає простору імен запиту.rules.resourceRules.apiGroups ([]string), обовʼязково
Set: унікальні значення будуть збережені під час злиття
apiGroups
— це список відповідних API-груп і не може бути порожнім. "*" відповідає всім API-групам і, якщо він присутній, він повинен бути єдиним елементом. Обовʼязково.rules.resourceRules.resources ([]string), обовʼязково
Set: унікальні значення будуть збережені під час злиття
resources
— це список відповідних ресурсів (тобто в нижньому регістрі та множині) і, за бажанням, субресурс. Наприклад, ["services", "nodes/status"]. Цей список не може бути порожнім. "*" відповідає всім ресурсам і, якщо він присутній, він повинен бути єдиним елементом. Обовʼязково.rules.resourceRules.verbs ([]string), обовʼязково
Set: унікальні значення будуть збережені під час злиття
verbs
— це список відповідних дієслів і не може бути порожнім. "*" відповідає всім дієсловам і, якщо він присутній, він повинен бути єдиним елементом. Обовʼязково.rules.resourceRules.clusterScope (boolean)
clusterScope
показує, чи потрібно відповідати запитам, які не вказують простір імен (це стається або тому, що ресурс не має простору імен, або запит цілісно охоплює всі простори імен). Якщо це поле відсутнє або false, то поле namespaces повинне містити не порожній список.rules.resourceRules.namespaces ([]string)
Set: унікальні значення будуть збережені під час злиття
namespaces
— це список цільових просторів імен, які обмежують збіги. Запит, який вказує на простір імен, має збіг тільки у випадку, якщо або (a) цей список містить цільовий простір імен або (b) цей список містить "*". Зверніть увагу, що "*" відповідає будь-якому вказаному простору імен, але не відповідає запиту, який не вказує простір імен (див. поле clusterScope для цього). Цей список може бути порожнім, але лише в тому випадку, якщо clusterScope є true.
FlowSchemaStatus
FlowSchemaStatus відображає поточний стан FlowSchema.
conditions ([]FlowSchemaCondition)
Patch стратегія: злиття за ключем
type
Map: унікальні значення за ключем type будуть збережені під час злиття
conditions
— це список поточних станів FlowSchema.FlowSchemaCondition описує умови для FlowSchema.
conditions.lastTransitionTime (Time)
lastTransitionTime
— час останнього переходу стану з одного статусу в інший.Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
message
— повідомлення зрозуміле людині, що вказує деталі про останній перехід.conditions.reason (string)
reason
— унікальна причина у вигляді одного слова у CamelCase для останньої зміни стану.conditions.status (string)
status
— статус стану. Може бути True, False, Unknown. Обовʼязково.conditions.type (string)
type
— тип стану. Обовʼязково.
FlowSchemaList
FlowSchemaList - це список обʼєктів FlowSchema.
apiVersion: flowcontrol.apiserver.k8s.io/v1
kind: FlowSchemaList
metadata (ListMeta)
metadata
— стандартні метадані списку. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadataitems ([]FlowSchema), обовʼязково
items
— список обʼєктів FlowSchema.
Операції
get
отримату вказану FlowSchema
HTTP запит
GET /apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя FlowSchema
pretty (в запиті): string
Відповідь
200 (FlowSchema): OK
401: Unauthorized
get
отримати статус вказаної FlowSchema
HTTP запит
GET /apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя FlowSchema
pretty (в запиті): string
Відповідь
200 (FlowSchema): OK
401: Unauthorized
list
перелвк або перегляд обʼєктів типу FlowSchema
HTTP запит
GET /apis/flowcontrol.apiserver.k8s.io/v1/flowschemas
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (FlowSchemaList): OK
401: Unauthorized
create
створення FlowSchema
HTTP запит
POST /apis/flowcontrol.apiserver.k8s.io/v1/flowschemas
Параметри
body: FlowSchema, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (FlowSchema): OK
201 (FlowSchema): Created
202 (FlowSchema): Accepted
401: Unauthorized
update
заміна вказаної FlowSchema
HTTP запит
PUT /apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя FlowSchema
body: FlowSchema, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (FlowSchema): OK
201 (FlowSchema): Created
401: Unauthorized
update
заміна статусу вказаної FlowSchema
HTTP запит
PUT /apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя FlowSchema
body: FlowSchema, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (FlowSchema): OK
201 (FlowSchema): Created
401: Unauthorized
patch
часткове оновлення вказаної FlowSchema
HTTP запит
PATCH /apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя FlowSchema
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (FlowSchema): OK
201 (FlowSchema): Created
401: Unauthorized
patch
часткове оновлення статусу вказаної FlowSchema
HTTP запит
PATCH /apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя FlowSchema
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (FlowSchema): OK
201 (FlowSchema): Created
401: Unauthorized
delete
видалення FlowSchema
HTTP запит
DELETE /apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя FlowSchema
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції FlowSchema
HTTP запит
DELETE /apis/flowcontrol.apiserver.k8s.io/v1/flowschemas
Параметри
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
2 - LimitRange
apiVersion: v1
import "k8s.io/api/core/v1"
LimitRange
LimitRange встановлює обмеження на використання ресурсів для кожного типу ресурсу в просторі імен.
apiVersion: v1
kind: LimitRange
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (LimitRangeSpec)
Spec визначає застосовувані обмеження. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
LimitRangeSpec
LimitRangeSpec визначає мінімальні та максимальні обмеження на використання ресурсів, які відповідають певному типу.
limits ([]LimitRangeItem), обовʼязково
Atomic: буде замінено під час злиття
Limits — це список обʼєктів LimitRangeItem, що застосовуються.
LimitRangeItem визначає мінімальні та максимальні обмеження на використання будь-якого ресурсу, який відповідає певному типу.
limits.type (string), обовʼязково
Тип ресурсу, до якого застосовується це обмеження.
limits.default (map[string]Quantity)
Стандартні граничні значення запиту ресурсу за назвою ресурсу, якщо обмеження ресурсів не вказано.
limits.defaultRequest (map[string]Quantity)
DefaultRequest — це стандартне значення запиту на вимоги до ресурсу за назвою ресурсу, якщо запит на ресурси не вказано.
limits.max (map[string]Quantity)
Максимальні обмеження на використання цього типу за назвою ресурсу.
limits.maxLimitRequestRatio (map[string]Quantity)
MaxLimitRequestRatio, якщо зазначено, названий ресурс повинен мати запит і обмеження, які обидва є ненульовими, де обмеження, поділене на запит, менше або дорівнює перерахованому значенню; це представляє максимальне навантаження для названого ресурсу.
limits.min (map[string]Quantity)
Мінімальні обмеження на використання цього типу за назвою ресурсу.
LimitRangeList
LimitRangeList — це список елементів LimitRange.
apiVersion: v1
kind: LimitRangeList
metadata (ListMeta)
Стандартні метадані списку. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
items ([]LimitRange), обовʼязкове
Items — це список обʼєктів LimitRange. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
Операції
get
отримати вказаний LimitRange
HTTP запит
GET /api/v1/namespaces/{namespace}/limitranges/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя LimitRange
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (LimitRange): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу LimitRange
HTTP запит
GET /api/v1/namespaces/{namespace}/limitranges
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (LimitRangeList): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу LimitRange
HTTP запит
GET /api/v1/limitranges
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (LimitRangeList): OK
401: Unauthorized
create
створення LimitRange
HTTP запит
POST /api/v1/namespaces/{namespace}/limitranges
Параметри
namespace (в шляху): string, обовʼязково
body: LimitRange, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (LimitRange): OK
201 (LimitRange): Created
202 (LimitRange): Accepted
401: Unauthorized
update
заміна вказаного LimitRange
HTTP запит
PUT /api/v1/namespaces/{namespace}/limitranges/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя LimitRange
namespace (в шляху): string, обовʼязково
body: LimitRange, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (LimitRange): OK
201 (LimitRange): Created
401: Unauthorized
patch
часткове оновлення вказаного LimitRange
HTTP запит
PATCH /api/v1/namespaces/{namespace}/limitranges/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя LimitRange
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (LimitRange): OK
201 (LimitRange): Created
401: Unauthorized
delete
видалення LimitRange
HTTP запит
DELETE /api/v1/namespaces/{namespace}/limitranges/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя LimitRange
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції LimitRange
HTTP запит
DELETE /api/v1/namespaces/{namespace}/limitranges
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
3 - ResourceQuota
apiVersion: v1
import "k8s.io/api/core/v1"
ResourceQuota
ResourceQuota встановлює сукупні квоти, які застосовуються для кожного простору імен.
apiVersion: v1
kind: ResourceQuota
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (ResourceQuotaSpec)
Spec визначає бажані квоти. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (ResourceQuotaStatus)
Status визначає фактично застосовані квоти та їх поточне використання. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
ResourceQuotaSpec
ResourceQuotaSpec визначає бажані жорсткі обмеження для застосування квоти.
hard (map[string]Quantity)
hard — це набір бажаних жорстких обмежень для кожного названого ресурсу. Докладніше: https://kubernetes.io/docs/concepts/policy/resource-quotas/
scopeSelector (ScopeSelector)
scopeSelector — це також набір фільтрів, таких як scopes, які повинні відповідати кожному обʼєкту, відстежуваному квотою, але виражені за допомогою ScopeSelectorOperator у поєднанні з можливими значеннями. Для відповідності ресурсу повинні відповідати як scopes, так і scopeSelector (якщо зазначено у spec).
Селектор області застосування являє собою AND селекторів, представлених вимогами селектора ресурсу з обмеженою областю застосування.
scopeSelector.matchExpressions ([]ScopedResourceSelectorRequirement)
Atomic: буде замінено під час злиття
Список вимог селектора за областю застосування ресурсів.
Вимога до селектора ресурсу з областю застосування — це селектор, який містить значення, імʼя області застосування та оператор, який повʼязує імʼя області застосування зі значеннями.
scopeSelector.matchExpressions.operator (string), обовʼязково
Представляє стосунок області застосування з до набору значень. Допустимі оператори In, NotIn, Exists, DoesNotExists.
scopeSelector.matchExpressions.scopeName (string), обовʼязково
Імʼя області застосування, до якої застосовується селектор.
scopeSelector.matchExpressions.values ([]string)
Atomic: буде замінено під час злиття
Масив рядкових значень. Якщо оператор In або NotIn, масив значень не повинен бути порожнім. Якщо оператор Exists або DoesNotExist, масив значень повинен бути порожнім. Цей масив замінюється під час стратегії обʼєднання патчів.
scopes ([]string)
Atomic: буде замінено під час злиття
Набір фільтрів, які повинні відповідати кожному обʼєкту, відстежуваному квотою. Якщо не вказано, квота відповідає всім обʼєктам.
ResourceQuotaStatus
ResourceQuotaStatus визначає застосовані жорсткі обмеження та спостережуване використання.
hard (map[string]Quantity)
Hard — це набір застосованих жорстких обмежень для кожного названого ресурсу. Докладніше: https://kubernetes.io/docs/concepts/policy/resource-quotas/
used (map[string]Quantity)
Used — це поточне спостережуване загальне використання ресурсу в просторі імен.
ResourceQuotaList
ResourceQuotaList — це список елементів ResourceQuota.
apiVersion: v1
kind: ResourceQuotaList
metadata (ListMeta)
Стандартні метадані списку. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
items ([]ResourceQuota), обовʼязково
Items — це список обʼєктів ResourceQuota. Докладніше: https://kubernetes.io/docs/concepts/policy/resource-quotas/
Операції
get
отримати вказану ResourceQuota
HTTP запит
GET /api/v1/namespaces/{namespace}/resourcequotas/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ResourceQuota
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (ResourceQuota): OK
401: Unauthorized
get
отримати статус вказаної ResourceQuota
HTTP запит
GET /api/v1/namespaces/{namespace}/resourcequotas/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя ResourceQuota
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (ResourceQuota): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ResourceQuota
HTTP запит
GET /api/v1/namespaces/{namespace}/resourcequotas
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ResourceQuotaList): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ResourceQuota
HTTP запит
GET /api/v1/resourcequotas
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ResourceQuotaList): OK
401: Unauthorized
create
створення ResourceQuota
HTTP запит
POST /api/v1/namespaces/{namespace}/resourcequotas
Параметри
namespace (в шляху): string, обовʼязково
body: ResourceQuota, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ResourceQuota): OK
201 (ResourceQuota): Created
202 (ResourceQuota): Accepted
401: Unauthorized
update
заміна вказаної ResourceQuota
HTTP запит
PUT /api/v1/namespaces/{namespace}/resourcequotas/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ResourceQuota
namespace (в шляху): string, обовʼязково
body: ResourceQuota, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ResourceQuota): OK
201 (ResourceQuota): Created
401: Unauthorized
update
заміна статусу вказаної ResourceQuota
HTTP запит
PUT /api/v1/namespaces/{namespace}/resourcequotas/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя ResourceQuota
namespace (в шляху): string, обовʼязково
body: ResourceQuota, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ResourceQuota): OK
201 (ResourceQuota): Created
401: Unauthorized
patch
часткове оновлення вказаної ResourceQuota
HTTP запит
PATCH /api/v1/namespaces/{namespace}/resourcequotas/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ResourceQuota
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ResourceQuota): OK
201 (ResourceQuota): Created
401: Unauthorized
patch
часткове оновлення статусу вказаної ResourceQuota
HTTP запит
PATCH /api/v1/namespaces/{namespace}/resourcequotas/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя ResourceQuota
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ResourceQuota): OK
201 (ResourceQuota): Created
401: Unauthorized
delete
видалення ResourceQuota
HTTP запит
DELETE /api/v1/namespaces/{namespace}/resourcequotas/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ResourceQuota
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (ResourceQuota): OK
202 (ResourceQuota): Accepted
401: Unauthorized
deletecollection
видалення колекції ResourceQuota
HTTP запит
DELETE /api/v1/namespaces/{namespace}/resourcequotas
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
4 - NetworkPolicy
apiVersion: networking.k8s.io/v1
import "k8s.io/api/networking/v1"
NetworkPolicy
NetworkPolicy описує, який мережевий трафік дозволений для набору Podʼів
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (NetworkPolicySpec)
spec представляє специфікацію бажаної поведінки для цього NetworkPolicy.
NetworkPolicySpec
NetworkPolicySpec надає специфікацію NetworkPolicy
podSelector (LabelSelector), обовʼязково
podSelector вибирає Podʼи, до яких застосовується цей обʼєкт NetworkPolicy. Масив правил ingress застосовується до будь-яких Podʼів, вибраних цим полем. Кілька мережевих політик можуть вибирати той самий набір Podʼів. У цьому випадку правила ingress для кожного з них поєднуються. Це поле НЕ є необовʼязковим і слідує стандартним семантикам вибору міток. Порожній podSelector збігається з усіма Podʼами в цьому простору імен.
policyTypes ([]string)
Atomic: буде замінено під час злиття
policyTypes — це список типів правил, до яких відноситься NetworkPolicy. Дійсні опції включають [“Ingress"], [“Egress"] або [“Ingress", “Egress"]. Якщо це поле не вказано, воно буде визначено стандартно на основі наявності правил ingress або egress; політики, які містять розділ egress, вважаються такими, що впливають на egress, а всі політики (незалежно від того, чи містять вони розділ ingress) вважаються такими, що впливають на ingress. Якщо ви хочете написати політику тільки для egress, ви повинні явно вказати policyTypes [“Egress"]. Аналогічно, якщо ви хочете написати політику, яка визначає, що egress не дозволений, ви повинні вказати значення policyTypes, яке включає “Egress" (оскільки така політика не включатиме розділ egress і стандартно буде просто [“Ingress" ]). Це поле є рівнем бета у версії 1.8.
ingress ([]NetworkPolicyIngressRule)
Atomic: буде замінено під час злиття
ingress — це список правил ingress, які застосовуються до вибраних Podʼів. Трафік дозволено до Podʼа, якщо немає мережевих політик, які вибирають Pod (і кластерна політика інакше дозволяє трафік), АБО якщо джерелом трафіку є локальний вузол Podʼа, АБО якщо трафік відповідає принаймні одному правилу ingress серед усіх обʼєктів NetworkPolicy, чий podSelector відповідає Podʼу. Якщо це поле порожнє, ця NetworkPolicy не дозволяє жодного трафіку (і стандартно слугує виключно для того, щоб забезпечити ізоляцію вибраних Podʼів).
NetworkPolicyIngressRule описує конкретний набір трафіку, який дозволено до Podʼів, вибраних podSelector у NetworkPolicySpec. Трафік повинен відповідати як ports, так і from.
ingress.from ([]NetworkPolicyPeer)
Atomic: буде замінено під час злиття
from — це список джерел, яким дозволено доступ до Podʼів, вибраних для цього правила. Елементи в цьому списку комбінуються за допомогою логічної операції OR. Якщо це поле порожнє або відсутнє, це правило збігається з усіма джерелами (трафік не обмежений за джерелом). Якщо це поле присутнє і містить принаймні один елемент, це правило дозволяє трафік лише у разі відповідності принаймні одному елементу зі списку from.
NetworkPolicyPeer описує однорангового учасника для дозволу трафіку до/від. Допускаються лише певні комбінації полів.
ingress.from.ipBlock (IPBlock)
ipBlock визначає політику для конкретного IPBlock. Якщо це поле встановлено, то жодне інше поле не може бути встановлене.
IPBlock описує конкретний CIDR (наприклад, “192.168.1.0/24",“2001:db8::/64"), який дозволено для Podʼів, вибраних podSelector у NetworkPolicySpec. Поле except описує CIDR, які не повинні бути включені до цього правила.
ingress.from.ipBlock.cidr (string), обовʼязково
cidr — це рядок, що представляє IPBlock. Дійсні приклади: “192.168.1.0/24" або “2001:db8::/64".
ingress.from.ipBlock.except ([]string)
Atomic: буде замінено під час злиття
except — це перелік CIDR, які не повинні бути включені до IPBlock. Дійсні приклади: “192.168.1.0/24" або “2001:db8::/64". Значення except будуть відхилені, якщо вони виходять за межі діапазону cidr.
ingress.from.namespaceSelector (LabelSelector)
namespaceSelector вибирає простори імен за допомогою кластерних міток. Це поле слідує стандартним семантикам вибору міток; якщо присутнє, але порожнє, воно вибирає всі простори імен.
Якщо також встановлено podSelector, тоді NetworkPolicyPeer загалом вибирає Podʼи, які відповідають podSelector у просторах імен, вибраних namespaceSelector. Інакше він вибирає всі Podʼи в просторах імен, вибраних namespaceSelector.
ingress.from.podSelector (LabelSelector)
podSelector — це вибір міток, що вибирає Podʼи. Це поле слідує стандартним семантикам вибору міток; якщо присутнє, але порожнє, воно вибирає всі Podʼи.
Якщо також встановлено namespaceSelector, тоді NetworkPolicyPeer загалом вибирає Podʼи, які відповідають podSelector у просторах імен, вибраних NamespaceSelector. Інакше він вибирає Podʼи, які відповідають podSelector у власному просторі імен політики.
ingress.ports ([]NetworkPolicyPort)
Atomic: буде замінено під час злиття
ports — це список портів, які повинні бути доступні у Podʼах, вибраних для цього правила. Кожен елемент у цьому списку комбінується за допомогою логічної операції OR. Якщо це поле порожнє або відсутнє, це правило збігається з усіма портами (трафік не обмежений за портом). Якщо це поле присутнє і містить принаймні один елемент, тоді це правило дозволяє трафік лише у разі відповідності принаймні одному порту зі списку.
NetworkPolicyPort описує порт, на якому дозволено трафік
ingress.ports.port (IntOrString)
port представляє порт на заданому протоколі. Це може бути числовий або іменований порт на Podʼі. Якщо це поле не вказане, це збігається з усіма іменами та номерами портів. Якщо присутнє, то відповідає лише трафік на вказаному протоколі ТА порті.
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
ingress.ports.endPort (int32)
endPort вказує, що діапазон портів від port до endPort, якщо встановлено, включно, повинен бути дозволений політикою. Це поле не може бути визначене, якщо поле port не визначене або якщо поле port визначене як іменований (string) порт. Поле endPort повинно бути рівним або більшим за port.
ingress.ports.protocol (string)
protocol представляє протокол (TCP, UDP або SCTP), якому повинен відповідати трафік. Якщо не вказано, це поле стандартно встановлюється у TCP.
egress ([]NetworkPolicyEgressRule)
Atomic: буде замінено під час злиття
egress — це список правил egress, які застосовуються до вибраних Podʼів. Вихідний трафік дозволений, якщо немає мережевих політик, які вибирають Pod (і кластерна політика інакше дозволяє трафік), АБО якщо трафік відповідає принаймні одному правилу egress серед усіх обʼєктів NetworkPolicy, чий podSelector відповідає Podʼу. Якщо це поле порожнє, ця NetworkPolicy обмежує весь вихідний трафік (і слугує виключно для того, щоб стандартно забезпечити ізоляцію вибраних Podʼів). Це поле є рівнем бета у версії 1.8.
NetworkPolicyEgressRule описує конкретний набір трафіку, який дозволено від Podʼів, вибраних podSelector у NetworkPolicySpec. Трафік повинен відповідати як ports, так і to. Цей тип є рівнем бета у версії 1.8.
egress.to ([]NetworkPolicyPeer)
Atomic: буде замінено під час злиття
to — це список пунктів призначення для вихідного трафіку Podʼів, вибраних для цього правила. Елементи в цьому списку комбінуються за допомогою логічної операції OR. Якщо це поле порожнє або відсутнє, це правило збігається з усіма пунктами призначення (трафік не обмежений за пунктом призначення). Якщо це поле присутнє і містить принаймні один елемент, це правило дозволяє трафік лише у разі відповідності принаймні одному елементу зі списку to.
NetworkPolicyPeer описує однорангового учасника для дозволу трафіку до/від. Допускаються лише певні комбінації полів.
egress.to.ipBlock (IPBlock)
ipBlock визначає політику для конкретного IPBlock. Якщо це поле встановлено, то жодне інше поле не може бути встановлене.
IPBlock описує конкретний CIDR (наприклад, “192.168.1.0/24",“2001:db8::/64"), який дозволено для Podʼів, вибраних podSelector у NetworkPolicySpec. Поле except описує CIDR, які не повинні бути включені до цього правила.
egress.to.ipBlock.cidr (string), обовʼязково
cidr — це рядок, що представляє IPBlock. Дійсні приклади: “192.168.1.0/24" або “2001:db8::/64".
egress.to.ipBlock.except ([]string)
Atomic: буде замінено під час злиття
except — це перелік CIDR, які не повинні бути включені до IPBlock. Дійсні приклади: “192.168.1.0/24" або “2001:db8::/64". Значення except будуть відхилені, якщо вони виходять за межі діапазону cidr.
egress.to.namespaceSelector (LabelSelector)
namespaceSelector вибирає простори імен за допомогою кластерних міток. Це поле слідує стандартним семантикам вибору міток; якщо присутнє, але порожнє, воно вибирає всі простори імен.
Якщо також встановлено podSelector, тоді NetworkPolicyPeer загалом вибирає Podʼи, які відповідають podSelector у просторах імен, вибраних namespaceSelector. Інакше він вибирає всі Podʼи в просторах імен, вибраних namespaceSelector.
egress.to.podSelector (LabelSelector)
podSelector — це вибір міток, що вибирає Podʼи. Це поле слідує стандартним семантикам вибору міток; якщо присутнє, але порожнє, воно вибирає всі Podʼи.
Якщо також встановлено namespaceSelector, тоді NetworkPolicyPeer загалом вибирає Podʼи, які відповідають podSelector у просторах імен, вибраних NamespaceSelector. Інакше він вибирає Podʼи, які відповідають podSelector у власному просторі імен політики.
egress.ports ([]NetworkPolicyPort)
Atomic: буде замінено під час злиття
ports — це список портів призначення для вихідного трафіку. Кожен елемент у цьому списку комбінується за допомогою логічної операції OR. Якщо це поле порожнє або відсутнє, це правило збігається з усіма портами (трафік не обмежений за портом). Якщо це поле присутнє і містить принаймні один елемент, тоді це правило дозволяє трафік лише у разі відповідності принаймні одному порту зі списку.
NetworkPolicyPort описує порт, на якому дозволено трафік
egress.ports.port (IntOrString)
port представляє порт на заданому протоколі. Це може бути числовий або іменований порт у Podʼі. Якщо це поле не вказане, воно збігається з усіма іменами та номерами портів. Якщо присутнє, то відповідає лише трафік на вказаному протоколі ТА порті.
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
egress.ports.endPort (int32)
endPort вказує, що діапазон портів від port до endPort, якщо встановлено, включно, повинен бути дозволений політикою. Це поле не може бути визначене, якщо поле port не визначене або якщо поле port визначене як іменований (string) порт. Поле endPort повинно бути рівним або більшим за port.
egress.ports.protocol (string)
protocol представляє протокол (TCP, UDP або SCTP), якому повинен відповідати трафік. Якщо не вказано, це поле стандартно встановлюється у TCP.
NetworkPolicyList
NetworkPolicyList — це список обʼєктів NetworkPolicy.
apiVersion: networking.k8s.io/v1
Вказує версію API.
kind: NetworkPolicyList
Вказує тип ресурсу, в цьому випадку NetworkPolicyList.
metadata (ListMeta)
Стандартні метадані списку. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]NetworkPolicy), обовʼязково
items — це список обʼєктів NetworkPolicy.
Операції
get
отримату ввказану NetworkPolicy
HTTP запит
GET /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя NetworkPolicy
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (NetworkPolicy): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу NetworkPolicy
HTTP запит
GET /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (NetworkPolicyList): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу
HTTP запит
GET /apis/networking.k8s.io/v1/networkpolicies
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (NetworkPolicyList): OK
401: Unauthorized
create
створення NetworkPolicy
HTTP запит
POST /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies
Параметри
namespace (в шляху): string, обовʼязково
body: NetworkPolicy, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (NetworkPolicy): OK
201 (NetworkPolicy): Created
202 (NetworkPolicy): Accepted
401: Unauthorized
update
заміна вказаної NetworkPolicy
HTTP запит
PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя NetworkPolicy
namespace (в шляху): string, обовʼязково
body: NetworkPolicy, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (NetworkPolicy): OK
201 (NetworkPolicy): Created
401: Unauthorized
patch
часткове оновлення вказаної NetworkPolicy
HTTP запит
PATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя NetworkPolicy
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (NetworkPolicy): OK
201 (NetworkPolicy): Created
401: Unauthorized
delete
видалення NetworkPolicy
HTTP запит
DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя NetworkPolicy
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції NetworkPolicy
HTTP запит
DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
5 - PodDisruptionBudget
apiVersion: policy/v1
import "k8s.io/api/policy/v1"
PodDisruptionBudget
PodDisruptionBudget — обʼєкт, який визначає максимальний розлад, який може бути завданий колекції Podʼів.
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (PodDisruptionBudgetSpec)
Специфікація бажаної поведінки PodDisruptionBudget.
status (PodDisruptionBudgetStatus)
Останній спостережуваний стан PodDisruptionBudget.
PodDisruptionBudgetSpec
PodDisruptionBudgetSpec — це опис PodDisruptionBudget.
maxUnavailable (IntOrString)
Виселення дозволяється, якщо щонайбільше "maxUnavailable" Podʼів, вибраних за допомогою "selector", є недоступними після виселення, тобто навіть за відсутності виселеного Podʼа. Наприклад, можна запобігти всім добровільним виселенням, вказавши 0. Це взаємозаперечне налаштування з "minAvailable".
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
minAvailable (IntOrString)
Виселення дозволяється, якщо щонайменше "minAvailable" Podʼів, вибраних за допомогою "selector", залишаться доступними після виселення, тобто навіть за відсутності виселеного Podʼа. Наприклад, можна запобігти всім добровільним виселенням, вказавши "100%".
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
selector (LabelSelector)
Запит міток для Podʼів, виселення яких керується бюджетом розладів. Нульовий селектор не вибиратиме жодного Podʼа, тоді як порожній ({}) селектор вибиратиме всі Podʼи в межах простору імен.
unhealthyPodEvictionPolicy (string)
UnhealthyPodEvictionPolicy визначає критерії, коли несправні Podʼи слід вважати кандидатами на виселення. Поточна реалізація вважає справними ті Podʼи, у яких у status.conditions є елемент із type="Ready",status="True".
Дійсні політики: IfHealthyBudget і AlwaysAllow. Якщо політика не вказана, буде використано стандартну поведінку, яка відповідає політиці IfHealthyBudget.
Політика IfHealthyBudget означає, що працюючі Podʼи (status.phase="Running"), але ще не справні, можуть бути виселені лише у випадку, якщо захищений застосунок не в розладі (status.currentHealthy принаймні дорівнює status.desiredHealthy). Справні Podʼи підпадають під дію PDB для виселення.
Політика AlwaysAllow означає, що всі працюючі Podʼи (status.phase="Running"), але ще не справні, вважаються в стані розладу і можуть бути виселені незалежно від того, чи виконуються критерії у PDB. Це означає, що працюючі Podʼи застосунка в розладі можуть не мати шансу стати справними. Справні Podʼи підпадають під дію PDB для виселення.
У майбутньому можуть бути додані додаткові політики. Клієнти, які приймають рішення про виселення, повинні забороняти виселення несправних Podʼів, якщо вони стикаються з незнайомою політикою в цьому полі.
Це поле знаходиться на рівні бета. API виселення використовує це поле, коли функціональні можливості PDBUnhealthyPodEvictionPolicy увімкнені (стандартно увімкнено).
PodDisruptionBudgetStatus
PodDisruptionBudgetStatus представляє інформацію про стан PodDisruptionBudget. Статус може відставати від фактичного стану системи.
currentHealthy (int32), обовʼязково
поточна кількість справних Podʼів
desiredHealthy (int32), обовʼязково
мінімально бажана кількість справних Podʼів
disruptionsAllowed (int32), обовʼязково
Кількість розладів Podʼів, які наразі дозволені.
expectedPods (int32), обовʼязково
загальна кількість Podʼів, врахованих цим бюджетом розладів
conditions ([]Condition)
Patch strategy: обʼєднання за ключем
type
Map: унікальні значення за ключем type зберігаються під час обʼєднання
Conditions містить стани для PDB. Контролер розладів встановлює стан DisruptionAllowed. Нижче наведені відомі значення для поля reason (у майбутньому можуть бути додані додаткові причини):
- SyncFailed: Контролер зіткнувся з помилкою і не зміг обчислити кількість дозволених розладів. Тому розлади не дозволяються, і статус стану буде False.
- InsufficientPods: Кількість Podʼів дорівнює або менша за кількість, необхідну для PodDisruptionBudget. Розлади не дозволяються, і статус стану буде False.
- SufficientPods: Є більше Podʼів, ніж потрібно для PodDisruptionBudget. Стан буде True, і кількість дозволених розладів буде вказана у властивості disruptionsAllowed.
Condition містить деталі щодо одного аспекту поточного стану цього ресурсу API.
conditions.lastTransitionTime (Time), обовʼязково
lastTransitionTime — це час останнього переходу стану з одного в інший. Це має бути момент, коли змінився основний стан. Якщо це невідомо, то допустимо використовувати час, коли змінилося поле API.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string), обовʼязково
message — це повідомлення, зрозуміле людині, вказує деталі про зміну стану. Це може бути порожній рядок.
conditions.reason (string), обовʼязково
reason містить програмний ідентифікатор, що вказує причину останньої зміни стану. Виробники певних типів станів можуть визначати очікувані значення та значення для цього поля та чи вважаються ці значення гарантованими API. Значення має бути рядком у CamelCase. Це поле не може бути порожнім.
conditions.status (string), обовʼязково
статус стану, одне з True, False, Unknown.
conditions.type (string), обовʼязково
тип стану в CamelCase або у форматі foo.example.com/CamelCase.
conditions.observedGeneration (int64)
observedGeneration представляє .metadata.generation, на основі якого було встановлено стан. Наприклад, якщо .metadata.generation наразі дорівнює 12, але .status.conditions[x].observedGeneration дорівнює 9, стан застарів щодо поточного стану екземпляра.
disruptedPods (map[string]Time)
DisruptedPods містить інформацію про Podʼи, виселення яких було оброблено субресурсом виселення API-сервера, але ще не було зафіксовано контролером PodDisruptionBudget. Pod буде в цьому map з моменту, коли API-сервер обробив запит на виселення, до моменту, коли контролер PDB побачить Pod як такий, що позначений для видалення (або після тайм-ауту). Ключем у map є назва Podʼа, а значенням — час, коли API-сервер обробив запит на виселення. Якщо видалення не відбулося і Pod все ще є, він буде автоматично видалений зі списку контролером PodDisruptionBudget через певний час. Якщо все йде добре, цей map повинен бути порожнім більшу частину часу. Велика кількість записів у map може вказувати на проблеми з видаленням Podʼів.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
observedGeneration (int64)
Останнє спостережене покоління під час оновлення цього статусу PDB. DisruptionsAllowed та інша інформація про статус дійсні лише, якщо observedGeneration дорівнює поколінню обʼєкта PDB.
PodDisruptionBudgetList
PodDisruptionBudgetList —це колекція PodDisruptionBudgets.
apiVersion: policy/v1
kind: PodDisruptionBudgetList
metadata (ListMeta)
Стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]PodDisruptionBudget), обовʼязково
Елементи — це список PodDisruptionBudgets
Операції
get
отримати вказаний PodDisruptionBudget
HTTP запит
GET /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PodDisruptionBudget
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (PodDisruptionBudget): OK
401: Unauthorized
get
отримати статус вказаного PodDisruptionBudget
HTTP запит
GET /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя PodDisruptionBudget
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (PodDisruptionBudget): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу PodDisruptionBudget
HTTP запит
GET /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (PodDisruptionBudgetList): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу PodDisruptionBudget
HTTP запит
GET /apis/policy/v1/poddisruptionbudgets
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (PodDisruptionBudgetList): OK
401: Unauthorized
create
ствоерння PodDisruptionBudget
HTTP запит
POST /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets
Параметри
namespace (в шляху): string, обовʼязково
body: PodDisruptionBudget, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PodDisruptionBudget): OK
201 (PodDisruptionBudget): Created
202 (PodDisruptionBudget): Accepted
401: Unauthorized
update
заміна вказаного PodDisruptionBudget
HTTP запит
PUT /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PodDisruptionBudget
namespace (в шляху): string, обовʼязково
body: PodDisruptionBudget, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PodDisruptionBudget): OK
201 (PodDisruptionBudget): Created
401: Unauthorized
update
заміна статусу вказанрого PodDisruptionBudget
HTTP запит
PUT /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя PodDisruptionBudget
namespace (в шляху): string, обовʼязково
body: PodDisruptionBudget, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PodDisruptionBudget): OK
201 (PodDisruptionBudget): Created
401: Unauthorized
patch
часткове оновлення вказаного PodDisruptionBudget
HTTP запит
PATCH /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PodDisruptionBudget
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PodDisruptionBudget): OK
201 (PodDisruptionBudget): Created
401: Unauthorized
patch
часткове оновлення статусу вказаного PodDisruptionBudget
HTTP запит
PATCH /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя PodDisruptionBudget
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PodDisruptionBudget): OK
201 (PodDisruptionBudget): Created
401: Unauthorized
delete
видалення PodDisruptionBudget
HTTP запит
DELETE /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PodDisruptionBudget
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції PodDisruptionBudget
HTTP запит
DELETE /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
6 - PriorityLevelConfiguration
apiVersion: flowcontrol.apiserver.k8s.io/v1
import "k8s.io/api/flowcontrol/v1"
PriorityLevelConfiguration
PriorityLevelConfiguration представляє конфігурацію рівня пріоритету.
apiVersion: flowcontrol.apiserver.k8s.io/v1
kind: PriorityLevelConfiguration
metadata (ObjectMeta)
metadata
— стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadataspec (PriorityLevelConfigurationSpec)
spec
— специфікація бажаної поведінки "request-priority". Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-statusstatus (PriorityLevelConfigurationStatus)
status
— поточний статус "request-priority". Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
PriorityLevelConfigurationSpec
PriorityLevelConfigurationSpec визначає конфігурацію рівня пріоритету.
exempt (ExemptPriorityLevelConfiguration)
exempt
вказує, як обробляються запити для виняткового рівня пріоритету. Це поле ПОВИННО бути порожнім, якщоtype
встановлено на"Limited"
. Це поле МОЖЕ бути не порожнім, якщоtype
встановлено на"Exempt"
. Якщо воно порожнє іtype
встановлено на"Exempt"
, застосовуються стандартне значення дляExemptPriorityLevelConfiguration
.ExemptPriorityLevelConfiguration описує настроювані аспекти обробки запитів на виключення. В обов’язковому винятковому об’єкті конфігурації значення в полях тут можуть змінювати авторизовані користувачі, на відміну від решти
spec
.exempt.lendablePercent (int32)
lendablePercent
вказує частку NominalCL рівня, яка може бути позичена іншими рівнями пріоритету. Значення цього поля повинно бути в діапазоні від 0 до 100 включно, стандартне значення — 0. Кількість місць, які інші рівні можуть позичати у цього рівня, визначається наступним чином:LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 )
exempt.nominalConcurrencyShares (int32)
nominalConcurrencyShares
(NCS) вносить свій внесок до обчислення NominalConcurrencyLimit (NominalCL) цього рівня. Це кількість виконавчих місць, які номінально зарезервовані для цього рівня пріоритету. Це НЕ обмежує розподіл з цього рівня, але впливає на інші рівні пріоритету через механізм позичання. Ліміт конкурентності сервера (ServerCL) розподіляється серед всіх рівнів пріоритету пропорційно їх значенням NCS:NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k)
Більші значення означають більший номінальний ліміт конкурентності за рахунок інших рівнів пріоритету. Стандартно це поле має значення 0.
limited (LimitedPriorityLevelConfiguration)
limited
вказує, як обробляються запити для обмеженого рівня пріоритету. Це поле повинно бути не порожнім лише тоді, колиtype
встановлено на"Limited"
.LimitedPriorityLevelConfiguration вказує, як обробляти запити, які підлягають обмеженням. Він вирішує дві проблеми:
Які обмеження на запити для цього рівня пріоритету?
Що робити з запитами, які перевищують ліміт?
limited.borrowingLimitPercent (int32)
borrowingLimitPercent
, якщо вказано, налаштовує ліміт на кількість місць, які цей рівень пріоритету може позичати від інших рівнів пріоритету. Ліміт відомий як BorrowingConcurrencyLimit (BorrowingCL) і є обмеженням на загальну кількість місць, які цей рівень може позичати одночасно. Це поле визначає співвідношення цього ліміту до номінального ліміту конкурентності рівня. Коли це поле не є нульовим, воно має вказувати невідʼємне ціле число, і ліміт обчислюється так:BorrowingCL(i) = round( NominalCL(i) * borrowingLimitPercent(i)/100.0 )
Значення цього поля може перевищувати 100, що означає, що цей рівень пріоритету може позичати більше місць, ніж його власний номінальний ліміт конкурентності (NominalCL). Якщо це поле залишити
nil
, ліміт фактично нескінченний.limited.lendablePercent (int32)
lendablePercent
вказує частку NominalCL рівня, яка може бути позичена іншими рівнями пріоритету. Значення цього поля повинно бути в діапазоні від 0 до 100 включно, стандартно — 0. Кількість місць, які інші рівні можуть позичати у цього рівня, визначається наступним чином:LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 )
limited.limitResponse (LimitResponse)
limitResponse
вказує, як поводитися з запитами, які зараз не можна виконати.LimitResponse визначає, як обробляти запити, які зараз не можна виконати.
limited.limitResponse.type (string), обовʼязково
type
— "Queue" або "Reject". "Queue" означає, що запити, які зараз не можна виконати, утримуються в черзі, поки їх не буде можливо виконати або досягнуто обмеження черги. "Reject" означає, що запити, які зараз не можна виконати, відхиляються. Обовʼязковщ.limited.limitResponse.queuing (QueuingConfiguration)
queuing
містить параметри конфігурації для черги. Це поле може бути не порожнім лише тоді, колиtype
встановлено на"Queue"
.QueuingConfiguration містить параметри конфігурації для черги
limited.limitResponse.queuing.handSize (int32)
handSize
— невелике позитивне число, яке налаштовує розподіл замовлень до черг. При включенні запита на цьому рівні пріоритету ідентифікатор потоку запиту (пара рядків) хешується, і значення хеша використовується для перетасовки списку черг і роздачі руки розміру, вказаного тут. Запит поміщається в одну з найкоротших черг в цій руці.handSize
не повинно бути більшим, ніжqueues
, і повинно бути значно меншим (щоб кілька важких потоків не насичували більшість черг). Див. документацію для користувачів для більш детальної інформації щодо налаштування цього поля. Стандартне значення — 8.limited.limitResponse.queuing.queueLengthLimit (int32)
queueLengthLimit
— максимальна кількість запитів, які дозволяється очікувати в заданій черзі цього рівня пріоритету одночасно; зайві запити відхиляються. Це значення повинно бути позитивним. Якщо не вказано, воно стандартно буде встановлено на 50.limited.limitResponse.queuing.queues (int32)
queues
— кількість черг для цього рівня пріоритету. Черги існують незалежно в кожному apiserver. Значення повинно бути позитивним. Встановлення його на 1 фактично виключає shufflesharding і, таким чином, робить метод відмінності асоційованих схем потоків неактуальним. Стандартно поле має значення 64.
limited.nominalConcurrencyShares (int32)
nominalConcurrencyShares
(NCS) вносить свій внесок до обчислення NominalConcurrencyLimit (NominalCL) цього рівня. Це кількість виконавчих місць, доступних на цьому рівні пріоритету. Це використовується як для запитів, розподілених з цього рівня пріоритету, так і для запитів, розподілених з інших рівнів пріоритету, які позичають місця з цього рівня. Ліміт конкурентності сервера (ServerCL) розподіляється серед обмежених рівнів пріоритету в пропорції до їх значень NCS:NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k)
Більші значення означають більший номінальний ліміт конкурентності, за рахунок інших рівнів пріоритету.
Якщо не вказано, стандартно це поле має значення 30.
Встановлення цього поля в нуль підтримує створення «вʼязниці» для цього рівня пріоритету, яка використовується для утримання деяких запитів
type (string), required
type
вказує, чи підлягає цей рівень пріоритету обмеженням на виконання запитів. Значення"Exempt"
означає, що запити цього рівня пріоритету не підлягають обмеженням (і, отже, ніколи не ставляться в чергу) і не впливають на потужність, доступну для інших рівнів пріоритету. Значення"Limited"
означає, що (a) запити цього рівня пріоритету підлягають обмеженням і (b) частина обмеженої потужності сервера доступна виключно для цього рівня пріоритету. Обовʼязкове.
PriorityLevelConfigurationStatus
PriorityLevelConfigurationStatus представляє поточний стан "пріоритету запитів".
conditions ([]PriorityLevelConfigurationCondition)
Patch strategy: обʼєднання за ключем
type
Map: унікальні значення за ключем типу зберігатимуться під час обʼєднання
conditions
- поточний стан "пріоритету запитів".PriorityLevelConfigurationCondition визначає стан рівня пріоритету.
conditions.lastTransitionTime (Time)
lastTransitionTime
— останній час, коли стан змінився з одного статусу на інший.Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
message
— це повідомлення, зрозуміле людині та вказує на деталі останнього переходу.conditions.reason (string)
reason
— унікальна причина, одне слово, у CamelCase причина останнього переходу стану.conditions.status (string)
status
— це стан статусу. Може бути True, False, Unknown. Обовʼязково.conditions.type (string)
type
- це тип умови. Обовʼязково.
PriorityLevelConfigurationList
PriorityLevelConfigurationList — це список обʼєктів PriorityLevelConfiguration.
apiVersion: flowcontrol.apiserver.k8s.io/v1
kind: PriorityLevelConfigurationList
metadata (ListMeta)
metadata
— це стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadataitems ([]PriorityLevelConfiguration), обовʼязково
items
— це список пріоритетів запитів.
Операції
get
отримати вказану PriorityLevelConfiguration
HTTP запит
GET /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityLevelConfiguration
pretty (в запиті): string
Відповідь
200 (PriorityLevelConfiguration): OK
401: Unauthorized
get
отримати статус вказаної PriorityLevelConfiguration
HTTP запит
GET /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityLevelConfiguration
pretty (в запиті): string
Відповідь
200 (PriorityLevelConfiguration): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу PriorityLevelConfiguration
HTTP запит
GET /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (PriorityLevelConfigurationList): OK
401: Unauthorized
create
створення PriorityLevelConfiguration
HTTP запит
POST /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations
Параметри
body: PriorityLevelConfiguration, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PriorityLevelConfiguration): OK
201 (PriorityLevelConfiguration): Created
202 (PriorityLevelConfiguration): Accepted
401: Unauthorized
update
заміна вказаної PriorityLevelConfiguration
HTTP запит
PUT /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityLevelConfiguration
body: PriorityLevelConfiguration, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PriorityLevelConfiguration): OK
201 (PriorityLevelConfiguration): Created
401: Unauthorized
update
заміна статусу вказаної PriorityLevelConfiguration
HTTP запит
PUT /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityLevelConfiguration
body: PriorityLevelConfiguration, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PriorityLevelConfiguration): OK
201 (PriorityLevelConfiguration): Created
401: Unauthorized
patch
часткове оновлення вказаної PriorityLevelConfiguration
HTTP запит
PATCH /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityLevelConfiguration
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PriorityLevelConfiguration): OK
201 (PriorityLevelConfiguration): Created
401: Unauthorized
patch
часткове оновлення статусу вказаної PriorityLevelConfiguration
HTTP запит
PATCH /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityLevelConfiguration
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PriorityLevelConfiguration): OK
201 (PriorityLevelConfiguration): Created
401: Unauthorized
delete
видалення PriorityLevelConfiguration
HTTP запит
DELETE /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityLevelConfiguration
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
вилучення колекції PriorityLevelConfiguration
HTTP запит
DELETE /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations
Параметри
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
7 - ValidatingAdmissionPolicy
apiVersion: admissionregistration.k8s.io/v1
import "k8s.io/api/admissionregistration/v1"
ValidatingAdmissionPolicy
ValidatingAdmissionPolicy описує визначення політики перевірки допуску, яка приймає або відхиляє обʼєкт, не змінюючи його.
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicy
metadata (ObjectMeta)
Стандартні метадані обʼєкта; Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
spec (ValidatingAdmissionPolicySpec)
Специфікація бажаної поведінки ValidatingAdmissionPolicy.
ValidatingAdmissionPolicySpec — це специфікація бажаної поведінки AdmissionPolicy.
spec.auditAnnotations ([]AuditAnnotation)
Atomic: буде замінено під час обʼєднання
auditAnnotations містить вирази CEL, які використовуються для створення анотацій аудити для події аудити запиту API. validations і auditAnnotations не можуть бути одночасно порожніми; потрібна щонайменше одна з validations або auditAnnotations.
AuditAnnotation описує, як створити анотацію аудиту для запиту API.
spec.auditAnnotations.key (string), обовʼязково
key визначає ключ анотації аудиту. Ключі анотацій аудиту ValidatingAdmissionPolicy мають бути унікальними. Ключ повинен бути кваліфікованим імʼям ([A-Za-z0-9][-A-Za-z0-9_.]*) довжиною не більше 63 байт.
Ключ поєднується з імʼям ресурсу ValidatingAdmissionPolicy для створення ключа анотації аудиту: "{ValidatingAdmissionPolicy name}/{key}".
Якщо admission webhook використовує те саме імʼя ресурсу, що й цей ValidatingAdmissionPolicy, і той самий ключ анотації аудиту, ключ анотації буде ідентичним. У цьому випадку перша анотація, написана з цим ключем, буде включена в подію аудиту, а всі наступні анотації з тим самим ключем будуть відхилені.
Обовʼязково.
spec.auditAnnotations.valueExpression (string), обовʼязково
valueExpression представляє вираз, який оцінюється CEL для створення значення анотації аудиту. Вираз має оцінюватися або як рядок, або як значення null. Якщо вираз оцінюється як рядок, анотація аудиту включається зі значенням рядка. Якщо вираз оцінюється як null або порожній рядок, анотація аудиту буде пропущена. valueExpression може бути не довше 5 КБ. Якщо результат valueExpression перевищує 10 КБ, він буде скорочений до 10 КБ.
Якщо кілька ресурсів ValidatingAdmissionPolicyBinding відповідають запиту API, то valueExpression буде оцінено для кожного звʼязування. Усі унікальні значення, створені valueExpressions, будуть обʼєднані в список, розділений комами.
Обовʼязково.
spec.failurePolicy (string)
failurePolicy визначає, як обробляти невдачі для admission policy. Невдачі можуть виникати через помилки розбору виразів CEL, помилки перевірки типів, помилки виконання та невірні або неправильно налаштовані визначення політики або звʼязувань.
Політика вважається недійсною, якщо spec.paramKind посилається на відсутній Kind. Звʼязок вважається недійсним, якщо spec.paramRef.name посилається на нвідсутній ресурс.
failurePolicy не визначає, як обробляються перевірки, які оцінюються як false.
Коли failurePolicy встановлено на Fail, ValidatingAdmissionPolicyBinding validationActions визначають, як оцінюються невдачі.
Допустимі значення: Ignore або Fail. Стандартне значення — Fail.
spec.matchConditions ([]MatchCondition)
Patch strategy: обʼєднання за ключем
name
Map: під час обʼєднання зберігаються унікальні значення за ключем name
MatchConditions — це список умов, які мають бути виконані для перевірки запиту. Умови збігу фільтрують запити, які вже відповідали правилам, namespaceSelector та objectSelector. Порожній список matchConditions відповідає всім запитам. Максимально допустимо 64 умови перевірки збігів.
Якщо надається обʼєкт параметрів, до нього можна отримати доступ за допомогою дескриптора
params
так само як до виразів перевірки.Логіка точного збігу така (за порядком):
- Якщо БУДЬ-ЯКА умова відповідності оцінюється як FALSE, політика оминається.
- Якщо ВСІ умови відповідності оцінюються як TRUE, політика оцінюється.
- Якщо будь-яка умова відповідності оцінюється як помилка (але жодна не є FALSE):
- Якщо failurePolicy=Fail, запит відхиляється
- Якщо failurePolicy=Ignore, політика пропускається
MatchCondition представляє умову, яка має бути виконана для надсилання запиту до webhook.
spec.matchConditions.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, створений із 'authorizer' і налаштований із запитним ресурсом. Документація по CEL: https://kubernetes.io/docs/reference/using-api/cel/
Обовʼязково.
spec.matchConditions.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')
Обовʼязково.
spec.matchConstraints (MatchResources)
MatchConstraints вказує, які ресурси ця політика призначена перевіряти. AdmissionPolicy піклується про запит, якщо він відповідає всім Constraints. Однак, щоб запобігти стану нестабільності кластерів, який не можна виправити через API, ValidatingAdmissionPolicy не може відповідати ValidatingAdmissionPolicy та ValidatingAdmissionPolicyBinding. Обовʼязково.
MatchResources вирішує, чи запускати політику контролю доступу до обʼєкта на основі того, чи відповідає він критеріям відповідності. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає обом, він виключається)
spec.matchConstraints.excludeResourceRules ([]NamedRuleWithOperations)
Atomic: буде замінено під час злиття
ExcludeResourceRules описує, які операції над якими ресурсами/субресурсами не повинні цікавити політику ValidatingAdmissionPolicy. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає обом правилам, він виключається)
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
spec.matchConstraints.excludeResourceRules.apiGroups ([]string)
Atomic: буде замінено під час злиття
APIGroups — це API групи, до яких належать ресурси. '*' означає всі групи. Якщо присутній симовл '*', довжина масиву повинна бути одиницею. Обовʼязково.
spec.matchConstraints.excludeResourceRules.apiVersions ([]string)
Atomic: буде замінено під час злиття
APIVersions — це API версії, до яких належать ресурси. '*' означає всі версії. Якщо присутній '*', довжина масиву повинна бути одиницею. Обовʼязково.
spec.matchConstraints.excludeResourceRules.operations ([]string)
Atomic: буде замінено під час злиття
Operations — це операції, які цікавлять хук допуску — CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій та будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ '*', довжина масиву повинна бути одиницею. Обовʼязково.
spec.matchConstraints.excludeResourceRules.resourceNames ([]string)
Atomic: буде замінено під час злиття
ResourceNames —це необовʼязковий білий список імен, до яких застосовується правило. Порожній набір означає, що дозволено все.
spec.matchConstraints.excludeResourceRules.resources ([]string)
Atomic: буде замінено під час злиття
Resources — це список ресурсів, до яких застосовується це правило.
Наприклад: 'pods' означає Podʼи. 'pods/log' означає субресурс логу для Podʼів. '*' означає всі ресурси, але не субресурси. 'pods/*' означає всі субресурси Podʼів. '*/scale' означає всі субресурси масштабування. '*/*' означає всі ресурси та їх субресурси.
Якщо присутній символ підстановки, правило перевірки забезпечить, що ресурси не перекривають один одного.
Залежно від обʼєкта, що охоплює, субресурси можуть бути недозволеними. Обовʼязково.
spec.matchConstraints.excludeResourceRules.scope (string)
scope вказує область застосування цього правила. Допустимі значення: "Cluster", "Namespaced" і "*" "Cluster" означає, що тільки ресурси на рівні кластера відповідатимуть цьому правилу. Обʼєкти API простору імен є кластерними. "Namespaced" означає, що тільки ресурси на рівні простору імен відповідатимуть цьому правилу. "*" означає, що немає обмежень щодо області застосування. Субресурси відповідають області свого батьківського ресурсу. Стандартно — "*".
spec.matchConstraints.matchPolicy (string)
matchPolicy визначає, як використовувати список "MatchResources" для відповідності вхідним запитам. Допустимі значення: "Exact" або "Equivalent".
Exact: відповідність запиту лише в разі точного збігу з певним правилом. Наприклад, якщо розгортання (deployments) можна змінити через apps/v1, apps/v1beta1 і extensions/v1beta1, але "правила" включають лише
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]
, запит до apps/v1beta1 або extensions/v1beta1 не буде відправлено до ValidatingAdmissionPolicy.Equivalent: відповідність запиту, якщо він змінює ресурс, зазначений у правилах, навіть через іншу групу або версію API. Наприклад, якщо розгортання можна змінити через apps/v1, apps/v1beta1 і extensions/v1beta1, і "правила" включають лише
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]
, запит до apps/v1beta1 або extensions/v1beta1 буде перетворено на apps/v1 і відправлено до ValidatingAdmissionPolicy.
Стандартно — "Equivalent".
spec.matchConstraints.namespaceSelector (LabelSelector)
NamespaceSelector визначає, чи запускати політику контролю допуску для обʼєкта на основі того, чи відповідає простір імен для цього обʼєкта селектору. Якщо сам обʼєкт є простором імен, перевірка збігу виконується для обʼєкта.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, який відповідає всьому.
spec.matchConstraints.objectSelector (LabelSelector)
ObjectSelector визначає, чи запускати перевірку на основі наявності в обʼєкта відповідних міток. objectSelector оцінюється щодо старого та нового обʼєктів, які будуть відправлені на cel перевірку, і вважається, що є збіг, якщо хоча б один обʼєкт має збіг з селектором. Порожній обʼєкт (oldObject у разі створення або newObject у разі видалення) або обʼєкт, який не може мати міток (наприклад, DeploymentRollback або PodProxyOptions) не вважається таким, що має збіг. Використовуйте селектор обʼєктів тільки якщо вебхук є опціональним, оскільки кінцеві користувачі можуть оминути вебхук допуску, встановивши мітки. Стандартно пустий LabelSelector, який відповідає всьому.
spec.matchConstraints.resourceRules ([]NamedRuleWithOperations)
Atomic: буде замінено під час злиття
ResourceRules описує, які операції з якими ресурсами/субресурсами відповідають ValidatingAdmissionPolicy. Політика цікавиться операцією, якщо вона відповідає будь-якому Правилу.
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
spec.matchConstraints.resourceRules.apiGroups ([]string)
Atomic: буде замінено під час злиття
APIGroups — це групи API, до яких належать ресурси. '*' означає всі групи. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
spec.matchConstraints.resourceRules.apiVersions ([]string)
Atomic: буде замінено під час злиття
APIVersions — це версії API, до яких належать ресурси. '*' означає всі версії. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
spec.matchConstraints.resourceRules.operations ([]string)
Atomic: буде замінено під час злиття
Operations — це операції, які цікавлять вебхук допуску — CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
spec.matchConstraints.resourceRules.resourceNames ([]string)
Atomic: буде замінено під час злиття
ResourceNames — це необовʼязковий білий список імен, до яких застосовується правило. Порожній набір означає, що дозволено все.
spec.matchConstraints.resourceRules.resources ([]string)
Atomic: буде замінено під час злиття
Resources — це список ресурсів, до яких застосовується це правило.
Наприклад, 'pods' означає Podʼи, 'pods/log' означає субресурс логу Podʼів. '*' означає всі ресурси, але не субресурси. 'pods/*' означає всі субресурси Podʼів. '*/scale' означає всі субресурси масштабування. '*/*' означає всі ресурси та їх субресурси.
Якщо присутній універсальний символ, правило валідації забезпечить відсутність перекриття ресурсів.
Залежно від навколишнього обʼєкта, субресурси можуть бути недопустимими. Обовʼязково.
spec.matchConstraints.resourceRules.scope (string)
scope визначає область застосування цього правила. Допустимі значення — "Cluster", "Namespaced" та "*" "Cluster" означає, що правило буде застосовано тільки до ресурсів на рівні кластера. API обʼєкти простору імен є ресурсами на рівні кластера. "Namespaced" означає, що правило буде застосовано тільки до ресурсів простору імен. "*" означає, що немає обмежень на область застосування. Субресурси відповідають області застосування свого батьківського ресурсу. Стандартне значення — "*".
spec.paramKind (ParamKind)
ParamKind визначає тип ресурсів, що використовуються для параметризації цієї політики. Якщо відсутній, то для цієї політики немає параметрів і змінна param CEL не буде надана для виразів перевірки. Якщо ParamKind посилається на неіснуючий тип, ця політика налаштована неправильно і застосовується FailurePolicy. Якщо paramKind вказано, але paramRef не встановлено в ValidatingAdmissionPolicyBinding, змінна params буде null.
ParamKind є кортежем Group, Kind і Version.
spec.paramKind.apiVersion (string)
APIVersion — це версія групи API, до якої належать ресурси. У форматі "group/version". Обовʼязково.
spec.paramKind.kind (string)
Kind — це тип API, до якого належать ресурси. Обовʼязково.
spec.validations ([]Validation)
Atomic: буде замінено під час злиття
Validations містять CEL-вирази, які використовуються для застосування перевірки. Validations і AuditAnnotations не можуть обидва бути порожніми; потрібен мінімум щось одне з Validations або AuditAnnotations.
Validation визначає CEL-вираз, який використовується для перевірки.
spec.validations.expression (string), обовʼязково
Expression представляє вираз, який буде оцінюватися CEL. ref: https://github.com/google/cel-spec CEL-вирази мають доступ до вмісту запиту/відповіді API, організованих у змінні CEL, а також деякі інші корисні змінні:
- 'object' — Обʼєкт з вхідного запиту. Значення null для запитів DELETE.
- 'oldObject' — Наявний обʼєкт. Значення null для запитів CREATE.
- 'request' — Атрибути запиту API(ref).
- 'params' — Параметр ресурсу, на який посилається перевірка політики. Заповнюється лише, якщо політика має ParamKind.
- 'namespaceObject' — Обʼєкт простору імен, до якого належить вхідний обʼєкт. Значення null для ресурсів на рівні кластера.
- 'variables' - Map змінних, від їх назви до їхнього ледачого (lazily) оцінюваного значення. Наприклад, змінна з назвою 'foo' може бути доступна як 'variables.foo'.
- 'authorizer' — CEL Authorizer. Може використовуватися для виконання перевірок авторизації для виконавця (користувача або облікового запису служби) запиту. Див. https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
- 'authorizer.requestResource' — CEL ResourceCheck, створений з 'authorizer' та налаштований для ресурсу запиту.
apiVersion
,kind
,metadata.name
іmetadata.generateName
завжди доступні з кореня обʼєкта. Інші властивості метаданих недоступні.Доступні лише імена властивостей у формі
[a-zA-Z_.-/][a-zA-Z0-9_.-/]*
. Доступні імена властивостей екрануються згідно з наступними правилами, коли доступні у виразі:'__' екранується як 'underscores'
'.' екранується як 'dot'
'-' екранується як 'dash'
'/' екранується як 'slash'
Імена властивостей, що точно збігаються з CEL РЕЗЕРВОВАНИМИ ключовими словами, екрануються як '{keyword}'. Ключові слова включають: "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", "import", "let", "loop", "package", "namespace", "return". Приклади:
Вираз, що звертається до властивості з назвою "namespace": {"Expression": "object.namespace > 0"}
Вираз, що звертається до властивості з назвою "x-prop": {"Expression": "object.x__dash__prop > 0"}
Вираз, що звертається до властивості з назвою "redact__d": {"Expression": "object.redact__underscores__d > 0"}
Рівність масивів із типом списку 'set' або 'map' ігнорує порядок елементів, тобто [1, 2] == [2, 1]. Конкатенація масивів із типом списку x-kubernetes використовує семантику типу списку:
- 'set':
X + Y
виконує обʼєднання, де позиції масиву всіх елементів уX
зберігаються, а елементи вY
, що не перетинаються, додаються зі збереженням їх часткового порядку. - 'map':
X + Y
виконує злиття, де позиції масиву всіх ключів уX
зберігаються, але значення замінюються значеннями зY
, коли множини ключівX
таY
перетинаються. Елементи вY
з ключами, що не перетинаються з ключами, що не перетинаються, додаються зі збереженням їх часткового порядку. Обовʼязково.
spec.validations.message (string)
Message представляє повідомлення, що відображається при невдалій перевірці. Повідомлення обовʼязкове, якщо Expression містить розриви рядка. Повідомлення не повинно містити розриви рядка. Якщо не вказано, повідомлення — "failed rule: {Rule}". Наприклад, "must be a URL with the host matching spec.host" Якщо Expression містить розриви рядка, повідомлення обовʼязкове. Повідомлення не повинно містити розриви рядка. Якщо не встановлено, повідомлення — "failed Expression: {Expression}".
spec.validations.messageExpression (string)
messageExpression оголошує CEL-вираз, який оцінюється як повідомлення про невдачу перевірки, що повертається, коли це правило не виконується. Оскільки messageExpression використовується як повідомлення про невдачу, воно повинно оцінюватися як рядок. Якщо і message, і messageExpression присутні у перевірці, то messageExpression буде використано, якщо перевірка не вдалася. Якщо messageExpression призводить до помилки під час виконання, помилка записується в лог, і повідомлення про невдачу перевірки створюється так, ніби поле messageExpression не було встановлено. Якщо messageExpression оцінюється як порожній рядок, рядок з лише пробілами або рядок, що містить розриви рядка, то повідомлення про невдачу перевірки також створюється так, ніби поле messageExpression не було встановлено, і факт того, що messageExpression створило порожній рядок/рядок з лише пробілами/рядок з розривами рядка, буде записано в лог. messageExpression має доступ до всіх тих самих змінних, що і
expression
, за винятком 'authorizer' та 'authorizer.requestResource'. Приклад: "object.x must be less than max ("+string(params.max)+")"spec.validations.reason (string)
Reason представляє машинно-зчитуваний опис того, чому ця перевірка не вдалася. Якщо це перша перевірка в списку, що не вдалася, ця причина, а також відповідний код відповіді HTTP, використовуються у відповіді HTTP клієнту. Наразі підтримувані причини: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge". Якщо не встановлено, використовується StatusReasonInvalid у відповіді клієнту.
spec.variables ([]Variable)
Patch strategy: злиття по ключу
name
Map: унікальні значення по ключу
name
будуть зберігатися під час злиттяVariables містять визначення змінних, які можна використовувати у складі інших виразів. Кожна змінна визначена як іменований CEL-вираз. Змінні, визначені тут, будуть доступні у
variables
в інших виразах політики, за винятком MatchConditions, оскільки MatchConditions оцінюються перед рештою політики.Вираз змінної може посилатися на інші змінні, визначені раніше у списку, але не на ті, що стоять після неї. Таким чином, змінні мають бути відсортовані за порядком першої появи та ациклічно.
Variable — це визначення змінної, яка використовується для складання. Змінна визначається як іменований вираз.
spec.variables.expression (string), обовʼязково
Expression — це вираз, який буде оцінений як значення змінної. CEL-вираз має доступ до тих самих ідентифікаторів, що і CEL-вирази в Validation.
spec.variables.name (string), обовʼязково
Name — це назва змінної. Назва повинна бути дійсним ідентифікатором CEL і унікальною серед усіх змінних. Змінна може бути доступна в інших виразах через
variables
Наприклад, якщо name є "foo", змінна буде доступна якvariables.foo
.
status (ValidatingAdmissionPolicyStatus)
Статус ValidatingAdmissionPolicy, включаючи попередження, які корисні для визначення, чи працює політика відповідно до очікувань. Заповнюється системою. Тільки для читання.
ValidatingAdmissionPolicyStatus представляє статус політики перевірки допуску.
status.conditions ([]Condition)
Map: унікальні значення по ключу type будуть зберігатися під час злиття
Стани представляють останні доступні спостереження поточного стану політики.
Condition містить деталі одного аспекту поточного стану цього API-ресурсу.
status.conditions.lastTransitionTime (Time), обовʼязково
lastTransitionTime — це останній час, коли стан перейшов з одного стану в інший. Це має бути, коли змінився основний стан. Якщо це невідомо, то прийнятно використовувати час, коли змінилося поле API.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
status.conditions.message (string), обовʼязково
message — це повідомлення зрозуміле людині, яке вказує деталі про зміну стану. Воно може бути порожній рядок.
status.conditions.reason (string), обовʼязково
reason містить програмний ідентифікатор, що вказує на причину останньої зміни стану. Виробники конкретних типів станів можуть визначити очікувані значення та значення для цього поля, а також чи вважаються значення гарантованим API. Значення має бути рядком у форматі CamelCase. Це поле не може бути порожнім.
status.conditions.status (string), обовʼязково
статус стану, один з True, False, Unknown.
status.conditions.type (string), обовʼязково
тип стану у форматі CamelCase або у форматі foo.example.com/CamelCase.
status.conditions.observedGeneration (int64)
observedGeneration представляє .metadata.generation, на основі якого було встановлено стан. Наприклад, якщо .metadata.generation зараз 12, але .status.conditions[x].observedGeneration - 9, стан застарів відносно поточного стану екземпляра.
status.observedGeneration (int64)
Покоління, яке спостерігалося контролером.
status.typeChecking (TypeChecking)
Результати перевірки типу для кожного виразу. Наявність цього поля вказує на завершення перевірки типу.
TypeChecking містить результати перевірки типу виразів у ValidatingAdmissionPolicy
status.typeChecking.expressionWarnings ([]ExpressionWarning)
Atomic: буде замінено під час злиття
Попередження перевірки типу для кожного виразу.
ExpressionWarning — це інформація про попередження, що стосується конкретного виразу.
status.typeChecking.expressionWarnings.fieldRef (string), обовʼязково
Шлях до поля, що посилається на вираз. Наприклад, посилання на вираз першого елемента перевірок є "spec.validations[0].expression".
status.typeChecking.expressionWarnings.warning (string), обовʼязково
Вміст інформації про попередження перевірки типу у формі, зручною для читання людиною. Кожен рядок попередження містить тип, за яким перевірено вираз, а потім помилку перевірки типу від компілятора.
ValidatingAdmissionPolicyList
ValidatingAdmissionPolicyList - це список ValidatingAdmissionPolicy.
items ([]ValidatingAdmissionPolicy), обовʼязково
Список ValidatingAdmissionPolicy.
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 (ListMeta)
Стандартні метадані списку. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds.
ValidatingAdmissionPolicyBinding
ValidatingAdmissionPolicyBinding повʼязує ValidatingAdmissionPolicy з параметризованими ресурсами. ValidatingAdmissionPolicyBinding та параметризовані CRD разом визначають, як адміністратори кластерів налаштовують політики для кластерів.
Для даного запиту на допуск кожне привʼязування спричиняє оцінку його політики N разів, де N дорівнює 1 для політик/привʼязок, які не використовують параметри, або кількість параметрів, обраних привʼязкою.
CEL вирази політики повинні мати обчислену вартість CEL нижче максимально допустимого бюджету CEL. Кожна оцінка політики отримує незалежний бюджет CEL. Додавання/видалення політик, привʼязок або параметрів не може впливати на те, чи знаходиться комбінація (policy, binding, param) у своєму бюджеті CEL.
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 (ValidatingAdmissionPolicyBindingSpec)
Специфікація бажаної поведінки ValidatingAdmissionPolicyBinding.
ValidatingAdmissionPolicyBindingSpec - це специфікація ValidatingAdmissionPolicyBinding.
spec.matchResources (MatchResources)
MatchResources оголошує, які ресурси відповідають цій привʼязці і будуть перевірені нею. Зауважте, що це перетинається з matchConstraints політики, тому лише запити, які відповідають політиці, можуть бути обрані. Якщо це поле не встановлено, всі ресурси, які відповідають політиці, перевіряються цією привʼязкою. Якщо resourceRules не встановлено, це не обмежує відповідність ресурсу. Якщо ресурс відповідає іншим полям цього обʼєкта, він буде перевірений. Зауважте, що це відрізняється від matchConstraints ValidatingAdmissionPolicy, де resourceRules є обовʼязковими.
MatchResources вирішує, чи запускати політику контролю допуску на обʼєкті на основі відповідності критеріям відповідності. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає обом, він виключається).
spec.matchResources.excludeResourceRules ([]NamedRuleWithOperations)
Atomic: буде замінено під час обʼєднання
ExcludeResourceRules описує, які операції на яких ресурсах/субресурсах ValidatingAdmissionPolicy не повинна враховувати. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає обом, він виключається).
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
spec.matchResources.excludeResourceRules.apiGroups ([]string)
Atomic: буде замінено під час обʼєднання
APIGroups — це групи API, до яких належать ресурси. '*' означає всі групи. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
spec.matchResources.excludeResourceRules.apiVersions ([]string)
Atomic: буде замінено під час обʼєднання
APIVersions — це версії API, до яких належать ресурси. '*' означає всі версії. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
spec.matchResources.excludeResourceRules.operations ([]string)
Atomic: буде замінено під час обʼєднання
Operations — це операції, які цікавлять вебхук допуску — CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
spec.matchResources.excludeResourceRules.resourceNames ([]string)
Atomic: буде замінено під час обʼєднання
ResourceNames — це необовʼязковий білий список імен, до яких застосовується правило. Порожній набір означає, що дозволено все.
spec.matchResources.excludeResourceRules.resources ([]string)
Atomic: буде замінено під час обʼєднання
Resources — це список ресурсів, до яких застосовується це правило.
Наприклад, 'pods' означає Podʼи, 'pods/log' означає субресурс логу Podʼів. '*' означає всі ресурси, але не субресурси. 'pods/*' означає всі субресурси Podʼів. '*/scale' означає всі субресурси масштабування. '*/*' означає всі ресурси та їх субресурси.
Якщо присутній універсальний символ, правило валідації забезпечить відсутність перекриття ресурсів.
Залежно від навколишнього обʼєкта, субресурси можуть бути недопустимими. Обовʼязково.
spec.matchResources.excludeResourceRules.scope (string)
scope визначає сферу дії цього правила. Дійсні значення — "Cluster", "Namespaced" та "*". "Cluster" означає, що тільки ресурси кластерного рівня відповідатимуть цьому правилу. Обʼєкти API namespace є ресурсами кластерного рівня. "Namespaced" означає, що тільки ресурси namespace відповідатимуть цьому правилу. "*" означає, що немає обмежень на сферу дії. Субресурси відповідають сфері дії їхнього батьківського ресурсу. Стандартне значння — "*".
spec.matchResources.matchPolicy (string)
matchPolicy визначає, як список "MatchResources" використовується для пошуку збігів з вхідними запитами. Дозволені значення — "Exact" або "Equivalent".
Exact: відповідати запиту тільки, якщо він точно відповідає зазначеному правилу. Наприклад, якщо розгортання (deployments) можна змінювати через apps/v1, apps/v1beta1 та extensions/v1beta1, але "rules" включали тільки
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]
, запит на apps/v1beta1 або extensions/v1beta1 не буде надіслано до ValidatingAdmissionPolicy.Equivalent: відповідати запиту, якщо він змінює ресурс, зазначений у правилах, навіть через іншу групу або версію API. Наприклад, якщо розгортання (deployments) можна змінювати через apps/v1, apps/v1beta1 та extensions/v1beta1, і "rules" включали тільки
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]
, запит на apps/v1beta1 або extensions/v1beta1 буде перетворено на apps/v1 і надіслано до ValidatingAdmissionPolicy.
Стандартно — "Equivalent".
spec.matchResources.namespaceSelector (LabelSelector)
NamespaceSelector визначає, чи застосовувати політику контролю доступу до об’єкта на основі відповідності простору імен цього об’єкта селектору. Якщо об’єкт сам по собі є простором імен, відповідність перевіряється по обʼєкту.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, який відповідає всьому.
spec.matchResources.objectSelector (LabelSelector)
ObjectSelector визначає, чи потрібно виконувати перевірку на основі відповідності міток об’єкта. objectSelector оцінюється як для oldObject, так і для newObject, які будуть надіслані на перевірку cel, і вважається відповідним, якщо будь-який об’єкт відповідає селектору. Null обʼєкт (oldObject у випадку створення або newObject у випадку видалення) або об’єкт, який не може мати міток (наприклад, DeploymentRollback або PodProxyOptions), не вважається відповідним. Використовуйте селектор об’єктів, тільки якщо вебхук є опціональним, оскільки кінцеві користувачі можуть оминути вебхук допуску, встановивши мітки. Стандартно використовується порожній LabelSelector, який відповідає всьому.
spec.matchResources.resourceRules ([]NamedRuleWithOperations)
Atomic: буде замінено під час злиття
ResourceRules описує, які операції на яких ресурсах/субресурсах відповідають ValidatingAdmissionPolicy. Політика враховує операцію, якщо вона відповідає будь-якому правилу.
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
spec.matchResources.resourceRules.apiGroups ([]string)
Atomic: буде замінено під час злиття
APIGroups — це групи API, до яких належать ресурси. '*' означає всі групи. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
spec.matchResources.resourceRules.apiVersions ([]string)
Atomic: буде замінено під час злиття
APIVersions — це версії API, до яких належать ресурси. '*' означає всі версії. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
spec.matchResources.resourceRules.operations ([]string)
Atomic: буде замінено під час злиття
Operations — це операції, які цікавлять вебхук допуску — CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
spec.matchResources.resourceRules.resourceNames ([]string)
Atomic: буде замінено під час злиття
ResourceNames — це необовʼязковий білий список імен, до яких застосовується правило. Порожній набір означає, що все дозволено.
spec.matchResources.resourceRules.resources ([]string)
Atomic: буде замінено під час злиття
Resources — це список ресурсів, до яких застосовується це правило.
Наприклад, 'pods' означає Podʼи, 'pods/log' означає субресурс логу Podʼів. '*' означає всі ресурси, але не субресурси. 'pods/*' означає всі субресурси Podʼів. '*/scale' означає всі субресурси масштабування. '*/*' означає всі ресурси та їх субресурси.
Якщо присутній універсальний символ, правило валідації забезпечить відсутність перекриття ресурсів.
Залежно від навколишнього обʼєкта, субресурси можуть бути недопустимими. Обовʼязково.
spec.matchResources.resourceRules.scope (string)
scope визначає область застосування цього правила. Допустимі значення — "Cluster", "Namespaced" та "*". "Cluster" означає, що правило буде застосовано тільки до ресурсів на рівні кластера. API обʼєкти простору імен є ресурсами на рівні кластера. "Namespaced" означає, що правило буде застосовано тільки до ресурсів простору імен. "*" означає, що немає обмежень на область застосування. Субресурси відповідають області застосування свого батьківського ресурсу. Стандартне значення — "*".
spec.paramRef (ParamRef)
paramRef вказує на ресурс параметра, який використовується для налаштування політики контролю допуску. Він повинен вказувати на ресурс типу, визначеного в ParamKind прив’язаної ValidatingAdmissionPolicy. Якщо політика вказує ParamKind, а ресурс, на який посилається ParamRef, не існує, ця привʼязка вважається неправильно налаштованою, і застосовується FailurePolicy ValidatingAdmissionPolicy. Якщо політика не вказує ParamKind, це поле ігнорується, і правила оцінюються без параметра.
ParamRef описує, як знайти параметри, які будуть використовуватися як вхідні дані для виразів правил, що застосовуються привʼязкою політики.
spec.paramRef.name (string)
name — це імʼя ресурсу, на який посилаються.
Одне з
name
абоselector
повинно бути встановлено, алеname
іselector
є взаємовиключними властивостями. Якщо одне встановлено, інше повинно бути відключено.Один параметр, який використовується для всіх запитів на допуск, можна налаштувати, встановивши поле
name
, залишившиselector
порожнім і встановивши простір імен, якщоparamKind
має простір імен.spec.paramRef.namespace (string)
namespace — це простір імен ресурсу, на який посилаються. Дозволяє обмежити пошук параметрів певним простором імен. Застосовується як до полів
name
, так і доselector
.Можна використовувати параметр для кожного простору імен, вказавши простір імен для
paramKind
у політиці та залишивши це поле порожнім.Якщо
paramKind
є кластерним, це поле МАЄ бути не встановленим. Встановлення цього поля призведе до помилки конфігурації.Якщо
paramKind
має простір імен, використовується простір імен обʼєкта, який оцінюється на допуск, коли це поле залишено порожнім. Слідкуйте за тим, що якщо це поле залишити порожнім, привʼязка не повинна відповідати жодним ресурсам на рівні кластера, що призведе до помилки.
spec.paramRef.parameterNotFoundAction (string)
parameterNotFoundAction
контролює поведінку привʼязки, коли ресурс існує, і імʼя або селектор є дійсними, але немає параметрів, які відповідають привʼязці. Якщо значення встановлено наAllow
, тоді відсутність відповідних параметрів буде розцінюватися як успішна валідація привʼязкою. Якщо встановленоDeny
, то відсутність відповідних параметрів буде підпадати під діюfailurePolicy
політики.Допустимі значення:
Allow
абоDeny
.Обовʼязково
spec.paramRef.selector (LabelSelector)
selector може бути використаний для відповідності кільком обʼєктам параметрів на основі їх міток. Поставте selector: {} для відповідності всім ресурсам ParamKind.
Якщо знайдено кілька параметрів, всі вони оцінюються за допомогою виразів політики, і результати об’єднуються логічним І.
Одне з
name
абоselector
повинно бути встановлено, алеname
іselector
є взаємовиключними властивостями. Якщо одне встановлено, інше повинно бути відключено.
spec.policyName (string)
PolicyName посилається на ім’я ValidatingAdmissionPolicy, до якої прив’язується ValidatingAdmissionPolicyBinding. Якщо вказаний ресурс не існує, ця прив’язка вважається недійсною і буде ігнорована. Обовʼязково.
spec.validationActions ([]string)
Set: під час злиття зберігатимуться унікальні значення
validationActions визначає, як виконуються перевірки ValidatingAdmissionPolicy, на яку посилається ValidatingAdmissionPolicyBinding. Якщо перевірка оцінюється як хибна, вона завжди виконується відповідно до цих дій.
Збої, визначені FailurePolicy ValidatingAdmissionPolicy, виконуються відповідно до цих дій лише у випадку, якщо FailurePolicy встановлено на Fail, інакше збої ігноруються. Це включає помилки компіляції, помилки під час виконання та неправильні конфігурації політики.
validationActions оголошується як набір значень дій. Порядок не має значення. validationActions не можуть містити дублікатів одного й того самого значення дії.
Підтримувані значення дій:
"Deny" означає, що збій перевірки призводить до відхилення запиту.
"Warn" означає, що збій перевірки повідомляється клієнту запиту в HTTP-заголовках попередження з кодом попередження 299. Попередження можуть надсилатися як для дозволених, так і для відхилених відповідей на допуск.
"Audit" означає, що збій перевірки включається до опублікованої події аудиту для запиту. Подія аудиту міститиме анотацію аудиту
validation.policy.admission.k8s.io/validation_failure
зі значенням, що містить деталі збоїв перевірки, відформатовані як JSON-список об’єктів, кожен з яких має наступні поля:- message: Рядок повідомлення про збій перевірки
- policy: Ім’я ресурсу ValidatingAdmissionPolicy
- binding: Ім’я ресурсу ValidatingAdmissionPolicyBinding
- expressionIndex: Індекс збоїв перевірки в ValidatingAdmissionPolicy
- validationActions: Дії примусового виконання для збою перевірки Приклад анотації аудиту:
"validation.policy.admission.k8s.io/validation_failure": "[{"message": "Invalid value", {"policy": "policy.example.com", {"binding": "policybinding.example.com", {"expressionIndex": "1", {"validationActions": ["Audit"]}]"
Клієнти повинні очікувати обробки додаткових значень, ігноруючи будь-які значення, які не розпізнаються.
"Deny" і "Warn" не можуть використовуватися разом, оскільки ця комбінація непотрібно дублює збій перевірки як у тілі відповіді API, так і в HTTP-заголовках попередження.
Обовʼязково.
Операції
get
отримати вказану ValidatingAdmissionPolicy
HTTP запит
GET /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ValidatingAdmissionPolicy
pretty (в запиті): string
Відповідь
200 (ValidatingAdmissionPolicy): OK
401: Unauthorized
get
отримати статус вказаної ValidatingAdmissionPolicy
HTTP запит
GET /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя ValidatingAdmissionPolicy
pretty (в запиті): string
Відповідь
200 (ValidatingAdmissionPolicy): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ValidatingAdmissionPolicy
HTTP запит
GET /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ValidatingAdmissionPolicyList): OK
401: Unauthorized
create
створення ValidatingAdmissionPolicy
HTTP запит
POST /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies
Параметри
body: ValidatingAdmissionPolicy, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ValidatingAdmissionPolicy): OK
201 (ValidatingAdmissionPolicy): Created
202 (ValidatingAdmissionPolicy): Accepted
401: Unauthorized
update
заміна вказаної ValidatingAdmissionPolicy
HTTP запит
PUT /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ValidatingAdmissionPolicy
body: ValidatingAdmissionPolicy, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ValidatingAdmissionPolicy): OK
201 (ValidatingAdmissionPolicy): Created
401: Unauthorized
update
заміна статусу вказаної ValidatingAdmissionPolicy
HTTP запит
PUT /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя ValidatingAdmissionPolicy
body: ValidatingAdmissionPolicy, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ValidatingAdmissionPolicy): OK
201 (ValidatingAdmissionPolicy): Created
401: Unauthorized
patch
часткове оновлення вказаної ValidatingAdmissionPolicy
HTTP запит
PATCH /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ValidatingAdmissionPolicy
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ValidatingAdmissionPolicy): OK
201 (ValidatingAdmissionPolicy): Created
401: Unauthorized
patch
часткове оновдення статусу вказанох ValidatingAdmissionPolicy
HTTP запит
PATCH /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя ValidatingAdmissionPolicy
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ValidatingAdmissionPolicy): OK
201 (ValidatingAdmissionPolicy): Created
401: Unauthorized
delete
видалення ValidatingAdmissionPolicy
HTTP запит
DELETE /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ValidatingAdmissionPolicy
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції ValidatingAdmissionPolicy
HTTP запит
DELETE /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies
Параметри
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
8 - ValidatingAdmissionPolicyBinding
apiVersion: admissionregistration.k8s.io/v1
import "k8s.io/api/admissionregistration/v1"
ValidatingAdmissionPolicyBinding
ValidatingAdmissionPolicyBinding повʼязує ValidatingAdmissionPolicy з параметризованими ресурсами. ValidatingAdmissionPolicyBinding і параметризовані CRD разом визначають, як адміністраторам кластерів налаштовувати політики для кластерів.
Для кожного запиту на допуск кожне звʼязування спричинить оцінку його політики N разів, де N дорівнює 1 для політик/звʼязувань, які не використовують параметри, в іншому випадку N є кількість параметрів, вибраних звʼязуванням.
CEL вирази політики повинні мати обчислену вартість CEL нижчу за максимальний бюджет CEL. Кожна оцінка політики отримує незалежний бюджет витрат CEL. Додавання/видалення політик, звʼязувань або параметрів не повинно впливати на те, чи є дана комбінація (політика, звʼязування, параметр) у межах свого бюджету CEL.
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicyBinding
metadata (ObjectMeta)
Стандартний обʼєкт метаданих; Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
spec (ValidatingAdmissionPolicyBindingSpec)
Визначення бажаної поведінки ValidatingAdmissionPolicyBinding.
ValidatingAdmissionPolicyBindingSpec є специфікацією ValidatingAdmissionPolicyBinding.
spec.matchResources (MatchResources)
MatchResources декларує, які ресурси відповідають цьому звʼязуванню і будуть перевірені ним. Зверніть увагу, що це перетинається з
matchConstraints
політики, тому тільки запити, які відповідають політиці, можуть бути вибрані цим звʼязуванням. Якщо це не задано, всі ресурси, що відповідають політиці, будуть перевірені цим звʼязуванням.Коли
resourceRules
не задано, це не обмежує відповідність ресурсів. Якщо ресурс відповідає іншим полям цього обʼєкта, він буде перевірений. Зверніть увагу, що це відрізняється відmatchConstraints
ValidatingAdmissionPolicy, деresourceRules
є обовʼязковими.MatchResources визначає, чи слід застосовувати політику контролю доступу до обʼєкта на основі того, чи відповідає він критеріям відповідності. Правила виключення мають перевагу над правилами включення (якщо ресурс відповідає обом, він буде виключений).
spec.matchResources.excludeResourceRules ([]NamedRuleWithOperations)
Atomic: буде замінено під час злиття
ExcludeResourceRules описує, які операції над якими ресурсами/підресурсами ValidatingAdmissionPolicy не повинна враховувати. Правила виключення мають перевагу над правилами включення (якщо ресурс відповідає обом, він буде виключений).
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
spec.matchResources.excludeResourceRules.apiGroups ([]string)
Atomic: буде замінено під час злиття
APIGroups — це групи API, до яких належать ресурси. '*' — це всі групи. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
spec.matchResources.excludeResourceRules.apiVersions ([]string)
Atomic: буде замінено під час злиття
APIVersions — це версії API, до яких належать ресурси. '*' — всі версії. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
spec.matchResources.excludeResourceRules.operations ([]string)
Atomic: буде замінено під час злиття
Operations — це операції, які цікавлять хук допуску - CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ "*", довжина фрагмента повинна бути одиницею. Обовʼязково.
spec.matchResources.excludeResourceRules.resourceNames ([]string)
Atomic: буде замінено під час злиття
ResourceNames — необовʼязковий білий список імен, до яких застосовується правило. Порожній список означає, що дозволено все.
spec.matchResources.excludeResourceRules.resources ([]string)
Atomic: буде замінено під час злиття
Resources — список ресурсів, до яких застосовується це правило.
Наприклад: 'pods' означає podʼи. 'pods/log' означає підресурс журналу podʼів. '*' означає всі ресурси, але не підресурси. 'pods/*' означає всі підресурси podʼів. '*/scale' означає всі підресурси масштабу. '*/*' означає всі ресурси і їхні підресурси.
Якщо присутній символ підстановки, правило валідації забезпечить, щоб ресурси не перекривалися між собою.
Залежно від обʼєкта, що містить, підресурси можуть бути не дозволені. Обовʼязкове.
spec.matchResources.excludeResourceRules.scope (string)
scope визначає область цього правила. Дійсні значення: "Cluster", "Namespaced" та "*". "Cluster" означає, що лише ресурси з областю дії кластера відповідатимуть цьому правилу. Обʼєкти API простору імен є кластерними. "Namespaced" означає, що лише ресурси з простору імен відповідатимуть цьому правилу. "*" означає, що обмежень за областю дії немає. Підресурси відповідають області їхнього батьківського ресурсу. Стандартно "*".
spec.matchResources.matchPolicy (string)
matchPolicy визначає, як список "MatchResources" використовується для відповідності вхідним запитам. Дійсні значення: "Exact" або "Equivalent".
Exact: відповідати запиту лише тоді, коли він точно відповідає зазначеному правилу. Наприклад, якщо deployments можуть бути змінені через apps/v1, apps/v1beta1 і extensions/v1beta1, але "rules" включали лише
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]
, запит до apps/v1beta1 або extensions/v1beta1 не буде надісланий до ValidatingAdmissionPolicy.Equivalent: відповідати запиту, якщо він змінює ресурс, зазначений у правилах, навіть через іншу групу API або версію. Наприклад, якщо deployments можуть бути змінені через apps/v1, apps/v1beta1 і extensions/v1beta1, і "rules" включають лише
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]
, запит до apps/v1beta1 або extensions/v1beta1 буде перетворено на apps/v1 і надіслано до ValidatingAdmissionPolicy.
Стандартно — "Equivalent".
spec.matchResources.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, який відповідає всьому.
spec.matchResources.objectSelector (LabelSelector)
ObjectSelector вирішує, чи слід виконувати валідацію на основі того, чи має обʼєкт відповідні мітки.
objectSelector
оцінюється як дляoldObject
, так і дляnewObject
, які будуть надіслані на перевірку CEL, і вважається відповідним, якщо хоча б один з обʼєктів відповідає селектору. Обʼєкт null (oldObject у випадку створення або newObject у випадку видалення) або обʼєкт, який не може мати міток (наприклад, DeploymentRollback або PodProxyOptions), не вважається таким, що мають збіг.Використовуйте селектор обʼєкта лише якщо вебхук є опціональним, оскільки кінцеві користувачі можуть пропустити вебхук допуску, встановивши мітки. Стандартно використовується порожній LabelSelector, який відповідає всьому.
spec.matchResources.resourceRules ([]NamedRuleWithOperations)
Atomic: буде замінено під час злиття
ResourceRules описує, які операції з якими ресурсами/підресурсами мають збіг ValidatingAdmissionPolicy. Політика враховує операцію, якщо вона відповідає будь-якому правилу.
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
spec.matchResources.resourceRules.apiGroups ([]string)
Atomic: буде замінено під час злиття
APIGroups — це групи API, до яких належать ресурси. '*' — всі групи. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
spec.matchResources.resourceRules.apiVersions ([]string)
Atomic: буде замінено під час злиття
APIVersions — це версії API, до яких належать ресурси. '*' — всі версії. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
spec.matchResources.resourceRules.operations ([]string)
Atomic: буде замінено під час злиття
Operations — це операції, які цікавлять хук допуску - CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ "*", довжина фрагмента повинна бути одиницею. Обовʼязково.
spec.matchResources.resourceRules.resourceNames ([]string)
Atomic: буде замінено під час злиття
ResourceNames — це необовʼязковий білий список імен, до яких застосовується правило. Порожній набір означає, що дозволено все.
spec.matchResources.resourceRules.resources ([]string)
Atomic: буде замінено під час злиття
Resources — список ресурсів, до яких застосовується це правило.
Наприклад: 'pods' означає podʼи. 'pods/log' означає підресурс журналу podʼів. '*' означає всі ресурси, але не підресурси. 'pods/*' означає всі підресурси podʼів. '*/scale' означає всі підресурси масштабу. '*/*' означає всі ресурси і їхні підресурси.
Якщо присутній символ підстановки, правило валідації забезпечить, щоб ресурси не перекривалися між собою.
Залежно від обʼєкта, що містить, підресурси можуть бути не дозволені. Обовʼязкове.
spec.matchResources.resourceRules.scope (string)
scope визначає область цього правила. Дійсні значення: "Cluster", "Namespaced" та "*". "Cluster" означає, що лише ресурси з областю дії кластера відповідатимуть цьому правилу. Обʼєкти API простору імен є кластерними. "Namespaced" означає, що лише ресурси з простору імен відповідатимуть цьому правилу. "*" означає, що обмежень за областю дії немає. Підресурси відповідають області їхнього батьківського ресурсу. Стандартно "*".
spec.paramRef (ParamRef)
paramRef вказує на ресурс параметра, який використовується для конфігурації політики контролю доступу. Він має вказувати на ресурс типу, зазначеного в ParamKind привʼязаної ValidatingAdmissionPolicy. Якщо політика вказує ParamKind, а ресурс, на який посилається ParamRef, не існує, це привʼязування вважається неправильно налаштованим, і застосовується FailurePolicy ValidatingAdmissionPolicy. Якщо політика не вказує ParamKind, це поле ігнорується, а правила оцінюються без параметра.
ParamRef описує, як знайти параметри, які будуть використовуватися як вхідні дані для виразів правил, застосованих привʼязуванням політики.
spec.paramRef.name (string)
name — це ім'я ресурсу, на який посилаються.
Один з параметрів
name
абоselector
повинен бути заданий, алеname
іselector
є взаємовиключними властивостями. Якщо одне з них задане, інше повинно бути не задане.Один параметр, що використовується для всіх запитів на допуск, можна налаштувати, задавши поле
name
, залишившиselector
порожнім і задавши простір імен, якщоparamKind
має область простору імен.spec.paramRef.namespace (string)
namespace — це простір імен ресурсу, на який посилаються. Дозволяє обмежити пошук параметрів певним простором імен. Застосовується до обох полів
name
іselector
.Параметр для кожного простору імен можна використовувати, вказавши у політиці
paramKind
для простору імен і залишивши це поле порожнім.Якщо
paramKind
має область дії кластер, це поле МАЄ бути не задане. Встановлення цього поля призводить до помилки конфігурації.Якщо
paramKind
має область дії простір імен, буде використано простір імен обʼєкта, що оцінюється для допуску, коли це поле залишено порожнім. Зверніть увагу, що якщо це поле залишено пустим, привʼязування не повинно відповідати жодним ресурсам з областю дії кластера, що призведе до помилки.
spec.paramRef.parameterNotFoundAction (string)
parameterNotFoundAction
контролює поведінку привʼязування, коли ресурс існує, іname
абоselector
є дійсними, але не знайдено жодних параметрів, які відповідають привʼязуванню. Якщо значення встановлено наAllow
, то відсутність відповідних параметрів буде розглядатися привʼязуванням як успішна валідація. Якщо встановлено наDeny
, то відсутність відповідних параметрів підлягатимеfailurePolicy
політиці.Дозволені значення —
Allow
абоDeny
Обовʼязково.
spec.paramRef.selector (LabelSelector)
selector може використовуватися для відповідності кільком обʼєктам параметрів на основі їхніх міток. Постачайте
selector: {}
для відповідності всім ресурсам типу ParamKind.Якщо знайдено кілька параметрів, вони всі оцінюються за виразами політики, і результати обʼєднуються за допомогою логічного оператора AND.
Один з параметрів
name
абоselector
повинен бути заданий, алеname
іselector
є взаємовиключними властивостями. Якщо одне з них задане, інше повинно бути не задане.spec.policyName (string)
PolicyName посилається на імʼя ValidatingAdmissionPolicy, до якого привʼязується ValidatingAdmissionPolicyBinding. Якщо посиланий ресурс не існує, це привʼязування вважається недійсним і буде ігноруватися. Обовʼязкове.
spec.validationActions ([]string)
Set: унікальні значення будуть збережені під час злиття
validationActions визначає, як виконуються валідації вказаної ValidatingAdmissionPolicy. Якщо валідація оцінюється як невірна, вона завжди виконується відповідно до цих дій.
Помилки, визначені FailurePolicy ValidatingAdmissionPolicy, виконуються відповідно до цих дій тільки якщо FailurePolicy встановлено на Fail, в іншому випадку помилки ігноруються. Це включає помилки компіляції, помилки виконання та неправильні конфігурації політики.
validationActions оголошено як набір значень дій. Порядок не має значення. validationActions не може містити дублікатів однієї і тієї ж дії.
Підтримувані значення дій:
"Deny" вказує, що невдача валідації призводить до відмови у запиті.
"Warn" вказує, що невдача валідації повідомляється клієнту запиту в заголовках HTTP Warning з кодом попередження 299. Попередження можуть бути надіслані як для дозволених, так і для відхилених відповідей на допуск.
"Audit" вказує, що невдача валідації включена в опубліковану подію аудиту запиту. Подія аудиту буде містити анотацію аудиту
validation.policy.admission.k8s.io/validation_failure
зі значенням, яке містить деталі невдач валідації у форматі JSON списку обʼєктів, кожен з яких має такі поля:- message: Рядок повідомлення про невдачу валідації
- policy: Імʼя ресурсу ValidatingAdmissionPolicy
- binding: Імʼя ресурсу ValidatingAdmissionPolicyBinding
- expressionIndex: Індекс невдалих валідацій у ValidatingAdmissionPolicy
- validationActions: Дії виконання, що були застосовані до невдачі валідації
Приклад анотації аудиту:
"validation.policy.admission.k8s.io/validation_failure": "[{"message": "Invalid value", {"policy": "policy.example.com", {"binding": "policybinding.example.com", {"expressionIndex": "1", {"validationActions": ["Audit"]}]"
Клієнти повинні очікувати обробку додаткових значень, ігноруючи будь-які нерозпізнані значення.
"Deny" та "Warn" не можуть використовуватися разом, оскільки ця комбінація зайво дублює невдачу валідації як у тілі відповіді API, так і в заголовках HTTP попередження.
Обовʼязкове.
ValidatingAdmissionPolicy
ValidatingAdmissionPolicy описує визначення політики валідації допуску, яка приймає або відхиляє обʼєкт без його зміни.
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 (ValidatingAdmissionPolicySpec)
Визначення бажаної поведінки ValidatingAdmissionPolicy.
ValidatingAdmissionPolicySpec — це специфікація бажаної поведінки AdmissionPolicy.
spec.auditAnnotations ([]AuditAnnotation)
Atomic: буде замінено під час злиття
auditAnnotations містить вирази CEL, які використовуються для створення анотацій аудиту для події аудиту API-запиту.
validations
іauditAnnotations
не можуть бути обидва порожніми; принаймні одне з них є обовʼязковим.AuditAnnotation описує, як створити анотацію аудиту для запиту API.
spec.auditAnnotations.key (string), обовʼязково
key визначає ключ анотації аудиту. Ключі анотацій аудиту для ValidatingAdmissionPolicy повинні бути унікальними. Ключ повинен бути кваліфікованим іменем ([A-Za-z0-9][-A-Za-z0-9_.]*) довжиною не більше 63 байтів.
Ключ комбінується з іменем ресурсу ValidatingAdmissionPolicy для створення ключа анотації аудиту: "{Ім'я ValidatingAdmissionPolicy}/{ключ}".
Якщо admission webhook використовує те саме ім'я ресурсу, що і ця ValidatingAdmissionPolicy, та той же ключ анотації аудиту, ключ анотації буде ідентичним. У цьому випадку перша анотація, написана з цим ключем, буде включена в подію аудиту, а всі наступні анотації з тим же ключем будуть відкинуті.
Обовʼязкове.
spec.auditAnnotations.valueExpression (string), обовʼязково
valueExpression представляє вираз, який оцінюється CEL для створення значення анотації аудиту. Вираз має оцінюватися як рядок або null. Якщо вираз оцінюється як рядок, анотація аудиту включається з рядковим значенням. Якщо вираз оцінюється як null або порожній рядок, анотація аудиту буде пропущена. valueExpression не може перевищувати 5 КБ в довжину. Якщо результат valueExpression перевищує 10 КБ в довжину, він буде обрізаний до 10 КБ.
Якщо кілька ресурсів ValidatingAdmissionPolicyBinding відповідають API-запиту, вираз valueExpression буде оцінений для кожного привʼязування. Всі унікальні значення, отримані від valueExpressions, будуть обʼєднані в список, розділений комами.
Обовʼязкове.
spec.failurePolicy (string)
failurePolicy визначає, як обробляти помилки для політики допуску. Помилки можуть виникати через помилки парсингу виразів CEL, помилки перевірки типів, помилки виконання та неправильні або некоректно налаштовані визначення політики або привʼязки.
Політика вважається недійсною, якщо
spec.paramKind
посилається на неіснуючий Kind. Привʼязка є недійсною, якщоspec.paramRef.name
посилається на неіснуючий ресурс.failurePolicy не визначає, як обробляються валідації, що оцінюються як невірні.
Коли failurePolicy встановлено на Fail,
ValidatingAdmissionPolicyBinding
validationActions визначає, як застосовуються помилки.Допустимі значення: Ignore або Fail. Стандартно — Fail.
spec.matchConditions ([]MatchCondition)
Patch strategy: обʼєднання за ключем
name
Map: унікальні значення ключа name будуть збережені під час злиття
MatchConditions — це список умов, які повинні бути виконані для валідації запиту. Умови збігу фільтрують запити, які вже були відповідно до правил,
namespaceSelector
іobjectSelector
. Порожній списокmatchConditions
відповідає всім запитам. Максимальна кількість умов збігу — 64.Якщо надано обʼєкт параметра, до нього можна звертатися через дескриптор
params
так само, як і до виразів валідації.Точна логіка збігу (впорядкована):
- Якщо будь-яка умова
matchCondition
оцінюється як FALSE, політика пропускається. - Якщо всі умови
matchConditions
оцінюються як TRUE, політика оцінюється. - Якщо будь-яка умова
matchCondition
оцінюється як помилка (але жодна не є FALSE):- Якщо
failurePolicy=Fail
, запит відхиляється. - Якщо
failurePolicy=Ignore
, політика пропускається.
- Якщо
MatchCondition представляє умову, яка повинна бути виконана для того, щоб запит був надісланий до вебхука.
spec.matchConditions.expression (string), обовʼязково
Expression представляє вираз, який буде оцінюватися CEL. Повинен оцінюватися як bool. CEL вирази мають доступ до вмісту AdmissionRequest та Authorizer, організованого у змінні CEL:
'object'
— обʼєкт з вхідного запиту. Значення є null для запитів DELETE.'oldObject'
— існуючий обʼєкт. Значення є null для запитів CREATE.'request'
— атрибути запиту на допуск (/pkg/apis/admission/types.go#AdmissionRequest).'authorizer'
— CEL Authorizer. Може бути використаний для виконання перевірок авторизації для принципала (користувача або облікового запису служби) запиту. Див. 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/
Обовʼязкове.
spec.matchConditions.name (string), обовʼязково
Name є ідентифікатором для цієї умови збігу, який використовується для стратегічного злиття
MatchConditions
, а також для надання ідентифікатора для цілей журналювання. Добре вибране імʼя повинно бути описовим для відповідного виразу. Name повинно бути кваліфікованим іменем, що складається з алфавітно-цифрових символів, '-', '_' або '.', і повинно починатися та закінчуватися алфавітно-цифровим символом (наприклад, 'MyName', 'my.name', '123-abc', регулярний вираз для перевірки — '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') з необовʼязковим префіксом DNS піддомену та '/' (наприклад, 'example.com/MyName').Обовʼязкове.
- Якщо будь-яка умова
spec.matchConstraints (MatchResources)
MatchConstraints визначає ресурси, які ця політика має перевіряти. AdmissionPolicy турбується про запит, якщо він відповідає усім Constraints. Однак, для запобігання випадкам, коли кластер може бути переведений в нестабільний стан, з якого не можна відновитися через API, ValidatingAdmissionPolicy не може відповідати ValidatingAdmissionPolicy і ValidatingAdmissionPolicyBinding.
Обовʼязкове.
MatchResources визначає, чи потрібно застосовувати політику контролю доступу до обʼєкта на основі того, чи відповідає він критеріям збігу. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає обом критеріям, він буде виключений).
spec.matchConstraints.excludeResourceRules ([]NamedRuleWithOperations)
Atomic: буде замінено під час злиття
ExcludeResourceRules описує операції над ресурсами/підресурсами, про які ValidatingAdmissionPolicy не повинна турбуватися. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає обом критеріям, він буде виключений).
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
spec.matchConstraints.excludeResourceRules.apiGroups ([]string)
Atomic: буде замінено під час злиття
APIGroups — це групи API, до яких належать ресурси. '*' — всі групи. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
spec.matchConstraints.excludeResourceRules.apiVersions ([]string)
Atomic: буде замінено під час злиття
APIVersions — це версії API, до яких належать ресурси. '*' — всі версії. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
spec.matchConstraints.excludeResourceRules.operations ([]string)
Atomic: буде замінено під час злиття
Operations — це операції, які цікавлять хук допуску - CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ "*", довжина фрагмента повинна бути одиницею. Обовʼязково.
spec.matchConstraints.excludeResourceRules.resourceNames ([]string)
Atomic: буде замінено під час злиття
ResourceNames — це необовʼязковий білий список імен, до яких застосовується правило. Порожній набір означає, що дозволено все.
spec.matchConstraints.excludeResourceRules.resources ([]string)
Atomic: буде замінено під час злиття
Resources — список ресурсів, до яких застосовується це правило.
Наприклад: 'pods' означає podʼи. 'pods/log' означає підресурс журналу podʼів. '*' означає всі ресурси, але не підресурси. 'pods/*' означає всі підресурси podʼів. '*/scale' означає всі підресурси масштабу. '*/*' означає всі ресурси і їхні підресурси.
Якщо присутній символ підстановки, правило валідації забезпечить, щоб ресурси не перекривалися між собою.
Залежно від обʼєкта, що містить, підресурси можуть бути не дозволені. Обовʼязкове.
spec.matchConstraints.excludeResourceRules.scope (string)
scope визначає область цього правила. Дійсні значення: "Cluster", "Namespaced" та "*". "Cluster" означає, що лише ресурси з областю дії кластера відповідатимуть цьому правилу. Обʼєкти API простору імен є кластерними. "Namespaced" означає, що лише ресурси з простору імен відповідатимуть цьому правилу. "*" означає, що обмежень за областю дії немає. Підресурси відповідають області їхнього батьківського ресурсу. Стандартно "*".
spec.matchConstraints.matchPolicy (string)
matchPolicy визначає, як список "MatchResources" використовується для відповідності вхідним запитам. Дійсні значення: "Exact" або "Equivalent".
Exact: відповідати запиту лише тоді, коли він точно відповідає зазначеному правилу. Наприклад, якщо deployments можуть бути змінені через apps/v1, apps/v1beta1 і extensions/v1beta1, але "rules" включали лише
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]
, запит до apps/v1beta1 або extensions/v1beta1 не буде надісланий до ValidatingAdmissionPolicy.Equivalent: відповідати запиту, якщо він змінює ресурс, зазначений у правилах, навіть через іншу групу API або версію. Наприклад, якщо deployments можуть бути змінені через apps/v1, apps/v1beta1 і extensions/v1beta1, і "rules" включають лише
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]
, запит до apps/v1beta1 або extensions/v1beta1 буде перетворено на apps/v1 і надіслано до ValidatingAdmissionPolicy.
Стандартно — "Equivalent".
spec.matchConstraints.namespaceSelector (LabelSelector)
NamespaceSelector визначає, чи слід застосовувати політику контролю доступу до обʼєкта на основі того, чи відповідає простір імен цього обʼєкта селектору. Якщо обʼєкт сам є простором імен, то відповідність перевіряється на object.metadata.labels. Якщо обʼєкт є іншим ресурсом, що охоплює кластер, політика ніколи не пропускається.
Наприклад, щоб застосувати вебхук до будь-яких обʼєктів, простір імен яких не асоціюється з "runlevel" "0" або "1", ви повинні встановити селектор наступним чином:
"namespaceSelector": { "matchExpressions": [ { "key": "runlevel", "operator": "NotIn", "values": [ "0", "1" ] } ] }
Якщо ви хочете застосувати політику лише до обʼєктів, простір імен яких асоційований з "середовищем" "prod" або "staging", ви повинні налаштувати селектор таким чином:
"namespaceSelector": { "matchExpressions": [ { "key": "environment", "operator": "In", "values": [ "prod", "staging" ] } ] }
Дивіться https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ щоб отримати більше прикладів селекторів міток.
Стандартне значення пустий LabelSelector, який відповідає всьому.
spec.matchConstraints.objectSelector (LabelSelector)
ObjectSelector визначає, чи потрібно виконати перевірку на основі того, чи має обʼєкт відповідні мітки. ObjectSelector оцінюється як для старого обʼєкта (oldObject), так і для нового обʼєкта (newObject), які будуть надіслані для перевірки cel, і вважається, що він відповідає, якщо будь-який з обʼєктів відповідає селектору. Null-обʼєкт (oldObject у випадку створення або newObject у випадку видалення) або обʼєкт, який не може мати мітки (такі як DeploymentRollback або PodProxyOptions), не вважається таким, що має збіг. Використовуйте селектор обʼєктів лише в разі, якщо веб-хук є опційним, оскільки кінцеві користувачі можуть пропустити admission webhook, налаштувавши мітки. Стандартно використовуйте пустий LabelSelector, який відповідає всьому.
spec.matchConstraints.resourceRules ([]NamedRuleWithOperations)
Atomic: буде замінено під час злиття
ResourceRules описує, які операції на яких ресурсах/підресурсах відповідає ValidatingAdmissionPolicy. Політика враховує операцію, якщо вона відповідає будь-якому правилу.
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
spec.matchConstraints.resourceRules.apiGroups ([]string)
Atomic: буде замінено під час злиття
APIGroups — це групи API, до яких належать ресурси. '*' — всі групи. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
spec.matchConstraints.resourceRules.apiVersions ([]string)
Atomic: буде замінено під час злиття
APIVersions — це версії API, до яких належать ресурси. '*' — всі версії. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
spec.matchConstraints.resourceRules.operations ([]string)
Atomic: буде замінено під час злиття
Operations — це операції, які цікавлять хук допуску - CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ "*", довжина фрагмента повинна бути одиницею. Обовʼязково.
spec.matchConstraints.resourceRules.resourceNames ([]string)
Atomic: буде замінено під час злиття
ResourceNames — це необовʼязковий білий список імен, до яких застосовується правило. Порожній набір означає, що дозволено все.
spec.matchConstraints.resourceRules.resources ([]string)
Atomic: буде замінено під час злиття
Resources — список ресурсів, до яких застосовується це правило.
Наприклад: 'pods' означає podʼи. 'pods/log' означає підресурс журналу podʼів. '*' означає всі ресурси, але не підресурси. 'pods/*' означає всі підресурси podʼів. '*/scale' означає всі підресурси масштабу. '*/*' означає всі ресурси і їхні підресурси.
Якщо присутній символ підстановки, правило валідації забезпечить, щоб ресурси не перекривалися між собою.
Залежно від обʼєкта, що містить, підресурси можуть бути не дозволені. Обовʼязкове.
spec.matchConstraints.resourceRules.scope (string)
scope визначає область цього правила. Дійсні значення: "Cluster", "Namespaced" та "*". "Cluster" означає, що лише ресурси з областю дії кластера відповідатимуть цьому правилу. Обʼєкти API простору імен є кластерними. "Namespaced" означає, що лише ресурси з простору імен відповідатимуть цьому правилу. "*" означає, що обмежень за областю дії немає. Підресурси відповідають області їхнього батьківського ресурсу. Стандартно "*".
spec.paramKind (ParamKind)
ParamKind вказує тип ресурсів, які використовуються для параметризації цієї політики. Якщо відсутній, параметрів для цієї політики немає, і змінна param CEL не буде надана для виразів перевірки. Якщо ParamKind посилається на неіснуючий тип, ця конфігурація політики є неправильною, і застосовується FailurePolicy. Якщо paramKind зазначено, але paramRef не встановлено у ValidatingAdmissionPolicyBinding, змінна params буде null.
ParamKind — це кортеж Group Kind та Version.
spec.paramKind.apiVersion (string)
APIVersion - версія групи API, до якої належать ресурси. У форматі "group/version". Обовʼязковий параметр.
spec.paramKind.kind (string)
Kind — це тип API, до якого належать ресурси. Обовʼязковий параметр.
spec.validations ([]Validation)
Atomic: буде замінено під час злиття
Validations містять вирази CEL, які використовуються для застосування перевірки. Validations та AuditAnnotations не можуть бути обидва пустими; потрібно щонайменше один з Validations або AuditAnnotations.
Validation вказує вираз CEL, який використовується для застосування перевірки.
spec.validations.expression (string), обовʼязково
Expression представляє вираз, який буде оцінюватися CEL. ref: https://github.com/google/cel-spec CEL-вирази мають доступ до вмісту запиту/відповіді API, організованих у змінні CEL, а також деякі інші корисні змінні:
- 'object' — Обʼєкт з вхідного запиту. Значення null для запитів DELETE.
- 'oldObject' — Наявний обʼєкт. Значення null для запитів CREATE.
- 'request' — Атрибути запиту API(ref).
- 'params' — Параметр ресурсу, на який посилається перевірка політики. Заповнюється лише, якщо політика має ParamKind.
- 'namespaceObject' — Обʼєкт простору імен, до якого належить вхідний обʼєкт. Значення null для ресурсів на рівні кластера.
- 'variables' - Map змінних, від їх назви до їхнього ледачого (lazily) оцінюваного значення. Наприклад, змінна з назвою 'foo' може бути доступна як 'variables.foo'.
- 'authorizer' — CEL Authorizer. Може використовуватися для виконання перевірок авторизації для виконавця (користувача або облікового запису служби) запиту. Див. https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
- 'authorizer.requestResource' — CEL ResourceCheck, створений з 'authorizer' та налаштований для ресурсу запиту.
apiVersion
,kind
,metadata.name
іmetadata.generateName
завжди доступні з кореня обʼєкта. Інші властивості метаданих недоступні.Доступні лише імена властивостей у формі
[a-zA-Z_.-/][a-zA-Z0-9_.-/]*
. Доступні імена властивостей екрануються згідно з наступними правилами, коли доступні у виразі:'__' екранується як 'underscores'
'.' екранується як 'dot'
'-' екранується як 'dash'
'/' екранується як 'slash'
Імена властивостей, що точно збігаються з CEL РЕЗЕРВОВАНИМИ ключовими словами, екрануються як '{keyword}'. Ключові слова включають: "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", "import", "let", "loop", "package", "namespace", "return". Приклади:
Вираз, що звертається до властивості з назвою "namespace": {"Expression": "object.namespace > 0"}
Вираз, що звертається до властивості з назвою "x-prop": {"Expression": "object.x__dash__prop > 0"}
Вираз, що звертається до властивості з назвою "redact__d": {"Expression": "object.redact__underscores__d > 0"}
Рівність масивів із типом списку 'set' або 'map' ігнорує порядок елементів, тобто [1, 2] == [2, 1]. Конкатенація масивів із типом списку x-kubernetes використовує семантику типу списку:
- 'set':
X + Y
виконує обʼєднання, де позиції масиву всіх елементів уX
зберігаються, а елементи вY
, що не перетинаються, додаються зі збереженням їх часткового порядку. - 'map':
X + Y
виконує злиття, де позиції масиву всіх ключів уX
зберігаються, але значення замінюються значеннями зY
, коли множини ключівX
таY
перетинаються. Елементи вY
з ключами, що не перетинаються з ключами, що не перетинаються, додаються зі збереженням їх часткового порядку. Обовʼязково.
spec.validations.message (string)
Message представляє повідомлення, що відображається при невдалій перевірці. Повідомлення обовʼязкове, якщо Expression містить розриви рядка. Повідомлення не повинно містити розриви рядка. Якщо не вказано, повідомлення — "failed rule: {Rule}". Наприклад, "must be a URL with the host matching spec.host" Якщо Expression містить розриви рядка, повідомлення обовʼязкове. Повідомлення не повинно містити розриви рядка. Якщо не встановлено, повідомлення — "failed Expression: {Expression}".
spec.validations.messageExpression (string)
messageExpression оголошує CEL-вираз, який оцінюється як повідомлення про невдачу перевірки, що повертається, коли це правило не виконується. Оскільки messageExpression використовується як повідомлення про невдачу, воно повинно оцінюватися як рядок. Якщо і message, і messageExpression присутні у перевірці, то messageExpression буде використано, якщо перевірка не вдалася. Якщо messageExpression призводить до помилки під час виконання, помилка записується в лог, і повідомлення про невдачу перевірки створюється так, ніби поле messageExpression не було встановлено. Якщо messageExpression оцінюється як порожній рядок, рядок з лише пробілами або рядок, що містить розриви рядка, то повідомлення про невдачу перевірки також створюється так, ніби поле messageExpression не було встановлено, і факт того, що messageExpression створило порожній рядок/рядок з лише пробілами/рядок з розривами рядка, буде записано в лог. messageExpression має доступ до всіх тих самих змінних, що і
expression
, за винятком 'authorizer' та 'authorizer.requestResource'. Приклад: "object.x must be less than max ("+string(params.max)+")"spec.validations.reason (string)
Reason представляє машинно-зчитуваний опис того, чому ця перевірка не вдалася. Якщо це перша перевірка в списку, що не вдалася, ця причина, а також відповідний код відповіді HTTP, використовуються у відповіді HTTP клієнту. Наразі підтримувані причини: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge". Якщо не встановлено, використовується StatusReasonInvalid у відповіді клієнту.
spec.variables ([]Variable)
Patch strategy: злиття по ключу
name
Map: унікальні значення по ключу
name
будуть зберігатися під час злиттяVariables містять визначення змінних, які можна використовувати у складі інших виразів. Кожна змінна визначена як іменований CEL-вираз. Змінні, визначені тут, будуть доступні у
variables
в інших виразах політики, за винятком MatchConditions, оскільки MatchConditions оцінюються перед рештою політики.Вираз змінної може посилатися на інші змінні, визначені раніше у списку, але не на ті, що стоять після неї. Таким чином, змінні мають бути відсортовані за порядком першої появи та ациклічно.
Variable — це визначення змінної, яка використовується для складання. Змінна визначається як іменований вираз.
spec.variables.expression (string), обовʼязково
Expression — це вираз, який буде оцінений як значення змінної. CEL-вираз має доступ до тих самих ідентифікаторів, що і CEL-вирази в Validation.
spec.variables.name (string), обовʼязково
Name — це назва змінної. Назва повинна бути дійсним ідентифікатором CEL і унікальною серед усіх змінних. Змінна може бути доступна в інших виразах через
variables
Наприклад, якщо name є "foo", змінна буде доступна якvariables.foo
.
status (ValidatingAdmissionPolicyStatus)
Статус ValidatingAdmissionPolicy, включаючи попередження, які корисні для визначення, чи працює політика відповідно до очікувань. Заповнюється системою. Тільки для читання.
ValidatingAdmissionPolicyStatus представляє статус політики перевірки допуску.
status.conditions ([]Condition)
Map: унікальні значення по ключу type будуть зберігатися під час злиття
Стани представляють останні доступні спостереження поточного стану політики.
Condition містить деталі одного аспекту поточного стану цього API-ресурсу.
status.conditions.lastTransitionTime (Time), обовʼязково
lastTransitionTime — це останній час, коли стан перейшов з одного стану в інший. Це має бути, коли змінився основний стан. Якщо це невідомо, то прийнятно використовувати час, коли змінилося поле API.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
status.conditions.message (string), обовʼязково
message — це повідомлення зрозуміле людині, яке вказує деталі про зміну стану. Воно може бути порожній рядок.
status.conditions.reason (string), обовʼязково
reason містить програмний ідентифікатор, що вказує на причину останньої зміни стану. Виробники конкретних типів станів можуть визначити очікувані значення та значення для цього поля, а також чи вважаються значення гарантованим API. Значення має бути рядком у форматі CamelCase. Це поле не може бути порожнім.
status.conditions.status (string), обовʼязково
статус стану, один з True, False, Unknown.
status.conditions.type (string), обовʼязково
тип стану у форматі CamelCase або у форматі foo.example.com/CamelCase.
status.conditions.observedGeneration (int64)
observedGeneration представляє .metadata.generation, на основі якого було встановлено стан. Наприклад, якщо .metadata.generation зараз 12, але .status.conditions[x].observedGeneration - 9, стан застарів відносно поточного стану екземпляра.
status.observedGeneration (int64)
Покоління, яке спостерігалося контролером.
status.typeChecking (TypeChecking)
Результати перевірки типу для кожного виразу. Наявність цього поля вказує на завершення перевірки типу.
TypeChecking містить результати перевірки типу виразів у ValidatingAdmissionPolicy
status.typeChecking.expressionWarnings ([]ExpressionWarning)
Atomic: буде замінено під час злиття
Попередження перевірки типу для кожного виразу.
ExpressionWarning — це інформація про попередження, що стосується конкретного виразу.
status.typeChecking.expressionWarnings.fieldRef (string), обовʼязково
Шлях до поля, що посилається на вираз. Наприклад, посилання на вираз першого елемента перевірок є "spec.validations[0].expression".
status.typeChecking.expressionWarnings.warning (string), обовʼязково
Вміст інформації про попередження перевірки типу у формі, зручною для читання людиною. Кожен рядок попередження містить тип, за яким перевірено вираз, а потім помилку перевірки типу від компілятора.
ValidatingAdmissionPolicyBindingList
ValidatingAdmissionPolicyBindingList — це список ValidatingAdmissionPolicyBinding.
items ([]ValidatingAdmissionPolicyBinding), обовʼязково
Перелік PolicyBinding.
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 (ListMeta)
Стандартні метадані списку. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
Операції
get
отримати вказанний ValidatingAdmissionPolicyBinding
HTTP запит
GET /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ValidatingAdmissionPolicyBinding
pretty (в запиті): string
Відповідь
200 (ValidatingAdmissionPolicyBinding): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ValidatingAdmissionPolicyBinding
HTTP запит
GET /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ValidatingAdmissionPolicyBindingList): OK
401: Unauthorized
create
створення ValidatingAdmissionPolicyBinding
HTTP запит
POST /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings
Параметри
body: ValidatingAdmissionPolicyBinding, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ValidatingAdmissionPolicyBinding): OK
201 (ValidatingAdmissionPolicyBinding): Created
202 (ValidatingAdmissionPolicyBinding): Accepted
401: Unauthorized
update
заміна вказаного ValidatingAdmissionPolicyBinding
HTTP запит
PUT /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ValidatingAdmissionPolicyBinding
body: ValidatingAdmissionPolicyBinding, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ValidatingAdmissionPolicyBinding): OK
201 (ValidatingAdmissionPolicyBinding): Created
401: Unauthorized
patch
часткове оновлення вказаного ValidatingAdmissionPolicyBinding
HTTP запит
PATCH /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ValidatingAdmissionPolicyBinding
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ValidatingAdmissionPolicyBinding): OK
201 (ValidatingAdmissionPolicyBinding): Created
401: Unauthorized
delete
видалення ValidatingAdmissionPolicyBinding
HTTP запит
DELETE /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ValidatingAdmissionPolicyBinding
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції ValidatingAdmissionPolicyBinding
HTTP запит
DELETE /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings
Параметри
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized