Oh My Algorithm
Concept Guide이미지 하나 · 설정 주입

ConfigMap · 시크릿 (Config & Secret)

같은 코드가 개발과 운영에서 다르게 돌아야 합니다. 값을 이미지에 구워 넣으면 코드는 똑같은데 환경 수만큼 이미지가 갈라지고, 값 하나를 고칠 때마다 다시 굽게 됩니다. 설정을 ConfigMap 과 시크릿으로 빼 두면 이미지는 하나로 남고, 파드가 뜰 때 환경변수나 파일로 값이 얹힙니다.

01ConfigMap · 시크릿 (Config & Secret)

같은 코드가 환경마다 다르게 돌아야 합니다. 값을 이미지에 구워 넣으면 코드는 그대로인데 환경 수만큼 이미지가 갈라집니다.

값 하나를 고쳐도 다시 굽고 다시 올려야 합니다. 게다가 비밀번호가 이미지 안에 남아, 이미지를 받은 사람은 누구나 꺼내 볼 수 있습니다.

설정을 밖으로 빼면 이미지는 하나로 돌아옵니다. 값은 ConfigMap 에 키와 값으로 따로 둡니다.

붙이는 길은 둘입니다. 하나는 환경변수 — 컨테이너가 뜰 때 값이 프로세스 환경에 박힙니다.

다른 하나는 볼륨 마운트입니다. 값이 파일로 나타나므로 설정 파일을 통째로 넣을 수 있습니다.

둘은 갱신에서 갈립니다. ConfigMap 을 고치면 마운트한 파일은 잠시 뒤 따라 바뀌지만, 환경변수는 그대로라 파드를 다시 띄워야 반영됩니다.

환경을 바꾸는 것은 이미지가 아니라 붙이는 설정입니다. 같은 v1 에 prod 값을 건 순간 그 파드는 prod 로 돕니다.

비밀번호는 ConfigMap 이 아니라 Secret 에 둡니다. 담는 곳을 나눠야 볼 수 있는 사람도 따로 정할 수 있습니다.

다만 Secret 은 base64 로 담길 뿐 암호화가 아닙니다. 저장소 암호화와 권한(RBAC)으로 따로 막지 않으면 값이 그대로 읽힙니다.

이미지 · v1-dev이미지 · v1-prod앱 코드앱 코드
1 / 9

정리

이미지는 무엇을 하는지를, 설정은 어디서 도는지를 말합니다. 둘을 갈라 두면 이미지 하나로 개발과 운영을 함께 돌 수 있습니다.

02 쉽게 이해하기

For Everyone
🔑핵심 동작

환경마다 달라지는 값을 이미지에서 떼어 ConfigMap 과 Secret 에 둡니다. 환경변수로 넣으면 파드를 다시 띄워야 반영되고, 볼륨으로 마운트하면 파일이 잠시 뒤 따라 바뀝니다.

💡쉽게 말하면

ConfigMap 은 키-값 묶음이고, 파드에는 환경변수로 넣거나 볼륨으로 마운트해 파일로 보여 줍니다.

두 방식은 갱신에서 갈립니다 — 마운트한 파일은 ConfigMap 을 고치면 잠시 뒤 따라 바뀌지만(앱이 다시 읽어야 합니다), 환경변수는 컨테이너가 뜰 때 박히므로 다시 띄우기 전에는 바뀌지 않습니다.

시크릿은 쓰임이 같지만 담기는 값이 base64 로 인코딩될 뿐 그 자체로 암호화가 아니라, 저장소 암호화와 RBAC 로 접근을 따로 막아야 합니다.

이 둘 말고도 컨테이너의 명령줄 인자로 넣거나 앱이 API 로 직접 읽는 방법이 있습니다.

📍어디에 쓰나
  • 환경별 설정을 이미지 밖으로 빼기
  • 환경변수와 마운트 중 고르기
  • 설정 변경 시 재시작이 필요한지 판단
  • 비밀값을 시크릿으로 분리하고 접근 권한 설계

03 자주 묻는 질문

FAQ
ConfigMap · 시크릿 (Config & Secret)란 무엇인가요?+

같은 코드가 개발과 운영에서 다르게 돌아야 합니다. 값을 이미지에 구워 넣으면 코드는 똑같은데 환경 수만큼 이미지가 갈라지고, 값 하나를 고칠 때마다 다시 굽게 됩니다. 설정을 ConfigMap 과 시크릿으로 빼 두면 이미지는 하나로 남고, 파드가 뜰 때 환경변수나 파일로 값이 얹힙니다.

ConfigMap · 시크릿 (Config & Secret)은(는) 어디에 사용하나요?+

환경별 설정을 이미지 밖으로 빼기, 환경변수와 마운트 중 고르기, 설정 변경 시 재시작이 필요한지 판단, 비밀값을 시크릿으로 분리하고 접근 권한 설계

ConfigMap · 시크릿 (Config & Secret)를 쉽게 비유하면?+

환경마다 달라지는 값을 이미지에서 떼어 ConfigMap 과 Secret 에 둡니다. 환경변수로 넣으면 파드를 다시 띄워야 반영되고, 볼륨으로 마운트하면 파일이 잠시 뒤 따라 바뀝니다.