[Kubernetes] Kubernetes ConfigMap 및 스토리지 구성 이해하기

1. ConfigMap

ConfigMap은 Kubernetes에서 애플리케이션의 설정 데이터를 외부화하여 관리할 수 있게 해주는 리소스입니다. 애플리케이션 코드와 구성을 분리함으로써, 배포 환경에 따라 설정을 유연하게 조정할 수 있습니다.

주요 특징

  • 환경 변수로 주입: 컨테이너 내부에서 환경 변수로 사용할 수 있습니다.
  • 볼륨 마운트: 설정 파일처럼 파일 시스템에 마운트하여 애플리케이션이 참조하도록 구성할 수 있습니다.
  • 재사용 가능: 여러 Pod에서 동일한 ConfigMap을 참조할 수 있습니다.

이미지 설명

첫 번째 이미지는 ConfigMap을 생성하고 Pod에서 이를 환경 변수로 사용하는 예시를 보여줍니다.
왼쪽은 ConfigMap 정의이며, special.how과 special.type이라는 키를 포함하고 있습니다.
오른쪽은 해당 ConfigMap을 사용하는 Pod 정의입니다. 두 개의 환경 변수 SPECIAL_LEVEL_KEY, SPECIAL_TYPE_KEY가 각각 ConfigMap의 키를 참조합니다.

 

 

2. Secret

Secret은 비밀번호, 토큰, 인증 키와 같은 민감한 정보를 안전하게 저장하고 사용할 수 있도록 해줍니다.

주요 특징

  • Base64 인코딩으로 저장되어 기본적인 보안을 제공
  • 환경 변수 또는 볼륨 형태로 파드에 주입 가능해 코드단의 민감 정보 노출을 피할 수 있음
  • 유지보수 편의성: 설정 변경이나 회전을 쉽게 처리 가능 (YAML 파일로 관리)
  • 마스터 노드의 etcd와 같은 안전한 데이터베이스에 저장
  • 클러스터 전체에 공유 가

Secret은 보안이 중요한 운영 환경에서 필수적인 구성 요소로, 민감한 정보가 코드에 노출되지 않도록 도와줍니다.

 

 

3. Volumes와 Persistent Volume

Kubernetes에서는 컨테이너의 파일 시스템이 일시적이라는 문제를 해결하기 위해 다양한 형태의 Volume을 제공합니다.

 

3-1. 일반 Volume과 공유 Volume

아래 이미지는 Kubernetes Volume의 동작 방식 차이를 보여줍니다.

  • 왼쪽은 단일 컨테이너 내부에서만 사용되는 tmpfs 형태의 일시적 파일 시스템입니다.
  • 오른쪽은 두 개의 컨테이너가 /var/logs 디렉토리를 공유하는 예시로, Pod 내 공유 Volume을 사용하는 구조입니다.

이러한 Volume을 통해 컨테이너 간 데이터 공유가 가능해집니다.

 

3-2. Persistent Volume (PV)과 Persistent Volume Claim (PVC)

Persistent Volume은 파드의 생명주기와 무관하게 데이터를 유지할 수 있는 저장소입니다.
아래 이미지는 PV/PVC가 실제 클러스터에서 어떻게 작동하는지를 설명하고 있습니다.

출처: https://m.blog.naver.com/freepsw/222005161870

  • PVC (Persistent Volume Claim)는 사용자 또는 애플리케이션이 요청하는 스토리지
  • PV (Persistent Volume)실제 물리적 또는 클라우드 기반 스토리지 리소스
  • 파드는 PVC를 통해 PV에 접근하며, PV는 로컬 디스크, NFS 서버, GCP 디스크 등 다양한 백엔드를 사용 가능
  • 중앙 텍스트에 나와 있듯이 "언제든지 PV를 쉽게 변경 가능"하다는 장점이 있음

사용 흐름

  1. 관리자가 PV를 정의
  2. 개발자가 PVC를 요청
  3. Kubernetes가 적절한 PV를 PVC에 바인딩
  4. 파드가 이 스토리지를 마운트하여 사용