Spec-Zone.ru › Kubernetes 1.28

MutatingWebhookConfiguration

MutatingWebhookConfiguration описывает конфигурацию вебхука проверки доступа, который может принимать, отклонять и изменять объект.

apiVersion: admissionregistration.k8s.io/v1

import "k8s.io/api/admissionregistration/v1"

MutatingWebhookConfiguration

MutatingWebhookConfiguration описывает конфигурацию вебхука проверки доступа, который может принимать, отклонять и изменять объект.

  • apiVersion: admissionregistration.k8s.io/v1

  • kind: MutatingWebhookConfiguration

  • metadata (ObjectMeta)

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

  • webhooks ([]MutatingWebhook)

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

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

    MutatingWebhook описывает веб-хук для изменения и ресурсы и операции, к которым он применяется.

    • 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, ошибка игнорируется, и веб-хук пропускается

      Это бета-функция, управляемая шлюзом 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: соответствие запросу только в том случае, если он точно соответствует указанному правилу. Например, если развертывания можно изменять через 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 определяет, следует ли запускать веб-хук на объекте в зависимости от того, соответствует ли пространство имен этого объекта селектору. Если сам объект является пространством имен, сопоставление выполняется с метками объекта.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.reinvocationPolicy (string)

      reinvocationPolicy указывает, должно ли этот webhook вызываться несколько раз в рамках одной оценки принятия. Допустимые значения — «Never» и «IfNeeded».

      Never: webhook не будет вызываться более одного раза в рамках одной оценки принятия.

      IfNeeded: webhook будет вызываться как минимум один дополнительный раз в рамках оценки принятия, если объект, принимаемый к исполнению, изменяется другими плагинами принятия после первоначального вызова webhook. Webhook, указывающий этот параметр, должен быть идемпотентным, способным обрабатывать объекты, которые он ранее принял. Примечание: * количество дополнительных вызовов не гарантируется, что будет ровно одно. * если дополнительные вызовы приводят к дальнейшим изменениям объекта, webhooks не гарантируется, что будут вызваны снова. * webhooks, использующие этот параметр, могут быть переупорядочены для минимизации количества дополнительных вызовов. * для проверки объекта после того, как все изменения гарантированы, используйте validating admission webhook вместо этого.

      По умолчанию «Never».

    • webhooks.rules ([]RuleWithOperations)

      Rules описывает, какие операции с какими ресурсами/подресурсами интересуют webhook. Webhook интересуется операцией, если она соответствует любой Rule. Однако, чтобы предотвратить 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' означает подресурс log для pods. '' означает все ресурсы, но не подресурсы. 'pods/' означает все подресурсы pods. '/scale' означает все подресурсы scale. '/*' означает все ресурсы и их подресурсы.

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

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

      • webhooks.rules.scope (string)

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

    • webhooks.timeoutSeconds (int32)

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

MutatingWebhookConfigurationList

MutatingWebhookConfigurationList — это список MutatingWebhookConfiguration.

  • apiVersion: admissionregistration.k8s.io/v1

  • kind: MutatingWebhookConfigurationList

  • metadata (ListMeta)

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

  • items ([]MutatingWebhookConfiguration), required

    Список MutatingWebhookConfiguration.

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

Spec-Zone.ru

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