Files
kyverno-2026-example/01-introduction/03-policy-structure/README.md
2026-04-08 20:22:14 +07:00

57 lines
2.0 KiB
Markdown

# Урок 1.3 — Структура и синтаксис политик Kyverno
## Анатомия политики
Откройте `annotated-policy.yaml` — в нём каждое поле прокомментировано.
## Операторы в паттернах
| Оператор | Значение | Пример |
|----------|----------|--------|
| `?*` | поле существует и не пустое | `app: "?*"` |
| `*` | wildcard, любое значение | `image: "*.azurecr.io/*"` |
| `^(a\|b)$` | регулярное выражение | `env: "^(dev\|staging\|production)$"` |
| `>=2` | числовое сравнение | `replicas: ">=2"` |
| `=(field)` | опциональное поле | `=(privileged): false` |
| `+(field)` | добавить только если нет (в mutate) | `+(label): value` |
## Структура match
```yaml
match:
any: # ИЛИ — любое из условий
- resources:
kinds: [Pod]
namespaces: [production]
all: # И — все условия одновременно
- resources:
kinds: [Deployment]
- subjects:
- kind: ServiceAccount
name: my-sa
```
## Практические задания
```bash
# 1. Изучить структуру политики
cat annotated-policy.yaml
# 2. Применить политику
kubectl apply -f annotated-policy.yaml
# 3. Протестировать через kyverno CLI без кластера
kyverno apply annotated-policy.yaml --resource test-resources/pod-good.yaml
kyverno apply annotated-policy.yaml --resource test-resources/pod-bad.yaml
# 4. Применить тестовые ресурсы в кластер
kubectl apply -f test-resources/
# 5. Посмотреть результаты в PolicyReport
kubectl get policyreports -n default -o yaml
# 6. Удалить ресурсы
kubectl delete -f test-resources/
kubectl delete -f annotated-policy.yaml
```