Spec-Zone.ru › Kubernetes 1.28

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)

    Стратегия патча: слияние по ключу 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)

      Стратегия патча: слияние по ключу name

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

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

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

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

      Это бета-функция, управляемая шлюзом 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' — Authorizer CEL. Может использоваться для выполнения проверок авторизации для принципала (пользователя или учетной записи сервиса) запроса. См. 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', используемый для валидации регулярный выражение '([A-Za-z0-9][-A-Za-z0-9.]*)?[A-Za-z0-9]') с необязательным префиксом доменного имени и '/' (например, 'example.com/MyName')

        Обязательно.

    • 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)

      Правила описывают, какие операции с какими ресурсами/подресурсами интересуют вебхук. Вебхук интересуется операцией, если она соответствует любой Правилу. Однако, чтобы предотвратить 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-28.docs.kubernetes.io/docs/reference/kubernetes-api/extend-resources/validating-webhook-configuration-v1/

Spec-Zone.ru

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