Kyverno & Kyverno Policies

Обновлено 17 июля 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).

Совет

Чтобы выявить уязвимости в работе кластера Kubernetes, используйте приложение Chaos Mesh. Нахождение уязвимостей поможет настроить политики безопасности.

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

Важно

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

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

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

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

Шаг 3 удаляет CRD Kyverno, а вместе с ними — все объекты ClusterPolicy/Policy, включая
созданные вами. (Встроенные политики Pod Security Standards новая версия создаёт заново
автоматически; сохранять нужно только ваши собственные политики.) Историю 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 и блокируют создание любых подов во всём кластере. Убедитесь, что их
не осталось, и удалите оставшиеся:

kubectl get validatingwebhookconfigurations,mutatingwebhookconfigurations | grep kyverno
kubectl get validatingwebhookconfigurations,mutatingwebhookconfigurations -o name \
  | grep kyverno | xargs -r kubectl delete

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

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

kubectl get crd -o name | grep -E 'kyverno\.io|wgpolicyk8s\.io' | xargs -r kubectl delete

Заодно удалятся типы CRD, убранные в v1.18 (например, generaterequests, updaterequests).

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

Удалите пространство имён, которое использовала старая версия продукта (или убедитесь, что оно пустое,
прежде чем переиспользовать):

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, READY=true

При проверке сохранённых собственных политик учтите, что в Kyverno v1.18 поле
spec.validationFailureAction перенесено на уровень правила —
spec.rules[].validate.failureAction (Audit/Enforce).

  1. Создайте группу узлов для Kyverno.
  2. Задайте настройки приложения:
    • Пространство имен — создайте новое пространство имен (например, kyverno-space). Если вы оставите пространство имен по умолчанию, Kyverno может работать некорректно.
    • Название приложения — укажите название приложения.
    • Включение 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.

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

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

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

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

Состав продукта
Helm-чартВерсия
Pull-команда
Документация
yandex-cloud/kyverno/charts/kyverno3.8.1Открыть
Docker-образВерсия
Pull-команда
yandex-cloud/kyverno/kyvernopre1784119283108724882851268354215029534556359918548v1.18.1
yandex-cloud/kyverno/kyverno1784119283108724882851268354215029534556359918548v1.18.1
yandex-cloud/kyverno/background-controller1784119283108724882851268354215029534556359918548v1.18.1
yandex-cloud/kyverno/cleanup-controller1784119283108724882851268354215029534556359918548v1.18.1
yandex-cloud/kyverno/reports-controller1784119283108724882851268354215029534556359918548v1.18.1
yandex-cloud/kyverno/kyverno-cli1784119283108724882851268354215029534556359918548v1.18.1
yandex-cloud/kyverno/readiness-checker1784119283108724882851268354215029534556359918548v1.18.1
yandex-cloud/kyverno/readiness-checker1784119283108724882851268354215029534556359918548v1.18.1
yandex-cloud/kyverno/kubectl1784119283108724882851268354215029534556359918548v1.31.4
Идентификаторы продукта
Продукт:
f2edr1mv2dbaqf1s3skm
Лицензионное соглашение
Используя данный продукт, вы соглашаетесь с  и с условиями использования следующих продуктов: Условиями использования Yandex Cloud Marketplace
Тип тарификации
Free
Тип
Приложение Kubernetes®
Категория
Безопасность
Администрирование и DevOps
Издатель
Yandex Cloud

Вам может подойти