운영중에 수정 가능한 nginx.conf 를 k8s 에 구축하기 위한 노력

/etc/nginx/nginx.conf

nginx 는 기본적으로, 설정 파일에 대한 재기동을 운영중에 지원한다. 이는 nginx 의 이벤트 처리 방식 때문이다.

k8s 에서 nginx.conf 를 운영 하는 방식으로, 2대 이상의 workernode 에 서로 같은 nginx.conf 를 처리 해야 하고 이미지 내의 nginx.conf 를 수정하는 것은 이상한 운영방식일 것이므로 configmap 의 사용이 추천될 수 있다.

문제는 팟 기동시 /etc/nginx 디렉토리 내에 어떻게 /etc/nginx/nginx.conf 를 위치 시킬 것인가이다.

configmap mount 는 기본적인 directory mount 와 subpath 를 이용한 파일의 명확한 위치 마운트를 제공한다. 그러나. k8s configmap 은 기본적으로 자동 reload 되나 특정 경로에 주입하기 위해 subpath 를 쓰면 spec 상으로 reload 되지 않는다.

Dockerfile

RUN ln -s /etc/nginx/configmap/nginx.conf /etc/nginx/nginx.conf

그래서 container image 안에 symbolic link 를 미리 만들어 두는 기법을 사용했는데 작동하기에 괜찮다.

그런데 괜한 노력이었다는 느낌이 든다.

어차피 configmap 조차도 소스 레벨로 관리 되어야 하고, immutable image 와 gitops 의 철학을 기준으로 생각해보면 실시간 수정이 “가능한” 설정이 좋은 운영 방법은 아니라 할 수 있다.

결국 subpath 를 쓰는 것이 단점은 아니라는 얘기가 될 수 있으며, 실시간 수정이 (reloading) 가능한 변칙적인 설정/구성을 애써서 할 필요는 없다는 결론에 이르게 되었다.

댓글 남기기

이메일 주소는 공개되지 않습니다.