MutatingWebhookConfiguration
apiVersion: admissionregistration.k8s.io/v1
import "k8s.io/api/admissionregistration/v1"
MutatingWebhookConfiguration
MutatingWebhookConfiguration описывает конфигурацию вебхука проверки доступа, который принимает или отклоняет и может изменять объект.
-
apiVersion: admissionregistration.k8s.io/v1
-
kind: MutatingWebhookConfiguration
-
metadata (ObjectMeta)
Стандартные метаданные объекта; Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
-
webhooks ([]MutatingWebhook)
Стратегия патчинга: merge по ключу
nameWebhooks — это список вебхуков и затронутых ресурсов и операций.
MutatingWebhook описывает вебхук проверки доступа и ресурсы и операции, к которым он применяется.
-
webhooks.admissionReviewVersions ([]string), required
AdmissionReviewVersions — упорядоченный список предпочитаемых
AdmissionReviewверсий, которые ожидает вебхук. Сервер API попытается использовать первую версию в списке, которую он поддерживает. Если ни одна из версий, указанных в этом списке, не поддерживается сервером API, проверка этого объекта завершится неудачей. Если конфигурация постоянного вебхука определяет разрешённые версии и не включает никакие версии, известные серверу API, обращения к вебхуку будут завершаться неудачей и будут подчиняться политике обработки ошибок. -
webhooks.clientConfig (WebhookClientConfig), required
ClientConfig определяет способ связи с хуком. Требуется
WebhookClientConfig содержит информацию для создания TLS-соединения с вебхуком
-
webhooks.clientConfig.caBundle ([]byte)
caBundle— PEM-кодированный набор сертификатов CA, который будет использоваться для проверки сертификата сервера вебхука. Если не указано, используются системные корневые сертификаты доверенных центров на apiserver. -
webhooks.clientConfig.service (ServiceReference)
service— ссылка на службу для данного вебхука. Должен быть указан либоservice, либоurl.Если вебхук работает внутри кластера, то следует использовать
service.ServiceReference содержит ссылку на Service.legacy.k8s.io
-
webhooks.clientConfig.service.name (string), required
name— имя службы. Требуется -
webhooks.clientConfig.service.namespace (string), required
namespace— пространство имён службы. Требуется -
webhooks.clientConfig.service.path (string)
path— необязательный путь URL, который будет отправлен в любом запросе к этой службе. -
webhooks.clientConfig.service.port (int32)
Если указано, порт службы, на котором размещён вебхук. По умолчанию используется 443 для обратной совместимости.
portдолжен быть допустимым номером порта (от 1 до 65535 включительно).
-
-
webhooks.clientConfig.url (string)
urlуказывает расположение вебхука в стандартном формате URL (scheme://host:port/path). Должен быть указан ровно один изurlилиservice.hostне должен ссылаться на службу, работающую в кластере; вместо этого используйте полеservice. Хост может быть разрешен через внешний DNS в некоторых apiserver (например,kube-apiserverне может разрешить DNS внутри кластера, так как это нарушение уровней).hostтакже может быть IP-адресом.Обратите внимание, что использование
localhostили127.0.0.1в качествеhostрискованно, если вы не позаботитесь о запуске этого вебхука на всех хостах, на которых работает apiserver, которому может потребоваться обращаться к этому вебхуку. Такие установки, вероятно, будут непереносимыми, то есть нелегко развернуть в новом кластере.Схема должна быть «https»; URL должен начинаться с «https://».
Путь является необязательным и, если присутствует, может быть любой строкой, допустимой в URL. Вы можете использовать путь для передачи произвольной строки вебхуку, например, идентификатор кластера.
Попытки использовать аутентификацию пользователя или базовая аутентификация (например, "user:password@") запрещены. Фрагменты ("#...") и параметры запроса ("?...") также запрещены.
-
-
webhooks.name (string), required
Имя вебхука проверки доступа. Имя должно быть полностью квалифицированным, например, imagepolicy.kubernetes.io, где "imagepolicy" — имя вебхука, а kubernetes.io — имя организации. Требуется.
-
webhooks.sideEffects (string), required
SideEffects указывает, имеет ли этот вебхук побочные эффекты. Допустимые значения: None, NoneOnDryRun (вебхуки, созданные с помощью v1beta1, также могут указать Some или Unknown). Вебхуки с побочными эффектами ОБЯЗАТЕЛЬНО должны реализовывать систему согласования, так как запрос может быть отклонен на последующей стадии в цепочке проверки доступа, и поэтому побочные эффекты нужно будет отменить. Запросы с атрибутом dryRun будут автоматически отклонены, если они соответствуют вебхуку с sideEffects == Unknown или Some.
-
webhooks.failurePolicy (string)
FailurePolicy определяет, как обрабатываются нераспознанные ошибки из точки входа проверки доступа — допустимые значения — Ignore или Fail. По умолчанию установлено значение Fail.
-
webhooks.matchPolicy (string)
matchPolicy определяет, как используется список «правил» для сопоставления входящих запросов. Допустимые значения — «Exact» или «Equivalent».
-
Exact: соответствует запросу только в том случае, если он точно соответствует указанному правилу. Например, если развертывания можно изменять через apps/v1, apps/v1beta1 и extensions/v1beta1, но «правила» содержали только
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запрос к apps/v1beta1 или extensions/v1beta1 не будет отправлен в вебхук. -
Equivalent: соответствует запросу, если изменяет ресурс, указанный в правилах, даже через другую группу API или версию. Например, если развертывания можно изменять через apps/v1, apps/v1beta1 и extensions/v1beta1, и «правила» содержали только
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запрос к apps/v1beta1 или extensions/v1beta1 будет преобразован в apps/v1 и отправлен в вебхук.
По умолчанию установлено значение «Equivalent».
-
-
webhooks.namespaceSelector (LabelSelector)
NamespaceSelector определяет, следует ли запускать вебхук для объекта на основе того, соответствует ли пространство имен этого объекта селектору. Если сам объект является пространством имён, сопоставление выполняется по меткам объекта object.metadata.labels. Если объект является другим ресурсом, охватывающим кластер, вебхук никогда не пропускается.
Например, чтобы запустить вебхук для всех объектов, пространство имен которых не ассоциировано с «уровнем выполнения» «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, который соответствует всему.
-
webhooks.objectSelector (LabelSelector)
ObjectSelector определяет, следует ли запускать вебхук на основе наличия совпадающих меток у объекта. objectSelector оценивается как для старого объекта oldObject, так и для нового объекта newObject, которые будут отправлены в вебхук, и считается соответствующим, если соответствует либо объект. Нулевой объект (oldObject в случае создания или newObject в случае удаления) или объект, который не может иметь метки (например, DeploymentRollback или PodProxyOptions), не считается соответствующим. Используйте селектор объекта только в том случае, если вебхук является выборочным, поскольку конечные пользователи могут пропустить вебхук проверки доступа, установив метки. По умолчанию используется пустой LabelSelector, который соответствует всему.
-
webhooks.reinvocationPolicy (string)
reinvocationPolicy указывает, следует ли вызывать этот вебхук несколько раз в рамках одной оценки проверки доступа. Допустимые значения — «Never» и «IfNeeded».
Never: вебхук не будет вызываться более одного раза в одной оценке проверки доступа.
IfNeeded: вебхук будет вызываться как минимум один дополнительный раз в рамках оценки проверки доступа, если объект, к которому осуществляется доступ, изменяется другими плагинами проверки доступа после первоначального вызова вебхука. Вебхуки, которые указывают этот параметр, ДОЛЖНЫ быть идемпотентными, способными обрабатывать объекты, которые они ранее допустили. Примечание: * количество дополнительных вызовов не гарантируется, что оно будет точно равно одному. * если дополнительные вызовы приведут к дальнейшим изменениям объекта, вебхуки не гарантируются для повторного вызова. * вебхуки, использующие этот параметр, могут быть переупорядочены, чтобы свести к минимуму количество дополнительных вызовов. * для проверки объекта после гарантированного завершения всех изменений используйте вебхук проверки доступа вместо этого.
По умолчанию установлено значение «Never».
-
webhooks.rules ([]RuleWithOperations)
Rules описывает, какие операции с какими ресурсами/подресурсами заботит вебхук. Вебхук заботится об операции, если она соответствует ЛЮБОМУ правилу. Однако, чтобы предотвратить ValidatingAdmissionWebhooks и MutatingAdmissionWebhooks от введения кластера в состояние, из которого невозможно восстановиться без полного отключения плагина, ValidatingAdmissionWebhooks и MutatingAdmissionWebhooks никогда не вызываются при запросах доступа для объектов ValidatingWebhookConfiguration и MutatingWebhookConfiguration.
RuleWithOperations — это кортеж операций и ресурсов. Рекомендуется убедиться, что все расширения кортежа допустимы.
-
webhooks.rules.apiGroups ([]string)
Атомарный: будет заменён при слиянии
APIGroups — это группы API, к которым относятся ресурсы. «*» — все группы. Если присутствует «*», длина среза должна быть равна одному. Требуется.
-
webhooks.rules.apiVersions ([]string)
Атомарный: будет заменён при слиянии
APIVersions — это версии API, к которым относятся ресурсы. «*» — все версии. Если присутствует «*», длина среза должна быть равна одному. Требуется.
-
webhooks.rules.operations ([]string)
Атомарный: будет заменён при слиянии
Operations — это операции, которые интересуют хук проверки доступа — CREATE, UPDATE, DELETE, CONNECT или * для всех этих операций и любых будущих операций проверки доступа, которые будут добавлены. Если присутствует «*», длина среза должна быть равна одному. Требуется.
-
webhooks.rules.resources ([]string)
Атомарный: будет заменён при слиянии
Resources — это список ресурсов, к которым применяется это правило.
Например: «pods» означает pods. «pods/log» означает подресурс журнала pods. «*» означает все ресурсы, но не подресурсы. «pods/*» означает все подресурсы pods. «*/scale» означает все подресурсы scale. «*/*» означает все ресурсы и их подресурсы.
Если присутствует символ подстановки, правило проверки обеспечит, чтобы ресурсы не перекрывали друг друга.
В зависимости от окружающего объекта подресурсы могут быть недопустимы. Требуется.
-
webhooks.rules.scope (string)
scope указывает область действия этого правила. Допустимые значения — «Cluster», «Namespaced» и «*». «Cluster» означает, что этому правилу будут соответствовать только ресурсы, охватывающие кластер. Объекты API пространства имён являются ресурсами, охватывающими кластер. «Namespaced» означает, что этому правилу будут соответствовать только ресурсы пространства имён. «*» означает, что ограничений по области действия нет. Подресурсы соответствуют области действия своего родительского ресурса. По умолчанию — «*».
-
-
-
webhooks.timeoutSeconds (int32)
TimeoutSeconds определяет таймаут для данного вебхука. По истечении таймаута вызов вебхука будет проигнорирован или вызов API завершится ошибкой в зависимости от политики обработки ошибок. Значение таймаута должно быть между 1 и 30 секундами. По умолчанию 10 секунд.
-
Список конфигураций мутирующих вебхуков
MutatingWebhookConfigurationList — это список конфигураций мутирующих вебхуков.
-
apiVersion: admissionregistration.k8s.io/v1
-
kind: Список конфигураций мутирующих вебхуков
-
metadata (ListMeta)
Стандартные метаданные списка. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
-
items ([]Конфигурация мутирующего вебхука), обязательно
Список конфигураций мутирующих вебхуков.
© 2022 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2022 The Linux Foundation ®. All rights reserved.
https://v1-26.docs.kubernetes.io/docs/reference/kubernetes-api/extend-resources/mutating-webhook-configuration-v1/