Spec-Zone.ru › Kubernetes

MutatingAdmissionPolicy

MutatingAdmissionPolicy описывает определение политики мутации при допуске, которая изменяет объект, поступающий в цепочку допуска.

apiVersion: admissionregistration.k8s.io/v1

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

MutatingAdmissionPolicy

MutatingAdmissionPolicy описывает определение политики мутации при допуске, которая изменяет объект, поступающий в цепочку допуска.

Поле Описание
apiVersion
string
APIVersion определяет схему с указанием версии для этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее значение и могут отклонять нераспознанные значения. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind
string
Kind — строковое значение, представляющее ресурс REST, который представляет этот объект. Серверы могут определять его по конечной точке, на которую клиент отправляет запросы. Не может быть обновлено. В CamelCase. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ObjectMeta
metadata — стандартные метаданные объекта; подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
spec
MutatingAdmissionPolicySpec
spec определяет желаемое поведение MutatingAdmissionPolicy.

MutatingAdmissionPolicySpec

MutatingAdmissionPolicySpec определяет желаемое поведение политики допуска.

Поле Описание
failurePolicy
string
failurePolicy определяет порядок обработки ошибок политики допуска. Ошибки могут возникать из-за ошибок разбора выражений CEL, ошибок проверки типов, ошибок выполнения, а также недопустимых или неправильно настроенных определений политик и привязок. Политика недопустима, если paramKind ссылается на несуществующий Kind. Привязка недопустима, если paramRef.name ссылается на несуществующий ресурс. failurePolicy не определяет, как обрабатываются проверки, результатом которых является false. Допустимые значения: Ignore или Fail. По умолчанию — Fail.

Возможные значения перечисления:
- `"Fail"` означает, что ошибка при вызове веб-перехватчика приводит к отклонению запроса допуска.
- `"Ignore"` означает, что ошибка при вызове веб-перехватчика игнорируется.
matchConditions
MatchCondition array
patch strategy: merge on key name
matchConditions — список условий, которые должны быть выполнены, чтобы запрос был проверен. Условия сопоставления фильтруют запросы, уже сопоставленные с помощью matchConstraints. Пустой список matchConditions соответствует всем запросам. Допускается не более 64 условий сопоставления. Если указан объект параметров, к нему можно обращаться с помощью дескриптора `params` так же, как и в выражениях проверки. Точная логика сопоставления выполняется в следующем порядке: 1. Если любое условие сопоставления принимает значение FALSE, политика пропускается. 2. Если все условия сопоставления принимают значение TRUE, политика вычисляется. 3. Если какое-либо условие сопоставления возвращает ошибку (но ни одно из них не принимает значение FALSE): - Если failurePolicy=Fail, запрос отклоняется. - Если failurePolicy=Ignore, политика пропускается.
matchConstraints
MatchResources
matchConstraints указывает, какие ресурсы предназначены для проверки этой политикой. MutatingAdmissionPolicy обрабатывает запрос, если он соответствует _всем_ ограничениям. Однако, чтобы не допустить перехода кластера в нестабильное состояние, из которого нельзя восстановиться через API, MutatingAdmissionPolicy не может соответствовать MutatingAdmissionPolicy и MutatingAdmissionPolicyBinding. Допускаются операции CREATE, UPDATE и CONNECT. Операция DELETE не может быть сопоставлена. '\*' соответствует CREATE, UPDATE и CONNECT. Обязательное поле.
mutations
Mutation array
mutations содержит операции, выполняемые над соответствующими объектами. Поле mutations не может быть пустым; требуется как минимум одна мутация. Мутации вычисляются по порядку и повторно вызываются в соответствии с reinvocationPolicy. Мутации политики вызываются для каждой привязки этой политики, а повторный вызов мутаций выполняется отдельно для каждой привязки.
paramKind
ParamKind
paramKind указывает вид ресурсов, используемых для параметризации этой политики. Если поле отсутствует, у политики нет параметров, и переменная CEL param не будет доступна выражениям проверки. Если paramKind ссылается на несуществующий вид, определение политики настроено неправильно и применяется FailurePolicy. Если paramKind указан, но paramRef не задан в MutatingAdmissionPolicyBinding, переменная params будет иметь значение null.
reinvocationPolicy
string
reinvocationPolicy указывает, могут ли мутации вызываться несколько раз для каждой MutatingAdmissionPolicyBinding в рамках одной проверки допуска. Допустимые значения: "Never" и "IfNeeded". Never: эти мутации не будут вызываться более одного раза для каждой привязки в рамках одной проверки допуска. IfNeeded: эти мутации могут вызываться более одного раза для каждой привязки в рамках одного запроса допуска; порядок относительно других плагинов допуска, веб-перехватчиков допуска, привязок этой политики и политик допуска не гарантируется. Повторный вызов мутаций выполняется только тогда, когда после вызова этой мутации другие мутации изменили объект. Обязательное поле.

