데브옵스
[사례연구] 사내 개인용 개발환경 이미지 실험기 2부: 만들면서 마주친 것들과 풀어간 방법
두줄요약
OpenStack 샌드박스 이미지에서 발생한 IP 변경과 시크릿 노출 문제를 자동 복구와 GitOps, Vault·ESO 조합으로 정리했습니다. 수동 배포를 줄이고 운영 재현성과 보안을 함께 높인 사례를 소개했습니다.
문제 상황
- OpenStack 샌드박스 이미지가 부팅 위치에 따라 IP가 바뀌어 인증서, kubeconfig, static pod manifest, kube-proxy 설정까지 연쇄 수정 필요
- helm install 기반 수동 배포는 values 정합성 유지와 반복 반영에 한계 존재
- 이미지와 Git 레포 어디에도 평문 자격증명을 두지 않기 위한 운영 방식 필요
해결 방법
- 부팅 시 현재 IP를 감지해 인증서 SAN 재발급, manifest와 kubeconfig 치환, kubelet 재시작, CNI·CoreDNS·kube-proxy까지 복구하는 systemd oneshot 구성
- values를 단일 VM 환경에 맞게 정리한 뒤 HelmRelease와 ArgoCD로 GitOps 전환, values는 ConfigMap으로 분리해 검증 편의 확보
- Vault와 ESO 조합으로 실제 시크릿은 런타임에 동기화하고, AVP 대신 ArgoCD v3 호환성과 Flux/ArgoCD 공통 진입점을 고려해 ESO 선택
주의할 점
- Vault 접근용 bootstrap 자격증명은 완전 제거가 어려워 읽기 전용, 단일 경로, TTL, Audit Log로 영향 범위 제한
- AVP는 공식 호환 범위가 제한적이라 운영 버전과의 정합성 확인 필요
- 이미지 내 자격증명 평문 여부뿐 아니라 etcd와 Secret 생성 시점까지 함께 고려 필요
적용해볼 점
- 이미지 배포형 개발환경에서 부팅 시 자동 복구 루틴과 시크릿 분리 전략을 함께 설계
- Helm values와 배포 매니페스트를 분리해 템플릿 검증과 운영 반영을 쉽게 유지
- GitOps 도구 선택 시 기능보다 운영 버전 호환성과 공통 진입점 우선 검토
