Kyverno & Kyverno Policies

Обновлено 5 ноября 2026 г.

Kyverno — это приложение для управления политиками безопасности Kubernetes. Политики безопасности представлены в Kyverno как ресурсы Kubernetes.
Kyverno поддерживает такие инструменты, как kubectl, git и kustomize. Интерфейс командной строки Kyverno можно использовать для тестирования политик и проверки ресурсов как часть конвейера CI/CD.

Kyverno-policies — это расширение для Kyverno.
Kyverno-policies содержит реализацию Kubernetes Pod Security Standards (PSS). При установке расширения можно выбрать режим работы политик: Audit (регистрация нарушений) или Enforce (блокировка запросов, нарушающих политики). Исходные политики доступны в репозитории Kyverno policies.

Отправлять оповещения из Kyverno в другие системы можно с помощью расширения kyverno-policy-reporter. Kyverno-policy-reporter поддерживает выгрузку в Yandex Object Storage (S3).

Инструкция по развертыванию

Важно

Обновление на месте с версий, выпущенных до 2026 года, не поддерживается. Для перехода выполните переустановку по инструкции ниже.

Порядок обновления для старых версий

Запланируйте небольшое окно обслуживания: эти шаги на короткое время отключают контроль
допуска (admission control) Kyverno в кластере. Команды выполняются через kubectl в целевом
кластере.

Перед выполнением убедитесь, что CRD и вебхуки Kyverno не используются другой установкой, в том числе KSPM. CRD общие для всего кластера. Сохраните все типы собственных политик старой установки перед удалением их CRD; приведённая ниже команда сохраняет только ClusterPolicy и Policy. Удаляйте только ресурсы старого приложения, проверяя принадлежность и точные имена.

0. (Рекомендуется) Сделайте резервную копию собственных политик

Шаг 3 удаляет CRD Kyverno, а вместе с ними — все объекты ClusterPolicy/Policy, включая
созданные вами. (Встроенные политики Pod Security Standards создаются заново, если Kyverno Policies включён с профилем baseline или restricted; собственные политики сохраните отдельно.) История PolicyReports тоже удаляется; после переустановки отчёты будут созданы заново.

kubectl get clusterpolicies.kyverno.io,policies.kyverno.io -A -o yaml > my-kyverno-policies-backup.yaml

1. Удалите старую версию через Marketplace

Удаляйте старое приложение через Marketplace, а не командой helm uninstall:

  • Консоль: Managed Service for Kubernetes → ваш кластер → Marketplace / установленные
    приложения → удалите приложение Kyverno; или
  • Terraform: удалите ресурс yandex_kubernetes_marketplace_helm_release и выполните
    terraform apply (destroy).

При этом запускается pre-delete-хук старого чарта (который удаляет вебхуки Kyverno) и
очищается запись Marketplace об установке. Прямой helm uninstall минует Marketplace и
оставляет «осиротевшую» запись о приложении, что позже приводит к ошибке AlreadyExists
при установке новой версии.

2. Удалите оставшиеся admission-вебхуки Kyverno — критично

Kyverno регистрирует свои вебхуки во время работы. Если какие-то из них уцелели после шага 1
(например, старый контроллер не работал и pre-delete-хук не отработал), они указывают на уже
несуществующий Service и могут блокировать подходящие под их правила запросы API в зависимости от failure policy. Проверьте ссылку каждого вебхука на Service и удалите только вебхуки удалённого приложения. Подставьте проверенные имена вместо заполнителей и повторите команды для каждого оставшегося вебхука:

kubectl get validatingwebhookconfigurations,mutatingwebhookconfigurations | grep kyverno
kubectl delete validatingwebhookconfiguration <old-kyverno-validating-webhook>
kubectl delete mutatingwebhookconfiguration <old-kyverno-mutating-webhook>

3. Удалите старые CRD Kyverno — обязательно

Helm устанавливает CRD чарта (каталог crds/) только если таких CRD ещё нет — он никогда не
обновляет и не заменяет существующие. Если старые CRD (Kyverno 1.9) остаются, новая установка
продолжит использовать устаревшие определения, и новые контроллеры v1.19.2 попадут в
crash-loop на проверках наличия CRD (отсутствуют ephemeralreports.reports.kyverno.io, группа
policies.kyverno.io и т. д.). Удалите только CRD, принадлежащие исключительно старому приложению, чтобы установились новые определения:

kubectl get crd -o name
kubectl delete crd <old-kyverno-crd>

Повторите удаление для каждого проверенного CRD старой установки. updaterequests.kyverno.io не является удалённым типом: этот CRD входит и в текущую версию.

