Spec-Zone.ru › Kubernetes

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

    Карта: уникальные значения по ключу 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.matchConditions ([]MatchCondition)

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

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

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

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

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

      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', используемый для проверки регулярное выражение — '([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, которые будут отправлены в веб-хук, и считается, что он соответствует, если совпадает любой из объектов. Объект null (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' означает все подресурсы scale. '/*' означает все ресурсы и их подресурсы.

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

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

      • webhooks.rules.scope (string)

        scope определяет область действия данного правила. Допустимые значения — "Cluster", "Namespaced" и "". "Cluster" означает, что этому правилу будут соответствовать только ресурсы уровня кластера. Объекты API пространства имён являются ресурсами уровня кластера. "Namespaced" означает, что этому правилу будут соответствовать только ресурсы пространства имён. "" означает, что ограничений по области действия нет. Подресурсы соответствуют области действия родительского ресурса. По умолчанию — "*".

    • webhooks.timeoutSeconds (int32)

      TimeoutSeconds указывает время ожидания для данного вебхука. После истечения времени ожидания вызов вебхука будет проигнорирован или вызов API завершится неудачей в зависимости от политики обработки ошибок. Значение таймаута должно быть от 1 до 30 секунд. По умолчанию — 10 секунд.

ValidatingWebhookConfigurationList

ValidatingWebhookConfigurationList — это список ValidatingWebhookConfiguration.

  • items ([]ValidatingWebhookConfiguration), required

    Список ValidatingWebhookConfiguration.

  • apiVersion (string)

    APIVersion определяет версионированный схему этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее значение и могут отклонять нераспознанные значения. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

  • kind (string)

    Kind — это строковое значение, представляющее REST-ресурс, который представляет этот объект. Серверы могут вывести это значение из конечной точки, к которой клиент отправляет запросы. Не может быть обновлён. В CamelCase. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

  • metadata (ListMeta)

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

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

Spec-Zone.ru

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