Spec-Zone.ru › Kubernetes 1.27

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

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

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

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

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

      • webhooks.matchConditions.expression (string), required

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

        'object' — объект из входящего запроса. Значение равно null для запросов DELETE. 'oldObject' — существующий объект. Значение равно null для запросов CREATE. 'request' — атрибуты запроса на авторизацию (/pkg/apis/admission/types.go#AdmissionRequest). '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]') с необязательным префиксом поддомена 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 определяет, следует ли запускать веб-хук на объекте, в зависимости от того, соответствует ли пространство имён для этого объекта селектору. Если сам объект является пространством имён, сопоставление выполняется по 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.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-27.docs.kubernetes.io/docs/reference/kubernetes-api/extend-resources/mutating-webhook-configuration-v1/

Spec-Zone.ru

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