124 lines
3.5 KiB
Markdown
124 lines
3.5 KiB
Markdown
# Урок 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 - <<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
|
|
|
|
```bash
|
|
# Обновить CRD отдельно (важно!)
|
|
helm upgrade kyverno kyverno/kyverno \
|
|
--namespace kyverno \
|
|
--set crds.install=true \
|
|
--values values-production.yaml
|
|
|
|
# Проверить статус политик после обновления
|
|
kubectl get clusterpolicies -o wide
|
|
```
|
|
|
|
## 6. Удаление Kyverno
|
|
|
|
```bash
|
|
# ВНИМАНИЕ: сначала переведите критичные политики в 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
|
|
```
|