피드로 돌아가기
subPath ConfigMap Mounts Don't Hot-Reload: Silent Drift in Kubernetes
Dev.toDev.to
Infrastructure

Kubernetes subPath 마운트 시 ConfigMap Hot-Reload 실패 및 설정 드리프트 해결

subPath ConfigMap Mounts Don't Hot-Reload: Silent Drift in Kubernetes

Josh Waldrep2026년 5월 9일7intermediate

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 필요 서비스 전수 조사 및 마이그레이션 수행

원문 읽기