gomumu
제가 확인한 gomumu는 yamong/cmd/main.go를 중심으로 PodDetail과 Policy를 먼저 동기화하고, tracepoint와 LSM eBPF 매니저를 연결해 정책을 런타임에 주입하는 Go 기반 Kubernetes 보안 레포입니다.
레포지토리 정보
gomumu는 클러스터 안에서 정책 대상을 찾고, eBPF 맵을 갱신하고, 이벤트를 Kafka로 흘려보내는 흐름을 한 프로세스 안에 묶어 둔 구조입니다. operator/ 아래에는 별도의 Kubebuilder 계열 controller-runtime 코드도 함께 존재합니다.
구조와 흐름
yamong/cmd/main.go에서 In-Cluster config를 읽고PodDetailLister,PolicyLister,TracepointManager,LSMEnforcementManager를 차례로 초기화합니다.yamong/pkg/policy/policy_lister.go는watch.yamong.com/v1alpha1의policies를 dynamic informer로 감시합니다.yamong/pkg/policy/policy_mattcher.go는 PodDetail과 Policy 이벤트를 받아 컨테이너 이름, Pod 이름, namespace, label 기준으로 매칭합니다.yamong/pkg/policy/policy_feeder.go는 매칭 결과를 받아 LSM, tracepoint, network BPF map을 다시 채웁니다.yamong/pkg/ringbuf/aggregator/aggregator.go는 tracepoint와 LSM ringbuf 이벤트를 배치로 모아 Kafka 토픽으로 전달합니다.yamong/bpf/*.bpf.c는 tracepoint와 enforcement 쪽 커널 프로그램을 담고 있습니다.yaml/yamong.yaml,yaml/daemonset-manifest.yaml,yaml/yamong-sa.yaml은 DaemonSet, hostPID/hostNetwork, privileged 권한, RBAC 구성을 드러냅니다.
주요 파일
yamong/cmd/main.go- 실행 진입점, 리스터와 eBPF 매니저 초기화yamong/pkg/container/container_lister.go- PodDetail 조회와 컨테이너 PID 연동yamong/pkg/policy/policy_lister.go- 정책 informer와 캐시 동기화yamong/pkg/policy/policy_mattcher.go- Pod/컨테이너/namespace/label 매칭yamong/pkg/policy/policy_feeder.go- 정책을 BPF map에 반영yamong/pkg/ringbuf/aggregator/aggregator.go- ringbuf 이벤트 배치와 Kafka 전송yamong/bpf/tracepoint.bpf.c- tracepoint 수집yamong/bpf/enforcement.bpf.c- LSM 강제 로직yaml/yamong.yaml- DaemonSet 배포 정의operator/- 별도 오퍼레이터 코드베이스
포트폴리오 메모
제가 보기에는 이 레포의 강점은 “정책 리소스 감시 → 컨테이너 식별 → BPF map 주입 → 이벤트 집계”를 한 줄로 이어 놓은 점입니다. 다만 운영형 경로와 오퍼레이터 경로가 함께 있어 범위가 넓으므로, 소개할 때는 yamong/cmd/main.go의 런타임 경로와 operator/의 별도 관리 경로를 구분해서 적는 편이 안전합니다.