# Урок 5.3 — Переиспользуемые шаблоны политик (Helm Chart) ## Структура ``` kyverno-policies/ ├── Chart.yaml ├── values.yaml # дефолтные значения ├── values-staging.yaml # overrides для staging ├── values-production.yaml # overrides для production ├── templates/ │ ├── require-resource-limits.yaml │ ├── disallow-privileged.yaml │ ├── require-labels.yaml │ └── generate-networkpolicy.yaml └── tests/ ├── kyverno-test.yaml └── resources/ ├── pod-compliant.yaml ├── pod-no-limits.yaml ├── pod-privileged.yaml └── deployment-no-labels.yaml ``` ## Запуск тестов (без кластера) ```bash cd kyverno-policies # Сгенерировать манифесты из шаблонов и протестировать helm template . -f values.yaml | \ kyverno apply - --resource tests/resources/ --table # Запустить встроенные kyverno тесты # (сначала нужно отрендерить шаблоны в обычные YAML) helm template . -f values.yaml --output-dir /tmp/rendered-policies kyverno test tests/ \ --policy-report \ --detailed-results ``` ## Деплой в кластер ```bash # Staging — всё в Audit helm upgrade --install kyverno-policies . \ --namespace kyverno \ --create-namespace \ -f values-staging.yaml # Production — Enforce helm upgrade --install kyverno-policies . \ --namespace kyverno \ --create-namespace \ -f values-production.yaml # Проверить задеплоенные политики kubectl get clusterpolicies -l helm.sh/chart=kyverno-policies-1.0.0 # Rollback если что-то пошло не так helm rollback kyverno-policies 1 -n kyverno ``` ## PolicyException — управляемые исключения ```bash # Применить временное исключение для legacy-сервиса kubectl apply -f - <