피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Kubernetes subPath 마운트 시 ConfigMap Hot-Reload 실패 및 설정 드리프트 해결
subPath ConfigMap Mounts Don't Hot-Reload: Silent Drift in Kubernetes
AI 요약
Context
Kubernetes에서 단일 파일 주입을 위해 subPath 설정을 사용한 ConfigMap 마운트 구조를 채택함. 하지만 subPath 사용 시 Kubelet의 업데이트 메커니즘이 적용되지 않아 Pod 재시작 전까지 설정 변경 사항이 반영되지 않는 Silent Drift 현상이 발생함.
Technical Solution
- subPath 제거를 통한 Directory Mount 방식으로 전환하여 Kubelet의 주기적 동기화 경로 확보
- Kubelet이 API Server의 변경 사항을 감지하여 versioned directory에 새 내용을 쓰고 symlink를 원자적으로 교체하는 메커니즘 활용
- fsnotify 기반의 Hot-reload 서비스가 symlink가 가리키는 실제 디렉토리 내 파일 변경을 감지하도록 설계 변경
- Bind Mount가 생성 시점의 특정 inode에 고정되어 업데이트 경로에서 제외되는 구조적 결함 제거
- 설정 파일 전용 개별 디렉토리를 구성하여 기존 디렉토리 내 타 파일이 덮어씌워지는 side-effect 방지
실천 포인트
- Deployment Spec 내 volumeMounts에 subPath 설정 여부 확인 - 서비스 로그에서 fsnotify 또는 "watching config file" 메시지 출력 여부 검토 - ConfigMap 변경 후 Pod 재시작 없이 반영되는지 운영 환경 검증 - 플랫폼 표준으로 subPath 사용 시 Hot-reload 필요 서비스 전수 조사 및 마이그레이션 수행