4. Удалите старое пространство имён

Удаляйте только выделенное пространство имён старого приложения, убедившись, что в нём нет чужих приложений. Никогда не удаляйте default или общее пространство имён: в них удаляйте только ресурсы старого приложения:

kubectl delete namespace <старое-пространство-имён>

5. Проверьте, что кластер очищен

kubectl get crd | grep -E 'kyverno\.io|wgpolicyk8s\.io'                     # пусто
kubectl get validatingwebhookconfigurations,mutatingwebhookconfigurations | grep kyverno   # пусто
kubectl get ns <старое-пространство-имён>                                   # NotFound

6. Установите новую версию

Установите новую версию Kyverno.

Затем проверьте установку и заново примените собственные политики из шага 0:

kubectl -n <пространство-имён> get pods     # 4 контроллера в состоянии Running: admission/background/cleanup/reports
kubectl get clusterpolicies.kyverno.io      # политики PSS при включённом baseline/restricted

При проверке сохранённых собственных политик замените устаревшее поле
spec.validationFailureAction полем на уровне правила —
spec.rules[].validate.failureAction (Audit/Enforce).

  1. Создайте группу узлов для Kyverno.
  2. Задайте настройки приложения:
    • Пространство имён — создайте отдельное пространство имён, например kyverno-space, без других приложений. Не используйте default.
    • Название приложения — укажите название приложения.
    • Включение Kyverno policies — выберите для автоматической установки расширения kyverno-policies в Kyverno.
    • Pod Security Standard profile — выберите профиль Pod Security Standard: baseline, restricted или privileged. Если поле не заполнено, по умолчанию будет установлено значение baseline.
    • Validation failure action — выберите способ реагирования на срабатывания Kyverno: Audit (регистрация нарушений) или Enforce (режим блокировки). Если поле не заполнено, по умолчанию будет установлено значение Audit.
  3. Нажмите кнопку Установить.
  4. Дождитесь перехода приложения в статус Deployed.

Пространство имён установки по умолчанию исключено из admission-обработки Kyverno. Проверяйте применение политик на рабочих нагрузках в другом пространстве имён.

Подробнее о том, как отслеживать срабатывания Kyverno, читайте в инструкции.

Если приложение вам больше не нужно, удалите его через Marketplace. Проверьте, что его вебхуки удалены. Если они остались, следуйте инструкции по очистке вебхуков и удаляйте только конфигурации удалённого приложения.

Тип тарификации
Free
Тип
Приложение Kubernetes®
Категория
Безопасность
Издатель
ТОО «Яндекс.Облако Казахстан»
Примеры использования
  • Управление конфигурациями среды независимо от конфигураций рабочей нагрузки.
  • Сканирование существующих рабочих нагрузок для оптимизации работы кластеров Kubernetes.
  • Блокирование или изменение запросов API для оптимизации работы кластеров Kubernetes.
  • Проверка, изменение и генерация ресурсов Kubernetes.
  • Обеспечение безопасности цепочки поставок образов OCI.
Техническая поддержка

Служба технической поддержки Yandex Cloud отвечает на запросы 24 часа в сутки, 7 дней в неделю. Доступные виды запросов и срок их обработки зависят от тарифного плана. Подключить платную поддержку можно в консоли управления. Подробнее о порядке оказания технической поддержки.

Состав продукта
Helm-чартВерсия
Pull-команда
Документация
cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/charts/kyverno3.9.2Открыть
Docker-образВерсия
Pull-команда
cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/kyvernopre1793893539884375288679816952390537945439877248738v1.19.2
cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/kyverno1793893539884375288679816952390537945439877248738v1.19.2
cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/background-controller1793893539884375288679816952390537945439877248738v1.19.2
cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/cleanup-controller1793893539884375288679816952390537945439877248738v1.19.2
cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/reports-controller1793893539884375288679816952390537945439877248738v1.19.2
cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/kyverno-cli1793893539884375288679816952390537945439877248738v1.19.2
cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/readiness-checker1793893539884375288679816952390537945439877248738v1.19.2
cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/readiness-checker1793893539884375288679816952390537945439877248738v1.19.2
cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/kubectl1793893539884375288679816952390537945439877248738v1.31.4
Идентификаторы продукта
Продукт:
dp916f36aitv64vm3947
Лицензионное соглашение
Используя данный продукт, вы соглашаетесь с 
Тип тарификации
Free
Тип
Приложение Kubernetes®
Категория
Безопасность
Издатель
ТОО «Яндекс.Облако Казахстан»