본문 바로가기

Kubernetes

[Kubernetes] ConfigMap 사용 이유

 

 컨테이너에 사용되는 이미지는 dev부터 prd까지 동일한 형상을 가져야하며 이를 위해 컨테이너에서 필요한 환경 설정 내용을 컨테이너와 분리하여 사용해야 한다.

위 설명은 configmap을 사용하는 이유에 대해 검색하면 나오는 가장 흔한 답변인데, 내용 자체는 틀리지 않았지만 configmap을 사용하는 이유에 대한 답변은 될 수 없다.

configmap을 사용하는 가장 핵심 이유는 의존성 제거이다.

 

configmap을 사용하지 않을 경우 도커파일안에 설정파일을 COPY하는 과정이 필요하다.

COPY를 하더라도 서비스가 동작하는데 아무런 문제가 없고, 무엇보다 dev에서부터 prd까지 하나의 컨테이너 형상으로 동작하는 것이 가능하다.(deployment에서 cmd 동작 값을 변경시켜주면서 실행)

그런데 만약 config 값에 설정된 db 도메인 정보가 변경된다면?

db 도메인 정보가 변경되었을 뿐인데, 빌드 과정 전체를 다시 해야되는 상황이 발생한다. (db에 의존성 발생)

configmap을 사용할 경우 빌드 과정을 따로 거칠 필요 없이 configmap만 변경해주고 pod를 리스타트하면 된다.(의존성 제거)

 

Q. 만약 Kubernetes Cluster를 구성하고 있는 Host 특정 위치에 config 파일을 넣어두고 볼륨을 붙여서 사용한다면?

빌드 과정에 대한 의존성 및 컨테이너 형상이 동일한 점은 충족하지만 Kubernetes Cluster 자체에 의존성이 생긴다.

다른 Kubernetes Cluster에 배포해야될 경우 미리 해당 Cluster 특정 위치에 Config 파일을 위치시켜야 함.

따라서, Configmap을 사용하는 것이 의존성 제거 측면에서 유용하다.

 

Configmap, Secret, ExternalName 모두 의존성 제거 측면에서 유용.