ValidatingWebhookConfiguration
apiVersion: admissionregistration.k8s.io/v1
import "k8s.io/api/admissionregistration/v1"
ValidatingWebhookConfiguration
ValidatingWebhookConfiguration описывает конфигурацию вебхука для проверки, который принимает или отклоняет объект без изменения.
-
apiVersion: admissionregistration.k8s.io/v1
-
kind: ValidatingWebhookConfiguration
-
metadata (ObjectMeta)
Стандартные метаданные объекта; Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
-
webhooks ([]ValidatingWebhook)
Стратегия патча: merge по ключу
nameWebhooks — это список веб-хуков и затронутых ресурсов и операций.
ValidatingWebhook описывает веб-хук проверки и ресурсы и операции, к которым он применяется.
-
webhooks.admissionReviewVersions ([]string), required
AdmissionReviewVersions — упорядоченный список предпочтительных
AdmissionReviewверсий, ожидаемых веб-хуком. Сервер API попытается использовать первую версию в списке, которую он поддерживает. Если ни одна из указанных в этом списке версий не поддерживается сервером API, валидация этого объекта завершится неудачей. Если в конфигурации постоянного веб-хука указаны разрешенные версии и не включают ни одной версии, известной серверу API, вызовы веб-хука завершатся неудачей и будут подпадать под политику обработки ошибок. -
webhooks.clientConfig (WebhookClientConfig), required
ClientConfig определяет способ связи с хуком. Обязательно
WebhookClientConfig содержит информацию для создания TLS-соединения с веб-хуком
-
webhooks.clientConfig.caBundle ([]byte)
caBundle— это закодированный в PEM набор сертификатов CA, который будет использоваться для проверки сертификата сервера веб-хука. Если не указано, используются системные корневые сертификаты доверенных центров сертификации на сервере 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 определяет, как используется список «rules» для сопоставления входящих запросов. Допустимые значения «Exact» или «Equivalent».
-
Exact: сопоставляет запрос только в том случае, если он точно соответствует указанному правилу. Например, если к развертываниям можно получить доступ через apps/v1, apps/v1beta1 и extensions/v1beta1, но в «rules» включены только
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запрос к apps/v1beta1 или extensions/v1beta1 не будет отправлен в веб-хук. -
Equivalent: сопоставляет запрос, если он изменяет ресурс, указанный в правилах, даже через другую группу API или версию. Например, если развертывания можно изменять через apps/v1, apps/v1beta1 и extensions/v1beta1, а в «rules» включены только
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» ] } ] }
Если вместо этого вы хотите запустить веб-хук только для объектов, пространство имён которых связано с «environment» «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.rules ([]RuleWithOperations)
Rules описывает, какие операции над какими ресурсами/подресурсами интересуют веб-хук. Веб-хук интересуется операцией, если она соответствует *любому* правилу. Однако, чтобы избежать ситуации, когда ValidatingAdmissionWebhooks и MutatingAdmissionWebhooks ставят кластер в состояние, из которого невозможно восстановиться без полного отключения плагина, ValidatingAdmissionWebhooks и MutatingAdmissionWebhooks никогда не вызываются при запросах авторизации для объектов ValidatingWebhookConfiguration и MutatingWebhookConfiguration.
RuleWithOperations — это кортеж из Operations и Resources. Рекомендуется убедиться, что все расширения кортежа допустимы.
-
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 секунд.
-
СписокValidatingWebhookConfiguration
ValidatingWebhookConfigurationList — это список ValidatingWebhookConfiguration.
-
apiVersion: admissionregistration.k8s.io/v1
-
kind: Список проверочных вебхуков
-
metadata (ListMeta)
Стандартные метаданные списка. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
-
items ([]ValidatingWebhookConfiguration), обязательное
Список проверочных вебхуков.
© 2022 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2022 The Linux Foundation ®. All rights reserved.
https://v1-25.docs.kubernetes.io/docs/reference/kubernetes-api/extend-resources/validating-webhook-configuration-v1/