Files
2026-04-08 20:22:14 +07:00
..
2026-04-08 20:22:14 +07:00
2026-04-08 20:22:14 +07:00
2026-04-08 20:22:14 +07:00
2026-04-08 20:22:14 +07:00

Урок 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