날씨 정보를 불러오는 중...

ConfigMap · Secret 생성기

설정값을 입력하면 ConfigMap 또는 Secret YAML을 만듭니다. 입력한 값은 브라우저 밖으로 나가지 않습니다.

주의 — Secret의 base64는 암호화가 아니라 단순 인코딩입니다. 누구나 되돌릴 수 있으니 생성된 Secret YAML을 Git 저장소에 그대로 커밋하지 마세요.
configmap.yaml
kubectl로 바로 만들기 (파일 없이)
ConfigMap과 Secret의 차이

기능은 거의 같습니다. 둘 다 키-값을 저장하고 파드에 환경변수나 파일로 주입합니다. 차이는 용도 구분과 접근 제어입니다.

  • ConfigMap — 비밀이 아닌 설정. 로그 레벨, 외부 API 주소, 기능 플래그 등.
  • Secret — 비밀번호, API 키, 인증서. RBAC으로 접근을 따로 제한할 수 있고, etcd 암호화를 켜두면 저장 시 암호화됩니다.
base64는 보안이 아닙니다

Secret의 data 값이 알아보기 힘든 문자열이라 안전해 보이지만, echo '값' | base64 -d 한 줄이면 누구나 원문을 볼 수 있습니다. base64는 바이너리를 YAML에 안전하게 담기 위한 인코딩일 뿐 암호화가 아닙니다.

그래서 Secret YAML은 Git에 커밋하면 안 됩니다. 실제 값이 필요한 저장소에서는 SealedSecrets, External Secrets Operator, SOPS 같은 도구를 쓰거나, 아예 키 이름만 적힌 템플릿 파일을 두고 실제 값은 수동으로 넣는 방식을 씁니다.

data와 stringData

Secret을 직접 작성할 때는 stringData를 쓰면 훨씬 편합니다. 평문으로 적으면 쿠버네티스가 저장 시 알아서 base64로 바꿔 줍니다. 조회할 때는 data로 보입니다.

파드에 주입하는 방법
# 전체를 환경변수로
envFrom:
  - configMapRef:
      name: myapp-config
  - secretRef:
      name: myapp-secret

# 특정 키 하나만
env:
  - name: DB_PASSWORD
    valueFrom:
      secretKeyRef:
        name: myapp-secret
        key: DB_PASSWORD
값을 바꿔도 파드에 반영되지 않습니다

envFrom으로 주입한 값은 파드가 시작할 때 한 번만 읽습니다. ConfigMap을 수정해도 실행 중인 파드의 환경변수는 그대로입니다. 반영하려면 파드를 다시 시작해야 합니다.

kubectl rollout restart deployment/이름 -n 네임스페이스

볼륨으로 마운트한 경우에는 잠시 후 파일 내용이 자동으로 갱신되지만, 애플리케이션이 그 파일을 다시 읽어야 실제로 적용됩니다.

← 도구 전체 보기