Возможные значения перечисления:
- `"IfNeeded"` означает, что мутация может быть вызвана как минимум еще один раз в рамках проверки допуска, если другие плагины допуска изменили принимаемый объект после первоначального вызова мутации.
- `"Never"` означает, что мутация не должна вызываться более одного раза в рамках одной проверки допуска.
variables
Variable array
variables содержит определения переменных, которые можно использовать при составлении других выражений. Каждая переменная определяется как именованное выражение CEL. Определенные здесь переменные будут доступны в других выражениях политики через `variables`, за исключением matchConditions, поскольку matchConditions вычисляются до остальной части политики. Выражение переменной может ссылаться на другие переменные, определенные ранее в списке, но не на переменные, определенные позже. Поэтому переменные должны быть отсортированы по порядку первого появления и не должны образовывать циклов.

MutatingAdmissionPolicyList

MutatingAdmissionPolicyList — это список MutatingAdmissionPolicy.

Поле Описание
apiVersion
string
APIVersion определяет схему с указанием версии для этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее значение и могут отклонять нераспознанные значения. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
items *
MutatingAdmissionPolicy array
Список ValidatingAdmissionPolicy.
kind
string
Kind — строковое значение, представляющее ресурс REST, который представляет этот объект. Серверы могут определять его по конечной точке, на которую клиент отправляет запросы. Не может быть обновлено. В CamelCase. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ListMeta
metadata — стандартные метаданные списка. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

ApplyConfiguration

ApplyConfiguration определяет желаемые значения конфигурации объекта.

Поле Описание
expression
string
expression вычисляется CEL для создания конфигурации применения. Ссылка: https://github.com/google/cel-spec Конфигурации применения объявляются в CEL с помощью инициализации объекта. Например, это выражение CEL возвращает конфигурацию применения для задания одного поля: Object{ spec: Object.spec{ serviceAccountName: "example" } } Конфигурации применения не могут изменять атомарные структуры, карты или массивы из-за риска случайного удаления значений, не включенных в конфигурацию применения. Выражения CEL имеют доступ к типам объектов, необходимым для создания конфигураций применения: - 'Object' — тип CEL объекта ресурса. - 'Object.\' — тип CEL поля объекта (например, 'Object.spec'). - 'Object.\.\...\` — тип CEL вложенного поля (например, 'Object.spec.containers'). Выражения CEL имеют доступ к содержимому запроса API, организованному в переменные CEL, а также к некоторым другим полезным переменным: - 'object' — объект из входящего запроса. Для запросов DELETE значение равно null. - 'oldObject' — существующий объект. Для запросов CREATE значение равно null. - 'request' — атрибуты запроса API ([ссылка](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' — ресурс параметров, на который ссылается привязка вычисляемой политики. Заполняется только в том случае, если у политики есть ParamKind. - 'namespaceObject' — объект пространства имен, которому принадлежит входящий объект. Для ресурсов уровня кластера значение равно null. - 'variables' — карта составных переменных, сопоставляющая их имена с лениво вычисляемыми значениями. Например, к переменной с именем 'foo' можно обратиться как к 'variables.foo'. - 'authorizer' — объект авторизации CEL. Может использоваться для проверки авторизации субъекта (пользователя или учетной записи службы) запроса. См. https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz - 'authorizer.requestResource' — объект ResourceCheck CEL, созданный на основе 'authorizer' и настроенный для ресурса запроса. Из корневого объекта всегда доступны `apiVersion`, `kind`, `metadata.name` и `metadata.generateName`. Другие свойства метаданных недоступны. Доступны только имена свойств, соответствующие шаблону `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*`. Обязательное поле.

JSONPatch

JSONPatch определяет JSON Patch.

