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
|
||
```
|