Spec-Zone.ru › Kubernetes 1.26

ValidatingWebhookConfiguration

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 по ключу name

    Webhooks — это список вебхуков и затронутых ресурсов и операций.

    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 определяет, как используется список «правил» для сопоставления входящих запросов. Допустимые значения — «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 оценивается как для старого объекта, так и для нового объекта, которые будут отправлены в вебхук, и считается, что он соответствует, если соответствует либо объект. Нулевой объект (oldObject в случае создания или newObject в случае удаления) или объект, который не может иметь метки (например, DeploymentRollback или PodProxyOptions object), не считается соответствующим. Используйте селектор объекта только в том случае, если вебхук опциональный, потому что конечные пользователи могут пропустить вебхук проверки доступа, задав метки. По умолчанию пустой LabelSelector, который соответствует всему.

    • 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 секунд.

Список конфигураций валидирующих вебхуков

Список конфигураций валидирующих вебхуков (ValidatingWebhookConfigurationList) представляет собой список конфигураций ValidatingWebhookConfiguration.

  • apiVersion: admissionregistration.k8s.io/v1

  • kind: Список конфигураций валидирующих вебхуков (ValidatingWebhookConfigurationList)

  • metadata (ListMeta)

    Стандартные метаданные списка. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

  • items ([]ValidatingWebhookConfiguration), обязательный параметр

    Список конфигураций ValidatingWebhookConfiguration.

© 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/validating-webhook-configuration-v1/

Spec-Zone.ru

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