Поле Описание
expression
string
expression вычисляется CEL для создания [JSON-патча](https://jsonpatch.com/). Ссылка: https://github.com/google/cel-spec Выражение должно возвращать массив значений JSONPatch. Например, это выражение CEL возвращает JSON-патч для условного изменения значения: [ JSONPatch{op: "test", path: "/spec/example", value: "Red"}, JSONPatch{op: "replace", path: "/spec/example", value: "Green"} ] Чтобы определить объект для значения патча, используйте типы Object. Например: [ JSONPatch{ op: "add", path: "/spec/selector", value: Object.spec.selector{matchLabels: {"environment": "test"}} } ] Чтобы использовать строки, содержащие '/' и '~', в качестве ключей пути JSONPatch, используйте "jsonpatch.escapeKey". Например: [ JSONPatch{ op: "add", path: "/metadata/labels/" + jsonpatch.escapeKey("example.com/environment"), value: "test" }, ] Выражения CEL имеют доступ к типам, необходимым для создания JSON-патчей и объектов: - 'JSONPatch' — тип CEL для операций JSON Patch. JSONPatch содержит поля 'op', 'from', 'path' и 'value'. Подробнее см. в [JSON Patch](https://jsonpatch.com/). Полю 'value' можно присвоить любое из следующих значений: строка, целое число, массив, карта или объект. Если оно задано, поля 'path' и 'from' должны содержать строку [JSON Pointer](https://datatracker.ietf.org/doc/html/rfc6901/); для экранирования ключей пути, содержащих '/' и '~', можно использовать функцию CEL 'jsonpatch.escapeKey()'. - 'Object' — тип CEL объекта ресурса. - 'Object.\' — тип CEL поля объекта (например, 'Object.spec'). - 'Object.\.\...\` — тип CEL вложенного поля (например, 'Object.spec.containers'). Выражения CEL имеют доступ к содержимому запроса API, организованному в переменные CEL, а также к некоторым другим полезным переменным: - 'object' — объект из входящего запроса. Для запросов DELETE значение равно null. - 'oldObject' — существующий объект. Для запросов CREATE значение равно null. - 'request' — атрибуты запроса API ([ссылка](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' — ресурс параметров, на который ссылается привязка вычисляемой политики. Заполняется только в том случае, если у политики есть ParamKind. - 'namespaceObject' — объект пространства имен, которому принадлежит входящий объект. Для ресурсов уровня кластера значение равно null. - 'variables' — карта составных переменных, сопоставляющая их имена с лениво вычисляемыми значениями. Например, к переменной с именем 'foo' можно обратиться как к 'variables.foo'. - 'authorizer' — объект авторизации CEL. Может использоваться для проверки авторизации субъекта (пользователя или учетной записи службы) запроса. См. https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz - 'authorizer.requestResource' — объект ResourceCheck CEL, созданный на основе 'authorizer' и настроенный для ресурса запроса. Выражения CEL имеют доступ к [библиотекам функций CEL Kubernetes](https://kubernetes.io/docs/reference/using-api/cel/#cel-options-language-features-and-libraries), а также к следующим функциям: - 'jsonpatch.escapeKey' — экранирует ключ JSONPatch. Символы '~' и '/' экранируются как '~0' и `~1' соответственно. Доступны только имена свойств, соответствующие шаблону `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*`. Обязательное поле.

Mutation

Mutation задает выражение CEL, используемое для применения мутации.

Поле Описание
applyConfiguration
ApplyConfiguration
applyConfiguration определяет желаемые значения конфигурации объекта. Конфигурация применяется к объекту допуска с помощью [structured merge diff](https://github.com/kubernetes-sigs/structured-merge-diff). Для создания конфигурации применения используется выражение CEL.
jsonPatch
JSONPatch
jsonPatch определяет операцию [JSON Patch](https://jsonpatch.com/), выполняющую мутацию объекта. Для создания JSON Patch используется выражение CEL.
patchType *
string
patchType указывает используемую стратегию применения патча. Допустимые значения: "ApplyConfiguration" и "JSONPatch". Обязательное поле.

Возможные значения перечисления:
- `"ApplyConfiguration"` ApplyConfiguration означает, что для изменения объекта используется конфигурация применения.
- `"JSONPatch"` JSONPatch означает, что объект изменяется с помощью JSON Patch.

© 2026 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2026 The Linux Foundation ®. All rights reserved.
https://kubernetes.io/docs/reference/kubernetes-api/admissionregistration/mutating-admission-policy-v1/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API