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 набор сертификатов, который будет использоваться для проверки сертификата сервера вебхука. Если не указано, используются корневые сертификаты доверия системы на сервере API. -
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 в некоторых серверах API (например,kube-apiserverне может разрешить входящий DNS, так как это будет нарушение слоёв).hostтакже может быть IP-адресом.Обратите внимание, что использование
localhostили127.0.0.1в качествеhostрискованно, если вы не позаботитесь о запуске вебхука на всех хостах, на которых работает сервер API, который может потребоваться для выполнения вызовов к этому вебхуку. Такие установки, скорее всего, будут непереносимыми, то есть нелегко развернуть в новом кластере.Схема должна быть "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. Если объект является другим ресурсом кластера, вебхук никогда не пропускается.
Например, чтобы запустить вебхук для всех объектов, пространство имён которых не связано с «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, который соответствует всему.
-
webhooks.objectSelector (LabelSelector)
ObjectSelector определяет, запускать ли вебхук на основе соответствия меток объекта. objectSelector оценивается для both oldObject and newObject, которые будут отправлены в вебхук, и считается, что он соответствует, если либо объект соответствует селектору. Объект null (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 секунд.
-
Список конфигураций мутирующих вебхуков
Список конфигураций мутирующих вебхуков.
-
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-24.docs.kubernetes.io/docs/reference/kubernetes-api/extend-resources/mutating-webhook-configuration-v1/