ConfigMap · 시크릿 (Config & Secret)
같은 코드가 개발과 운영에서 다르게 돌아야 합니다. 값을 이미지에 구워 넣으면 코드는 똑같은데 환경 수만큼 이미지가 갈라지고, 값 하나를 고칠 때마다 다시 굽게 됩니다. 설정을 ConfigMap 과 시크릿으로 빼 두면 이미지는 하나로 남고, 파드가 뜰 때 환경변수나 파일로 값이 얹힙니다.
01ConfigMap · 시크릿 (Config & Secret)
개념 한눈에 보기같은 코드가 환경마다 다르게 돌아야 합니다. 값을 이미지에 구워 넣으면 코드는 그대로인데 환경 수만큼 이미지가 갈라집니다.
값 하나를 고쳐도 다시 굽고 다시 올려야 합니다. 게다가 비밀번호가 이미지 안에 남아, 이미지를 받은 사람은 누구나 꺼내 볼 수 있습니다.
설정을 밖으로 빼면 이미지는 하나로 돌아옵니다. 값은 ConfigMap 에 키와 값으로 따로 둡니다.
붙이는 길은 둘입니다. 하나는 환경변수 — 컨테이너가 뜰 때 값이 프로세스 환경에 박힙니다.
다른 하나는 볼륨 마운트입니다. 값이 파일로 나타나므로 설정 파일을 통째로 넣을 수 있습니다.
둘은 갱신에서 갈립니다. ConfigMap 을 고치면 마운트한 파일은 잠시 뒤 따라 바뀌지만, 환경변수는 그대로라 파드를 다시 띄워야 반영됩니다.
환경을 바꾸는 것은 이미지가 아니라 붙이는 설정입니다. 같은 v1 에 prod 값을 건 순간 그 파드는 prod 로 돕니다.
비밀번호는 ConfigMap 이 아니라 Secret 에 둡니다. 담는 곳을 나눠야 볼 수 있는 사람도 따로 정할 수 있습니다.
다만 Secret 은 base64 로 담길 뿐 암호화가 아닙니다. 저장소 암호화와 권한(RBAC)으로 따로 막지 않으면 값이 그대로 읽힙니다.
02 쉽게 이해하기
For Everyone환경마다 달라지는 값을 이미지에서 떼어 ConfigMap 과 Secret 에 둡니다. 환경변수로 넣으면 파드를 다시 띄워야 반영되고, 볼륨으로 마운트하면 파일이 잠시 뒤 따라 바뀝니다.
ConfigMap 은 키-값 묶음이고, 파드에는 환경변수로 넣거나 볼륨으로 마운트해 파일로 보여 줍니다.
두 방식은 갱신에서 갈립니다 — 마운트한 파일은 ConfigMap 을 고치면 잠시 뒤 따라 바뀌지만(앱이 다시 읽어야 합니다), 환경변수는 컨테이너가 뜰 때 박히므로 다시 띄우기 전에는 바뀌지 않습니다.
시크릿은 쓰임이 같지만 담기는 값이 base64 로 인코딩될 뿐 그 자체로 암호화가 아니라, 저장소 암호화와 RBAC 로 접근을 따로 막아야 합니다.
이 둘 말고도 컨테이너의 명령줄 인자로 넣거나 앱이 API 로 직접 읽는 방법이 있습니다.
- –환경별 설정을 이미지 밖으로 빼기
- –환경변수와 마운트 중 고르기
- –설정 변경 시 재시작이 필요한지 판단
- –비밀값을 시크릿으로 분리하고 접근 권한 설계
03 자주 묻는 질문
FAQConfigMap · 시크릿 (Config & Secret)란 무엇인가요?+
같은 코드가 개발과 운영에서 다르게 돌아야 합니다. 값을 이미지에 구워 넣으면 코드는 똑같은데 환경 수만큼 이미지가 갈라지고, 값 하나를 고칠 때마다 다시 굽게 됩니다. 설정을 ConfigMap 과 시크릿으로 빼 두면 이미지는 하나로 남고, 파드가 뜰 때 환경변수나 파일로 값이 얹힙니다.
ConfigMap · 시크릿 (Config & Secret)은(는) 어디에 사용하나요?+
환경별 설정을 이미지 밖으로 빼기, 환경변수와 마운트 중 고르기, 설정 변경 시 재시작이 필요한지 판단, 비밀값을 시크릿으로 분리하고 접근 권한 설계
ConfigMap · 시크릿 (Config & Secret)를 쉽게 비유하면?+
환경마다 달라지는 값을 이미지에서 떼어 ConfigMap 과 Secret 에 둡니다. 환경변수로 넣으면 파드를 다시 띄워야 반영되고, 볼륨으로 마운트하면 파일이 잠시 뒤 따라 바뀝니다.
