Урок 1.2 — Установка и настройка Kyverno
1. Добавить Helm репозиторий
helm repo add kyverno https://kyverno.github.io/kyverno/
helm repo update
# Посмотреть доступные версии
helm search repo kyverno/kyverno --versions | head -10
2. Установка
Development / Lab
helm install kyverno kyverno/kyverno \
--namespace kyverno \
--create-namespace \
--values values-development.yaml
Production
helm install kyverno kyverno/kyverno \
--namespace kyverno \
--create-namespace \
--values values-production.yaml
3. Проверка установки
# Статус подов
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. Тестовая политика
# Создать тестовую политику
kubectl apply -f test-policy.yaml
# Попробовать создать ConfigMap без обязательного лейбла (должна быть ошибка)
kubectl create configmap test-bad --from-literal=key=value -n default
# Создать правильный ConfigMap
kubectl apply -f - <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
name: test-good
namespace: default
labels:
test: "true"
data:
key: value
EOF
# Удалить тестовую политику
kubectl delete -f test-policy.yaml
kubectl delete configmap test-good -n default
5. Обновление Kyverno
# Обновить CRD отдельно (важно!)
helm upgrade kyverno kyverno/kyverno \
--namespace kyverno \
--set crds.install=true \
--values values-production.yaml
# Проверить статус политик после обновления
kubectl get clusterpolicies -o wide
6. Удаление Kyverno
# ВНИМАНИЕ: сначала переведите критичные политики в Audit режим
# Удалить через Helm
helm uninstall kyverno -n kyverno
# Удалить CRD
kubectl delete crd $(kubectl get crd | grep kyverno | awk '{print $1}')
# Удалить webhook конфигурации (если остались)
kubectl delete validatingwebhookconfigurations \
$(kubectl get validatingwebhookconfigurations | grep kyverno | awk '{print $1}') \
2>/dev/null || true
kubectl delete mutatingwebhookconfigurations \
$(kubectl get mutatingwebhookconfigurations | grep kyverno | awk '{print $1}') \
2>/dev/null || true