# Урок 1.2 — Установка и настройка Kyverno ## 1. Добавить Helm репозиторий ```bash helm repo add kyverno https://kyverno.github.io/kyverno/ helm repo update # Посмотреть доступные версии helm search repo kyverno/kyverno --versions | head -10 ``` ## 2. Установка ### Development / Lab ```bash helm install kyverno kyverno/kyverno \ --namespace kyverno \ --create-namespace \ --values values-development.yaml ``` ### Production ```bash helm install kyverno kyverno/kyverno \ --namespace kyverno \ --create-namespace \ --values values-production.yaml ``` ## 3. Проверка установки ```bash # Статус подов kubectl get pods -n kyverno # Все поды должны быть Running: # NAME READY STATUS RESTARTS # kyverno-admission-controller-xxx 1/1 Running 0 # kyverno-background-controller-xxx 1/1 Running 0 # kyverno-cleanup-controller-xxx 1/1 Running 0 # kyverno-reports-controller-xxx 1/1 Running 0 # Проверить webhook конфигурации kubectl get validatingwebhookconfigurations | grep kyverno kubectl get mutatingwebhookconfigurations | grep kyverno # Проверить что caBundle не пустой (признак корректной регистрации webhook) kubectl get validatingwebhookconfigurations \ kyverno-resource-validating-webhook-cfg \ -o jsonpath='{.webhooks[0].clientConfig.caBundle}' | wc -c # Посмотреть события kubectl get events -n kyverno --sort-by='.lastTimestamp' | tail -20 # Логи admission controller kubectl logs -n kyverno \ -l app.kubernetes.io/component=admission-controller \ --tail=50 ``` ## 4. Тестовая политика ```bash # Создать тестовую политику kubectl apply -f test-policy.yaml # Попробовать создать ConfigMap без обязательного лейбла (должна быть ошибка) kubectl create configmap test-bad --from-literal=key=value -n default # Создать правильный ConfigMap kubectl apply -f - </dev/null || true kubectl delete mutatingwebhookconfigurations \ $(kubectl get mutatingwebhookconfigurations | grep kyverno | awk '{print $1}') \ 2>/dev/null || true ```