Files
kyverno-2026-example/01-introduction/03-policy-structure
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.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