Kyverno
Kyverno는 Lumie의 클러스터 admission guardrail입니다. 저장소는 admission controller에 업스트림 차트를 사용하고, 정책 집합은 security/kyverno/manifests/ 아래 체크인된 YAML 파일로 유지합니다.
책임
- Kyverno admission 컨트롤러 실 행
- 체크인된 정책 집합이 지시하는 경우 들어오는 pod spec 변형
- validation 정책을
Audit모드로 유지해 워크로드 생성을 막지 않고 admission 시점 가시성 제공 - admission-controller 메트릭을 Prometheus에 노출
소스 경로
| 경로 | 역할 |
|---|---|
lumie-infra/security/kyverno/argocd.yaml | kyverno 네임스페이스를 대상으로 하는 ArgoCD Application |
lumie-infra/security/kyverno/helm-values.yaml | admission-컨트롤러 이미지, 리소스, metrics, 클러스터 전역 필터 |
lumie-infra/security/kyverno/kustomization.yaml | 차트 위에 로컬 정책 파일 추가 |
lumie-infra/security/kyverno/manifests/policies/require-zot-registry.yaml | 이미지 출처에 대한 audit 정책 |
lumie-infra/security/kyverno/manifests/policies/require-security-context.yaml | non-root 및 privilege 설정에 대한 audit 정책 |
lumie-infra/security/kyverno/manifests/policies/require-resource-limits.yaml | 메모리/CPU request와 CPU limit 금지에 대한 audit 정책 |
lumie-infra/security/kyverno/manifests/policies/remove-cpu-limits.yaml | pod에서 CPU limit를 제거하는 admission 시점 mutation |
lumie-infra/security/kyverno/manifests/policy-exceptions.yaml | 부트스트랩 네임스페이스, Falco, Tekton DinD, CNPG에 대한 명시적 예외 |
정책 표면
체크인된 정책은 의도적으로 보수적입니다.
- 이 폴더의 모든 validation 정책은
validationFailureAction: Audit를 사용합니다. remove-cpu-limits만 체크인된 mutate 규칙이며 background reconciliation이 아니라 admission 시점에만 실행됩니다.
즉, 현재 Kyverno 계약은 강제 차단이나 background report가 아니라 admission 시점 가시성과 정규화입니다.
런타임 흐름
중요한 구현 세부 사항
- Helm은
crds.install: false로 설정됩니다. 저장소는 Kyverno CRD가 이미 존재한다고 가정하며, values 파일 주석에 수동 CRD 설치를 문서화합니다. - 차트는
config.resourceFilters를 통해 시스템 네임스페이스와 churn이 큰 리소스 종류를 제외합니다. - admission-컨트롤러
ServiceMonitor만 활성입니다. Background, cleanup, reports controller는 6Gi 노드 footprint 계획에 맞춰 비활성화되어 있습니다.