Kyverno & Kyverno Policies
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).
- Создайте группу узлов для Kyverno.
- Задайте настройки приложения:
- Пространство имён — создайте отдельное пространство имён, например
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.
- Пространство имён — создайте отдельное пространство имён, например
- Нажмите кнопку Установить.
- Дождитесь перехода приложения в статус
Deployed.
Пространство имён установки по умолчанию исключено из admission-обработки Kyverno. Проверяйте применение политик на рабочих нагрузках в другом пространстве имён.
Подробнее о том, как отслеживать срабатывания Kyverno, читайте в инструкции.
Если приложение вам больше не нужно, удалите его через Marketplace. Проверьте, что его вебхуки удалены. Если они остались, следуйте инструкции по очистке вебхуков и удаляйте только конфигурации удалённого приложения.
- Управление конфигурациями среды независимо от конфигураций рабочей нагрузки.
- Сканирование существующих рабочих нагрузок для оптимизации работы кластеров Kubernetes.
- Блокирование или изменение запросов API для оптимизации работы кластеров Kubernetes.
- Проверка, изменение и генерация ресурсов Kubernetes.
- Обеспечение безопасности цепочки поставок образов OCI.
Служба технической поддержки Yandex Cloud отвечает на запросы 24 часа в сутки, 7 дней в неделю. Доступные виды запросов и срок их обработки зависят от тарифного плана. Подключить платную поддержку можно в консоли управления. Подробнее о порядке оказания технической поддержки.
| Helm-чарт | Версия | Pull-команда | Документация |
|---|---|---|---|
| cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/charts/kyverno | 3.9.2 | Открыть |
| Docker-образ | Версия | Pull-команда |
|---|---|---|
| cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/kyvernopre1793893539884375288679816952390537945439877248738 | v1.19.2 | |
| cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/kyverno1793893539884375288679816952390537945439877248738 | v1.19.2 | |
| cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/background-controller1793893539884375288679816952390537945439877248738 | v1.19.2 | |
| cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/cleanup-controller1793893539884375288679816952390537945439877248738 | v1.19.2 | |
| cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/reports-controller1793893539884375288679816952390537945439877248738 | v1.19.2 | |
| cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/kyverno-cli1793893539884375288679816952390537945439877248738 | v1.19.2 | |
| cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/readiness-checker1793893539884375288679816952390537945439877248738 | v1.19.2 | |
| cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/readiness-checker1793893539884375288679816952390537945439877248738 | v1.19.2 | |
| cr.yandexcloud.kz/yc-marketplace/yandex-cloud/kyverno/kubectl1793893539884375288679816952390537945439877248738 | v1.31.4 |