
데브옵스
여기어때 CI/CD 개선기 Part 4: 공통 Helm Chart 설계와 추상화
두줄요약
서비스마다 제각각이던 Helm Chart를 공통 템플릿과 values.yaml로 분리해 표준화했습니다. 또한 공통 Values와 테스트를 더해 유연성과 안정성을 함께 확보했습니다.
문제 상황
- 서비스마다 Helm Chart와 배포 Spec이 제각각이라 표준화와 유지보수가 어려운 상태
- 공통 설정 변경 시 수십 개 저장소를 일일이 수정해야 해서 누락과 반복 작업 부담이 큰 구조
- 복사-붙여넣기 관행으로 설정의 필요성과 변경 이유를 추적하기 어려운 문제
구조와 흐름
- 공통 템플릿에서 deployment, service 등 공통 K8s 리소스의 뼈대와 DevOps 관리 영역을 담당
- 서비스별 values.yaml에서 애플리케이션 이름, 이미지, 포트, 리소스, 프로브 등 개발자 관심사를 관리
- 공통 Values와 Escape Hatch로 기본값을 제공하되 예외 케이스에 유연하게 대응하는 구조
선택 이유
- 개발자는 인프라 전체가 아니라 애플리케이션에 영향 주는 핵심 설정만 직접 제어하도록 단순화
- 공통 설정을 한곳에 모아 운영 포인트를 줄이고, 변경 시 일관성을 확보
- 표준화와 예외 대응을 동시에 만족시키기 위한 추상화 방식 채택
성능/운영 포인트
- 공통 Chart 변경 시 helm lint와 helm template으로 문법과 렌더링 결과 검증
- helm-unittest로 템플릿 로직을 테스트해 단일 실패 지점 위험을 완화
- 공통 템플릿과 공통 Values로 운영 안정성과 유지보수성을 함께 강화
