본문으로 건너뛰기

Trivy

Trivy는 trivy-system 네임스페이스에서 Trivy Operator로 배포됩니다. 체크인된 구성은 의도적으로 범위를 좁게 유지합니다. 취약점 스캔과 config-audit 스캔만 활성화되고, RBAC assessment, infra assessment, cluster compliance, exposed-secret scanning, SBOM 생성은 비활성화됩니다.

책임

  • 배포된 워크로드를 감시하고 vulnerability/config 스캔 트리거
  • 내부 Zot 레지스트리를 통해 미러된 이미지에 대해 scan job 실행
  • operator 메트릭을 Prometheus에 게시
  • TTL 기반이 아니라 배포 기반 스캔 주기 유지

소스 경로

경로역할
lumie-infra/security/trivy/argocd.yamltrivy-system 네임스페이스를 대상으로 하는 ArgoCD Application
lumie-infra/security/trivy/helm-values.yamloperator 동작, scanner 리소스, 제외, metrics

런타임 계약

표면계약
활성 스캐너vulnerability와 config audit
비활성 스캐너RBAC assessment, infra assessment, cluster compliance, exposed secret, SBOM
Scan job timeout10m
동시 scan job 수2
Rescan 주기TTL 비활성화, 새 이미지 배포 시에만 스캔
제외 네임스페이스kube-system, kube-public, kube-node-lease, lumie-worker

런타임 흐름

중요한 구현 세부 사항

  • operator 이미지는 zot.lumie-infra.com/aquasec/trivy-operator:0.28.0으로 미러링됩니다.
  • scanner job은 standalone Trivy를 사용하며 5Gi 스토리지와 500Mi 메모리를 사용합니다.
  • scannerReportTTLOPERATOR_SCANNER_REPORT_TTL이 모두 비어 있으므로 리포트는 타이머로 주기 재생성되지 않습니다.

장애 동작과 운영 리스크

  • 큰 이미지나 느린 레지스트리는 10m scan-job timeout을 초과할 수 있습니다.
  • TTL 기반 rescan이 비활성화되어 있으므로 새 배포나 다른 트리거가 fresh scan을 유발하기 전까지 오래된 리포트가 남습니다.
  • 네임스페이스 제외는 desired contract의 일부이며, lumie-worker의 워크로드는 의도적으로 이 operator의 스캔 범위 밖에 있습니다.
  • 개별 scan job은 registry auth, 리소스 압박, 지원되지 않는 이미지 레이아웃 때문에 실패할 수 있지만 operator 자체는 healthy일 수 있습니다.

관측성

  • serviceMonitor.enabled: true로 Prometheus 스크레이프가 활성화됩니다.
  • operator 로그는 스케줄링, 리포트 생성, scan-job 실패를 설명합니다.
  • 스캔 아티팩트는 operator가 설치한 Trivy report 커스텀 리소스에 저장됩니다.

검증

kubectl get applications.argoproj.io -n argocd trivy
kubectl get deploy,pods -n trivy-system -l app.kubernetes.io/instance=trivy
kubectl logs -n trivy-system -l app.kubernetes.io/instance=trivy --all-containers --tail=200
kubectl api-resources | rg 'trivy|report'
kubectl get jobs -n trivy-system

성공 신호:

  • trivy Argo CD application이 HealthySynced 상태입니다.
  • trivy-system에 Trivy operator deployment가 가용 상태입니다.
  • report CRD가 kubectl api-resources에 존재합니다.
  • operator 로그에 반복적인 scan job timeout이나 registry-auth 실패 없이 scan job이 완료됩니다.

관련 페이지