2.0 KiB
2.0 KiB
Урок 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
match:
any: # ИЛИ — любое из условий
- resources:
kinds: [Pod]
namespaces: [production]
all: # И — все условия одновременно
- resources:
kinds: [Deployment]
- subjects:
- kind: ServiceAccount
name: my-sa
Практические задания
# 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