Всем привет!
Kyverno – это инструмент для работы с политиками в Kubernetes, который может использоваться как для сканирования ресурсов кластера на соответствие лучшим практикам, так и для реализации этих практик путем блокировки или изменения API запросов. Важной особенностью является то, что управление политиками осуществляется аналогично управлению ресурсами Kubernetes. Это значит, что а) изучение нового языка (как в случае с OPA используется Rego, например) не требуется и б) управление политиками можно реализовать через стандартные утилиты, такие как kubectl.
Что можно делать с Kyverno?
🍡Проверять, изменять или генерировать любые ресурсы (например, генерировать квоты для namespaces при необходимости)
🍡Блокировать ресурсы или генерировать отчеты о нарушении политик
🍡Проверять политики и ресурсы в CI/CD сборке до применения в кластере, используя Kyverno CLI и пр.
Как работает Kyverno?
🍡Kyverno запускается в кластере как динамический admission controller,
🍡Посредством webhook получает проверяющие или изменяющие HTTP запросы с kube-apiserver
🍡Применяет соответствующие политики контроля
Установить Kyverno можно или напрямую из манифеста, или используя Helm.
Более подробная информация находится здесь: https://kyverno.io/docs/
А есть ли примеры?
Примеры есть. Один из них представлен ниже.
Запрет на использование пользователя с правами root
Kyverno – это инструмент для работы с политиками в Kubernetes, который может использоваться как для сканирования ресурсов кластера на соответствие лучшим практикам, так и для реализации этих практик путем блокировки или изменения API запросов. Важной особенностью является то, что управление политиками осуществляется аналогично управлению ресурсами Kubernetes. Это значит, что а) изучение нового языка (как в случае с OPA используется Rego, например) не требуется и б) управление политиками можно реализовать через стандартные утилиты, такие как kubectl.
Что можно делать с Kyverno?
🍡Проверять, изменять или генерировать любые ресурсы (например, генерировать квоты для namespaces при необходимости)
🍡Блокировать ресурсы или генерировать отчеты о нарушении политик
🍡Проверять политики и ресурсы в CI/CD сборке до применения в кластере, используя Kyverno CLI и пр.
Как работает Kyverno?
🍡Kyverno запускается в кластере как динамический admission controller,
🍡Посредством webhook получает проверяющие или изменяющие HTTP запросы с kube-apiserver
🍡Применяет соответствующие политики контроля
Установить Kyverno можно или напрямую из манифеста, или используя Helm.
Более подробная информация находится здесь: https://kyverno.io/docs/
А есть ли примеры?
Примеры есть. Один из них представлен ниже.
Запрет на использование пользователя с правами root
apiVersion: kyverno.io/v1Больше примеров можно найти по ссылке: https://github.com/kyverno/kyverno/blob/main/samples/README.md
kind: ClusterPolicy
metadata:
name: disallow-root-user
spec:
validationFailureAction: audit
rules:
- name: validate-runAsNonRoot
match:
resources:
kinds:
- Pod
validate:
message: "Running as root user is not allowed. Set runAsNonRoot to true"
anyPattern:
- spec:
securityContext:
runAsNonRoot: true
- spec:
securityContext:
runAsUser: ">0"
- spec:
containers:
- securityContext:
runAsNonRoot: true
- spec:
containers:
- securityContext:
runAsUser: ">0"