Spec-Zone.ru › Kubernetes 1.27

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

    Список вебхуков и ресурсов/операций, на которые они влияют.

    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.matchConditions ([]MatchCondition)

      Стратегия обработки изменений: merge по ключу name

      Словарь: уникальные значения по ключу name будут сохранены при merge

      MatchConditions — список условий, которые должны быть выполнены для отправки запроса на этот вебхук. Условия соответствия фильтруют запросы, которые уже были сопоставлены правилами, namespaceSelector и objectSelector. Пустой список matchConditions соответствует всем запросам. Максимальное количество matchConditions — 64.

      Точная логика сопоставления (по порядку):

      1. Если ЛЮБОЕ условие соответствия оценивается как FALSE, вебхук пропускается.
      2. Если ВСЕ условия соответствия оцениваются как TRUE, вебхук вызывается.
      3. Если любое условие соответствия оценивается как ошибка (но ни одно не является FALSE):
        • Если failurePolicy=Fail, отклоните запрос.
        • Если failurePolicy=Ignore, ошибка игнорируется, и вебхук пропускается.

      Это функция alpha-версии и управляемая шлюзом AdmissionWebhookMatchConditions.

      MatchCondition представляет условие, которое должно быть выполнено для отправки запроса вебхуку.

      • webhooks.matchConditions.expression (string), required

        Expression представляет выражение, которое будет вычислено CEL. Должно оцениваться как bool. Выражения CEL имеют доступ к содержимому AdmissionRequest и Authorizer, организованному в переменные CEL:

        'object' — Объект из входящего запроса. Значение равно null для запросов DELETE. 'oldObject' — Существующий объект. Значение равно null для запросов CREATE. 'request' — Атрибуты запроса к системе авторизации(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' — CEL Authorizer. Может использоваться для выполнения проверок авторизации для принципала (пользователя или учетной записи сервиса) запроса. См. https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz 'authorizer.requestResource' — CEL ResourceCheck, построенный из 'authorizer' и сконфигурированный с ресурсом запроса. Документация по CEL: https://kubernetes.io/docs/reference/using-api/cel/

        Необходимо.

      • webhooks.matchConditions.name (string), required

        Name — идентификатор для этого условия соответствия, используемый для стратегического объединения matchConditions, а также для предоставления идентификатора для целей регистрации. Хорошее имя должно быть описательным для соответствующего выражения. Имя должно быть квалифицированным именем, состоящим из буквенно-цифровых символов, '-', '_' или '.', и должно начинаться и заканчиваться буквенно-цифровым символом (например, 'MyName', или 'my.name', или '123-abc', используемый для проверки regex — '([A-Za-z0-9][-A-Za-z0-9_]*)?[A-Za-z0-9]') с необязательным префиксом поддомена DNS и '/' (например, 'example.com/MyName')

        Необходимо.

    • webhooks.matchPolicy (string)

      matchPolicy определяет, как используется список "rules" для соответствия входящим запросам. Допустимые значения — "Exact" или "Equivalent".

      • Exact: Сопоставляет запрос только в том случае, если он точно соответствует заданному правилу. Например, если к deployments можно получить доступ через apps/v1, apps/v1beta1 и extensions/v1beta1, но "rules" содержат только apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запрос к apps/v1beta1 или extensions/v1beta1 не будет отправлен в вебхук.

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

    • webhooks.rules ([]RuleWithOperations)

      Правила описывают, какие операции с какими ресурсами/подресурсами интересуют вебхук. Вебхук интересуется операцией, если она соответствует любой Правилу. Однако, чтобы предотвратить 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' означает все подресурсы масштабирования. '/*' означает все ресурсы и их подресурсы.

        Если присутствует символ подстановки, правило валидации гарантирует, что ресурсы не перекрывают друг друга.

        В зависимости от содержащего объекта, подресурсы могут быть недоступны. Требуется.

      • 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: ValidatingWebhookConfigurationList

  • metadata (ListMeta)

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

  • items ([]ValidatingWebhookConfiguration), required

    Список ValidatingWebhookConfiguration.

© 2022 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2022 The Linux Foundation ®. All rights reserved.
https://v1-27.docs.kubernetes.io/docs/reference/kubernetes-api/extend-resources/validating-webhook-configuration-v1/

Spec-Zone.ru

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