코드 오너
코드 오너 (Code owners)
코드 오너는 Cilium 커뮤니티가 공통 지식을 팀으로 모아 기여자에게 일관되고 실행 가능한 피드백을 제공하기 위해 사용하는 체계예요. 이 섹션에서 팀 그룹과 리뷰 시 집중 영역에 대한 제안을 설명할게요.
출처: Code owners
본문
이 팀들의 주된 동기는 리뷰 프로세스에 구조를 제공해, 기여자들이 커뮤니티 구성원에게 연락해 논의를 진행하고, 기여가 커뮤니티의 기대에 부합하는지 확인하며, 제안된 변경 방향에 대해 합의할 수 있도록 하는 거예요. 또한 이 팀들은 주로 특정 풀 리퀘스트 리뷰를 위해 동원되지만, 시간이 지나면서 자신의 영역에서 Cilium 프로젝트를 개선하는 방법에 대해 스스로 조직화하는 것도 권장돼요.
어떤 커미터(committer)든 코드 오너 팀에 자발적으로 지명될 수 있어요. Slack의 #committers 채널에서 코어 팀에 연락해 조율하세요. 커미터는 코드 오너 팀에 합류하기 위해 그 영역에 대한 전문 지식을 요구하지 않아요. 단지 논의에 참여하고 그 영역을 배우려는 의지만 있으면 돼요.
프로젝트 전역 (Project-wide)
이 코드 오너들은 Cilium 프로젝트의 어떤 저장소에 제출된 풀 리퀘스트에도 피드백을 제공할 수 있어요.
-
@cilium/api: Cilium REST 및 gRPC API의 하위 호환성(backwards-compatibility)을 보장해요. Hubble은 @cilium/sig-hubble-api가 담당하므로 제외돼요.
-
@cilium/build: 빌드 및 패키징 시스템에 사용되는 언어와 스크립팅(Make, Shell, Docker)에 대한 피드백을 제공해요.
-
@cilium/cli: Command-Line Interface 변경에 대한 사용자 경험 피드백을 제공해요. 이 오너들은 사용자 커뮤니티를 대신해 리뷰 프로세스에 사용자 관점을 가져오는 역할이에요. 정보가 어떻게 제시되는지, 플래그와 옵션의 일관성을 고려해요.
-
@cilium/committers: 커밋 권한이 있는 Cilium 기여자들.
-
@cilium/ci-structure: Cilium 프로젝트의 지속적 통합(CI) 및 테스트 인프라(GitHub actions, VM helpers, 테스트 프레임워크 등 포함) 사용에 대한 모범 안내를 제공해요.
-
@cilium/community: USERS.md 같은 Cilium 커뮤니티 사용자를 참조하는 파일을 유지 관리해요.
-
@cilium/contributing: 포용적인 기여자 커뮤니티를 보장하는 관행을 권장해요. 기여자가 사용하는 도구와 스크립트를 리뷰해요.
-
@cilium/docs-structure: 문서의 일관성과 배치를 보장해요. Sphinx 사용과 커뮤니티에 내용을 명확하게 전달하는 방법에 대한 일반적인 피드백을 제공해요. 이 코드 오너는 제출물의 기술적 정확성을 검증할 것으로 기대되지 않아요. 정확성은 일반적으로 특정 문서에도 할당되는 다른 코드 오너 그룹이 처리해요.
-
@cilium/sig-foundations: 핵심 라이브러리 변경을 리뷰하고 전반적인 소프트웨어 아키텍처에 대한 지침을 제공해요.
-
@cilium/github-sec: 워크플로 사용에 대한 모범 사례(예: GitHub actions의 악의적 사용 방지)를 유지해 Cilium 프로젝트 저장소의 보안을 담당해요.
-
@cilium/helm: Helm이 기능을 구성하는 방식에 대한 의견을 제공해요. 이 오너들은 사용자 커뮤니티를 대신해 리뷰 프로세스에 사용자 관점을 가져오는 역할이에요. Helm 변경이 업그레이드에 대해 전방 호환되게 정의되고 배포 모범 사례(예: GitOps 친화적인)를 따르도록 보장해요.
-
@cilium/sig-hubble-api: gRPC 엔드포인트와 관련된 Hubble API 변경을 리뷰해요. 이 팀은 API 변경이 하위 호환되거나, 하위 호환되지 않는 변경을 위해 새 API 버전이 생성되도록 보장해요.
-
@cilium/metrics: 메트릭의 유형, 이름, 라벨에 대한 권장 사항을 제공해 모범을 따르게 해요. 추가되거나 확장되는 메트릭의 카디널리티(cardinality) 영향을 고려하는 것도 포함돼요.
-
@cilium/release-managers: AUTHORS, VERSION 같은 릴리스 관련 파일을 리뷰해요.
-
@cilium/security: Cilium에 보안 영향을 미칠 수 있는 변경에 대한 피드백을 제공하고, 보안 관련 문서를 유지 관리해요.
-
@cilium/vendor: 소프트웨어 의존성에 대한 vendor 업데이트를 리뷰해 잠재적 업스트림 중단/비호환성이 없는지 확인해요. 적극적으로 유지 관리되는 업스트림 라이브러리의 비공식 포크 사용을 권장하지 않아요.
저장소 오너 (Repository Owners)
다음 코드 오너들은 특정 저장소에 대한 기여에 대해 다양한 일반 피드백을 담당해요.
-
@cilium/sig-hubble: 시스템 이벤트 관찰과, 그 이벤트를 gRPC 프로토콜을 통해 노드 밖과 클러스터 밖으로 내보내는 것과 관련된 모든 Cilium 및 Hubble 코드를 리뷰해요. 예를 들어 TLS를 통해 이벤트 채널의 보안을 보장해요.
-
@cilium/hubble-metrics: Hubble 메트릭 관련 코드를 리뷰하고, 노출되는 메트릭 변경이 세심한 고려 없이 일관되지 않거나 중단되지 않도록 보장해요.
-
@cilium/hubble-ui: Hubble UI 그래픽 인터페이스를 유지 관리해요.
-
@cilium/tetragon: 모든 Tetragon 코드를 Go와 C(eBPF용) 모두 리뷰해요.
위 팀들은 대응하는 저장소에 대한 대부분의 기여 리뷰를 담당해요. 추가로, 아래 나열된 "maintainer" 팀들이 있는데, 이들은 저장소의 전반적인 코드 리뷰를 담당하지는 않지만 저장소에 대한 관리자(admin) 권한을 가져서 GitHub 저장소 설정, 시크릿 및 관련 프로세스 구성에 도움을 줄 수 있어요. 개별 저장소의 전체 코드 오너는 해당 저장소의 CODEOWNERS 파일을 참조하세요.
-
@cilium/cilium-cli-maintainers
-
@cilium/cilium-maintainers
-
@cilium/cilium-packer-ci-build-maintainers
-
@cilium/ebpf-lib-maintainers
-
@cilium/hubble-maintainers
-
@cilium/image-tools-maintainers
-
@cilium/metallb-maintainers
-
@cilium/openshift-terraform-maintainers
-
@cilium/proxy-maintainers
-
@cilium/tetragon-maintainers
클라우드 통합 (Cloud Integrations)
다음 코드오너 그룹은 특정 클라우드 제공자와의 통합에 대한 통찰을 제공해요.
-
@cilium/alibabacloud
-
@cilium/aws
-
@cilium/azure
-
@cilium/gke
Cilium 내부 (Cilium Internals)
다음 코드오너 그룹은 Cilium Agent 내부에 대한 더 구체적인 지식이나, 특정 Cilium 기능이 외부 소프트웨어·프로토콜과 상호작용하는 방식을 다뤄요.
-
@cilium/endpoint: Cilium Endpoint 패키지가 전체 클러스터 아키텍처, 엔드포인트의 수명주기, 정책/데이터패스 구성 생성과의 관계, 직렬화 및 디스크 복원에 어떻게 들어맞는지에 대한 배경을 제공해요.
-
@cilium/envoy: Envoy와의 L7 프록시 통합을 유지 관리해요. xDS 프로토콜을 통한 Envoy 구성도 포함돼요.
-
@cilium/egress-gateway: egress gateway 제어 평면과 데이터패스 로직을 유지 관리해요.
-
@cilium/fqdn: L7 DNS 프록시 통합을 유지 관리해요.
-
@cilium/ipcache: 사용자 공간 IPCache 구조가 전체 에이전트 아키텍처에 어떻게 들어맞는지, 네트워크 정책·암호화와 관련한 순서 제약, 그리고 원격 피어와 관련해 Kubernetes 상태와 데이터패스 상태 사이의 관계를 처리하는 배경을 제공해요.
-
@cilium/ipsec: 커널 IPsec 구성과 관련 eBPF 로직을 유지 관리해 트래픽이 올바르게 암호화되도록 보장해요.
-
@cilium/kvstore: 키-값 저장소(특히 etcd)와의 Cilium 상호작용을 리뷰해요. 노드와 클러스터 간 상태를 공유하기 위해 Cilium이 사용하는 클라이언트 라이브러리를 이해해요.
-
@cilium/loader: eBPF 프로그램을 커널에 로드할 수 있게 하는 도구(LLVM, bpftool, 에이전트에서 프로그램 로딩을 위한 cilium/ebpf 사용, ELF 템플릿 등)를 유지 관리해요.
-
@cilium/operator: Cilium Operator 컴포넌트를 통해 클러스터당 한 번 발생하는 작업을 리뷰해요. 대응하는 가비지 컬렉션과 리더 선출 로직을 관리해요.
-
@cilium/proxy: L7 트래픽을 실제 프록시 구현(FQDN, Envoy, …)으로 리다이렉트하는 데 사용되는 저수준 구현을 리뷰해요.
-
@cilium/sig-agent: Cilium(agent) 일반 Go 리뷰를 제공해요. 내부 아키텍처, 핵심 데이터 구조, 데몬 시작 등을 다뤄요.
-
@cilium/sig-bgp: BGP 통합 변경을 리뷰해요.
-
@cilium/sig-clustermesh: 각 클러스터가 별도의 장애 도메인을 유지하도록 클러스터 간 상태 공유의 신뢰성을 보장해요.
-
@cilium/sig-datapath: 모든 eBPF 코드 변경, 네트워킹 및 소켓 레이어 구성을 위한 커널 API 사용에 대한 피드백을 제공해요. xfrm(IPsec), iptables/nftables, tc 같은 커널 서브시스템의 조정을 담당해요. 대부분의 eBPF 맵을 채우는 제어 평면 레이어를 유지 관리하고, 엔디언(endianness)과 시스템 아키텍처가 데이터패스 코드에 미치는 영향을 고려해요.
-
@cilium/sig-encryption: 암호화(IPSec 및 WireGuard)와 관련된 제어·데이터 평면 로직을 리뷰해요.
-
@cilium/sig-hubble: 시스템 이벤트 관찰과, 그 이벤트를 gRPC 프로토콜을 통해 노드 밖과 클러스터 밖으로 내보내는 것과 관련된 모든 Cilium 및 Hubble 코드를 리뷰해요. 예를 들어 TLS를 통해 이벤트 채널의 보안을 보장해요.
-
@cilium/sig-ipam: 모든 IP 주소 관리(IPAM) 모드 간의 구현을 조정하고, IP 리소스 고갈과 가비지 컬렉션 우려에 대한 인식/통찰을 제공해요.
-
@cilium/sig-k8s: 표준 리소스와 CRD 모두에 대해 Kubernetes와의 모든 상호작용에 대한 의견을 제공해요. 메모리 사용을 최소화하기 위해 클러스터 전역 상태 조정에 대한 모범 사례가 따르도록 보장해요.
-
@cilium/sig-lb: 에이전트 제어 평면 내에서 모든 로드밸런싱 구성(Services, ClusterIP, NodePorts, Maglev, 로컬 리다이렉트 정책, NAT46/NAT64 포함)을 조정하는 데 필요한 레이어를 유지 관리해요.
-
@cilium/sig-policy: 모든 네트워크 정책 표현에 대한 의미론(semantics)의 일관성을 보장해요. Kubernetes에서 eBPF policymap 항목까지, Policy Repository, SelectorCache, PolicyCache, CachedSelectorPolicy, EndpointPolicy 등 모든 중간 레이어를 포함한 모든 정책 로직을 담당해요.
-
@cilium/sig-scalability: 확장성과 성능 테스트를 유지 관리해요. 확장성·성능 관련 변경에 대한 의견을 제공해요.
-
@cilium/sig-servicemesh: Gateway API 같은 Service Mesh 구성이 eBPF나 Envoy 구성으로 지원되는 저수준 구성으로 어떻게 변환되는지에 대한 의견을 제공해요. Service Mesh 기능에 필요한 CRD를 유지 관리해요.
-
@cilium/wireguard: 커널 WireGuard 구성과, WireGuard 모드가 활성화될 때 트래픽이 올바르게 암호화되도록 하는 것과 관련된 데이터패스 영향을 유지 관리해요.
-
@cilium/ztunnel: Cilium의 ztunnel mTLS-proxy 통합을 유지 관리해, ztunnel 에이전트가 mTLS 터널을 통해 pod-to-pod 트래픽을 성공적으로 프록시하는 데 필요한 정보를 받도록 보장해요.