Kyverno는 Kubernetes 클러스터에서 다양한 정책(Policy)을 선언적으로 정의하고 적용할 수 있는 Kubernetes 네이티브 오픈소스 정책 엔진입니다. Kyverno를 활용하면 특정 이미지 태그 제한, 호스트 포트 사용 제한, 이미지 레지스트리 제한 등 보안과 거버넌스에 필요한 다양한 정책을 손쉽게 관리할 수 있습니다.
기존의 OPA Gatekeeper와 같은 도구와 달리, Kyverno는 별도의 정책 언어를 배우지 않아도 되고, Kubernetes의 YAML 매니페스트 형태로 정책을 작성할 수 있어 진입장벽이 낮고, kubectl, git, kustomize 등 익숙한 도구들과 바로 연동할 수 있습니다.
Kyverno는 Kubernetes의 Admission Controller로 동작하며, API 서버로 들어오는 리소스 생성/수정/삭제 요청을 가로채어 정책을 적용합니다. 정책에 맞지 않는 리소스는 거부하거나, 자동으로 수정하거나, 경고 메시지만 남길 수 있습니다.
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-labels
spec:
validationFailureAction: enforce
rules:
- name: check-for-labels
match:
any:
- resources:
kinds:
- Pod
validate:
message: "label 'app.kubernetes.io/name' is required"
pattern:
metadata:
labels:
app.kubernetes.io/name: "?*"
이 정책을 적용하면, 해당 라벨이 없는 Pod은 생성이 거부됩니다.
kubectl create -f https://raw.githubusercontent.com/kyverno/kyverno/main/config/install.yaml
helm repo add kyverno https://kyverno.github.io/kyverno/
helm repo update
helm install kyverno kyverno/kyverno -n kyverno --create-namespace
고가용성(HA)이 필요한 경우 replicaCount를 늘릴 수 있습니다.특징 | Kyverno | OPA Gatekeeper |
---|---|---|
정책 언어 | YAML (Kubernetes CRD) | Rego (별도 DSL) |
진입장벽 | 낮음 | 다소 높음 |
정책 관리 방식 | kubectl, git, kustomize 등 사용 가능 | 별도 도구 필요 |
정책 유형 | Validate, Mutate, Generate, Cleanup | Validate, Mutate |
네이티브 통합 | Kubernetes 네이티브 | Kubernetes 네이티브 |
Kyverno는 Kubernetes 환경에서 정책 기반의 거버넌스와 보안을 쉽고 강력하게 실현할 수 있는 도구입니다. 별도의 언어 학습 없이 YAML만으로 정책을 선언할 수 있어, DevOps 및 SRE 환경에서 빠르게 도입할 수 있고, 대규모 클러스터 운영에도 적합합니다.