#4 Kubernetes ConfigMap, Secret


ConfigMap

ConfigMap은 설정, 환경 변수들을 담는 객체이다.

Pod을 생성할 때 이를 넣어줄 수 있다.

예를 들어 개발/운영에 따라 환경 변수 값이 다른 경우, ConfigMap을 활용할 수 있다.

ConfigMap을 활용하는 3가지 방식

  • 문자(Literal)

    • Key : Value 형태로 .yaml - data 파일 내에 정의하고 Object 안에서 ConfigMap 오브젝트를 참조한다.
  • Env (File)

    • 파일을 통째로 ConfigMap에 담는다. 이때 Key의 이름은 파일의 이름, Value는 파일 안의 내용이다.
    • $ kubectl create configmap 컨피그맵이름 --from-file=파일의 경로&파일이름
  • Volume Mount(File)

    • 설정값(ConfigMap)으로 사용할 파일 자체를 마운팅 해(path 지정이 필요함), 사용하고자 하는 Object들이 해당 경로/파일을 참조한다.

Env (File), Volume Mount(File) 두개의 큰 차이점은 Volume Mount(File)는 마운트로 원본(ConfigMap)과 연결되기 때문에 변경 사항이 발생했을 때, 해당 ConfigMap을 참조하고 있는 Object들의 설정 값들도 변경이 되지만, Env (File)는 참조하고 있는 Object를 재실행 하기 전까지 변경이 되지 않는다.

Secret

ConfigMap은 일반적인 환경설정 변수를 담는다면, Secret보안이 중요한 설정 변수들을 담는 오브젝트이다.

  • 하나의 Secret 의 메모리 사이즈는 최대 1M 다.
  • 메모리에 저장되기 때문에 꼭 필요한 정보만 담도록 해야한다.

    • 필요 없는 부분까지 넣는다면 자원에 영향이 생길 수 있다.
  • 키/값 형태이지만 값은 base64 로 인코딩해야한다. 이후 쿠버네티스가 컨테이너 내에서 자동으로 decoding을 해준다.

    • base64 인코딩을 쓰는 이유는, 문자열 뿐만 아니라 일반적인 바이너리 파일을 담을 수 있도록 하기 위함

Secret을 활용하는 3가지 방식

  • 문자(Literal)
  • Env (File)

    • $ kubectl create secret generic 시크릿이름 --from-file=파일의 경로&파일이름
  • Volume Mount(File)

동작 방식의 형태는 위의 ConfigMap과 동일하다.

ConfigMap, Secret Images

literal file volume file

위로 올라가기💨

Hello, I'm@nickhealthy
개발자를 꿈꾸고, 파이썬과 클라우드에 관심이 많은 비전공자

Github