피드로 돌아가기
Dev.toDevOps
원문 읽기
Helm CLI 의존성 제거를 통한 .NET 기반 In-process Helm 렌더링 구현
HelmSharp: render Helm charts from .NET without shelling out to helm
AI 요약
Context
.NET 서비스의 Kubernetes 배포 과정에서 Helm binary를 Docker 이미지에 포함함에 따른 관리 포인트 증가 및 CVE 취약점 노출 위험 발생. 기존 YAML 및 Kubernetes 클라이언트 라이브러리만으로는 Helm 특유의 Values merging, Named templates, Sprig function set을 통합 처리하는 파이프라인 구축에 한계 존재.
Technical Solution
- Helm binary 호출 방식의 Shelling out 구조를 제거하고 .NET 내부에서 직접 처리하는 In-process 렌더링 아키텍처 설계
- Chart 로딩, Values 병합, 템플릿 렌더링, K8s 오퍼레이션을 분리한 Multi-package SDK 구조 채택
- 100개 이상의 Sprig/Helm 함수를 구현하여 Helm template의 제어 흐름 및 데이터 처리 로직을 .NET으로 이식
- Parenthesized expression 내 파이프라인 구분자 인식 오류 및 C# String Interpolation에 의한 중괄호 생성 버그 해결을 통한 파서 정밀도 향상
- Helm CLI를 Oracle로 활용하여 출력 결과물을 문서 단위로 비교 검증하는 Golden-test 하네스 구축
Impact
- ingress-nginx, cert-manager 등 5개 주요 공개 차트의 총 129개 템플릿에 대해 100% 렌더링 성공률 달성
- 3개 타겟 프레임워크에 걸친 214개의 테스트 케이스 확보를 통한 안정성 검증
실천 포인트
- 외부 binary 의존성 제거를 통한 컨테이너 이미지 경량화 및 보안 표면(Attack Surface) 축소 검토 - 복잡한 템플릿 엔진 이식 시, 기존 도구를 Oracle로 설정하여 결과값을 비교하는 Golden-test 패턴 적용 - 대규모 템플릿 파서 구현 시 엣지 케이스(괄호 내 특수문자 처리 등)에 대한 정교한 토큰 분석 설계 필요