본문 바로가기

Tech/[Container] Kubernetes

쿠버네티스 기본 오브젝트 - ConfigMap, Secret

ConfigMap, Secret

ConfigMap, Secret Overview

  • 환경별로 다른 값들을 다룰 때 사용하는 오브젝트이다.
  • ConfigMap: 환경별로 각자 다른 상수 정보를 저장해야 할 때 사용
  • Secret: ConfigMap와 유사하지만, 보안적인 관리가 추가적으로 필요한 경우에 사용

 

Env (Literal)

  • ConfigMap과 Secret은 모두 Key, Value 형태로 값을 저장한다.
    다만 Secret의 Value에 저장할 때에는 반드시 Base64 인코딩 데이터를 넣어야 한다.
    → Pod로 Secret의 Value가 주입될 때에는 내부적으로 Base64 디코딩을 수행한다.
  • Secret은 ConfigMap과 달리 k8s DB가 아닌 노드의 메모리에 저장이 되어있어 보안에 강하다.
    이로 인해 Secret을 많이 만들 경우, 노드 성능 저하에 영향을 끼치기도 한다.
    → 1MB 까지만 저장 가능

 

Env (File)

  • 파일 자체를 ConfigMap이나 Secret으로 사용할 수 있다.
    파일명(Key), 파일내용(Value) 으로 인식한다.
  • k8s 마스터 노드의 kubectl 명령어를 통해 적용할 수 있다.
    Secret의 경우, 자동으로 파일 내용이 base64로 인코딩 된다.
    → 파일 내용이 base64 인코딩된 상태라면 이중으로 인코딩 되는 점을 유의해야 한다.

 

Volume Mount (File)

  • ConfigMap이나 Secret 내용의 파일이 담긴 Volume을 Pod에 Mount 하는 방식이다.
  • Env (File) 방식과 달리, Mount 된 상황이므로 파일을 수정하면 Pod에서 참조하고 있는 값도 함께 변한다.
    → Env (File) 방식은 Pod이 생성되는 시점에만 값을 주입하고, 이후부터는 수정이 불가해 Pod을 재생성해야 한다.

 

Reference : https://inf.run/yW34