Devops 엔지니어 솔렐레 IT

[Kubernetes] 쿠버네티스 Config 환경 변수 관리 본문

Devops 엔지니어가 알려주는 클라우드 지식/Docker, Kubernetes

[Kubernetes] 쿠버네티스 Config 환경 변수 관리

솔렐레_ 2020. 9. 7. 14:54


컨테이너에 있는 서비스마다 Config 값을 가지고 있는데 이는 개발, 운영환경 각각 다른 값을 가지고 있습니다. 이렇게 다른 값을 관리하기 위해서 별도의 이미지로 관리하는 것은 비효율적이기 때문에 ConfigMap과 Sercret을 통해서 별도 관리가 가능합니다. 분리해야하는 상수들을 모아서 ConfigMap을 만들고 보안적인 관리가 필요한 값을 모아서 Sercret을 생성합니다. Pod 생성 시에 이 두 오브젝트를 연결하게되면 컨테이너에 있는 환경변수에 해당 데이터가 들어가게 됩니다.

1. Env(환경 변수)
config 값을 넣을 때 상수로 넣을 수도있고 파일로 넣을 수도 있습니다. 먼저 상수로 넣는 방법은 ConfigMap은 key와 value로 구성이 되어있고 필요한 상수들을 정의해놓으면 Pod를 생성할 때 컨테이너 안에 Env 환경변수에 셋팅을 할 수 있습니다. Sercret도 PW 같은 데이터를 넣고 기본적으로 Base64로 인코딩을 해서 관리합니다. Sercret은 메모리에 저장이 되고 1Mbyte까지만 넣을 수 있도록하여 보안을 강화했습니다. 파일을 ConfigMap에 넣으면 파일 이름은 key, 파일 내용은 value가 되어서 생성됩니다.

2. Mount
파일을 configMap에 담고 Pod를 만들 때 컨테이너 안에 mount Path를 정의하고 Path안에 파일을 마운트할 수 있습니다. 이 경로는 volume을 통해 mount를 할 수 있고 ConfigMap에 내용이 변경될 때 즉시 반영이 됩니다. 환경변수를 활용할 경우는 Pod가 재성성 될 때 변경된 내용이 즉시 반영된다는 차이가 있습니다.

Comments