본문으로 건너뛰기

4.6. ConfigMaps (구성 맵)

개요​

ConfigMaps 페이지는 MCM 컨트롤 플레인에서 관리하는 모든 ConfigMap을 통합적으로 관리하는 페이지입니다. ConfigMap은 컨테이너화된 애플리케이션에 필요한 설정 데이터를 키-값 쌍으로 저장하는 Kubernetes 리소스입니다.

주요 목적:

  • 멀티클러스터 ConfigMap 통합 관리
  • 애플리케이션 설정의 중앙 집중식 관리
  • 환경별 설정 분리 및 관리
  • PropagationPolicy를 통한 설정 배포

ConfigMap 사용 사례:

  • 애플리케이션 설정 파일 (application.properties, config.yaml)
  • 환경 변수 값 저장
  • 명령줄 인수 설정
  • 설정 파일 마운트 (nginx.conf, redis.conf 등)
  • 기능 플래그 및 런타임 설정

화면 구성​

ConfigMaps 페이지는 테이블 형태로 ConfigMap 목록을 표시합니다.

ConfigMaps 메인 화면

페이지 상단 요소​

요소설명
네임스페이스 필터특정 네임스페이스의 ConfigMap만 표시
시스템 네임스페이스 포함시스템 네임스페이스(kube-system 등)의 ConfigMap 표시 토글
새로고침 버튼ConfigMap 목록 갱신
생성 버튼새 ConfigMap 생성 다이얼로그 열기
검색창ConfigMap 이름으로 검색

테이블 컬럼​

컬럼설명정렬
이름ConfigMap 이름✅
네임스페이스ConfigMap이 속한 네임스페이스✅
키저장된 데이터 키 목록 (3개 초과 시 "+N개 더 보기" 표시)✅
경과시간ConfigMap 생성 후 경과 시간✅
작업편집/삭제 버튼-

키 표시​

키 컬럼은 ConfigMap에 저장된 데이터 키를 표시합니다:

  • 처음 2-3개 키를 배지 형태로 표시
  • 키가 많은 경우 "+N개 더 보기" 형태로 축약 표시
  • 예: config.properties, key1, +2개 더 보기

ConfigMap 상세 정보​

ConfigMap 행을 클릭하면 상세 정보 패널이 열립니다.

ConfigMap 상세 정보

상세 패널 헤더​

요소설명
ConfigMap 이름선택한 ConfigMap 이름
네임스페이스ConfigMap이 속한 네임스페이스
키 수저장된 데이터 키 개수 (예: 4 키)

액션 버튼​

버튼기능
새로고침ConfigMap 정보 갱신
편집YAML 편집 모드
삭제ConfigMap 삭제

탭 메뉴​

개요 탭​

ConfigMap의 기본 정보와 데이터 내용을 표시합니다.

기본 정보:

항목설명
이름ConfigMap 이름
네임스페이스ConfigMap이 속한 네임스페이스
키저장된 데이터 키 개수
경과시간생성 후 경과 시간
생성일ConfigMap 생성 일시

데이터:

각 데이터 키를 아코디언 형태로 표시합니다:

데이터 내용 확장
요소설명
키 이름데이터 키 이름 (예: config.properties)
데이터 크기값의 문자 수 (예: 34 자)
확장/축소클릭하여 데이터 내용 표시/숨김
복사 버튼데이터 내용을 클립보드에 복사

키를 클릭하면 해당 데이터의 내용이 확장되어 표시됩니다.

멀티클러스터 정책 탭​

ConfigMap에 적용된 멀티 클러스터 정책 정보를 표시합니다.

멀티클러스터 정책 탭

전파 정책 (PropagationPolicy):

컬럼설명
이름PropagationPolicy 이름
네임스페이스정책이 속한 네임스페이스
범위네임스페이스 범위 정책 / 클러스터 범위 정책
대상 클러스터타겟 클러스터 목록

오버라이드 정책 (OverridePolicy):

클러스터별 커스텀 설정이 있는 경우 표시됩니다.

레이블 탭​

ConfigMap에 적용된 Kubernetes 레이블 목록을 표시합니다.

어노테이션 탭​

ConfigMap에 적용된 어노테이션 목록을 표시합니다.

이벤트 탭​

ConfigMap 관련 Kubernetes 이벤트를 표시합니다.

ConfigMap 생성​

새로운 ConfigMap을 MCM 컨트롤 플레인에 생성합니다.

입력 항목​

항목필수설명
이름✅ConfigMap 이름
네임스페이스✅배포할 네임스페이스
데이터✅키-값 쌍 데이터

데이터 입력 방식​

폼 기반 입력:

  • 키-값 쌍을 개별적으로 입력
  • 키: 데이터 키 이름 (예: database.host)
  • 값: 데이터 값 (예: localhost)
  • 추가 버튼으로 여러 키-값 쌍 입력

YAML 편집:

  • "YAML 편집" 탭에서 ConfigMap 정의를 직접 작성
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
namespace: default
data:
database.host: localhost
database.port: "5432"
config.properties: |
property1=value1
property2=value2

ConfigMap 작업​

ConfigMap 편집​

  1. ConfigMap 선택
  2. 상세 패널에서 "편집" 버튼 클릭
  3. YAML 에디터에서 ConfigMap 정의 수정
  4. "저장" 버튼 클릭

참고: ConfigMap을 수정해도 이미 실행 중인 파드에는 즉시 반영되지 않습니다. 변경 사항을 적용하려면 파드를 재시작해야 합니다.

ConfigMap 삭제​

⚠️ 주의: ConfigMap을 삭제하면 이를 참조하는 파드에서 오류가 발생할 수 있습니다. 삭제 전 참조 여부를 확인하세요.

  1. 삭제할 ConfigMap 선택
  2. 상세 패널에서 "삭제" 버튼 클릭
  3. 확인 다이얼로그에서 ConfigMap 이름 입력
  4. "삭제" 버튼 클릭

사용 예시​

시나리오 1: 애플리케이션 설정 ConfigMap 생성​

  1. "생성" 버튼 클릭
  2. ConfigMap 정보 입력:
    • 이름: app-config
    • 네임스페이스: production
    • 데이터:
      • database.host: db.example.com
      • database.port: 5432
      • log.level: INFO
  3. "생성" 버튼 클릭
  4. PropagationPolicy로 타겟 클러스터 지정
  5. 애플리케이션 Deployment에서 ConfigMap 참조

시나리오 2: 설정 파일 ConfigMap 생성​

  1. "생성" 버튼 클릭 → YAML 편집 탭 선택
  2. 다음 YAML 작성:
    apiVersion: v1
    kind: ConfigMap
    metadata:
    name: nginx-config
    namespace: web
    data:
    nginx.conf: |
    server {
    listen 80;
    server_name localhost;
    location / {
    root /usr/share/nginx/html;
    }
    }
  3. "생성" 버튼 클릭
  4. Deployment에서 볼륨으로 마운트

시나리오 3: ConfigMap 데이터 확인​

  1. ConfigMap 목록에서 확인할 ConfigMap 클릭
  2. 개요 탭에서 데이터 섹션 확인
  3. 확인할 키를 클릭하여 확장
  4. 데이터 내용 확인
  5. 필요시 복사 버튼으로 클립보드에 복사

시나리오 4: 멀티클러스터 ConfigMap 배포​

  1. ConfigMap 생성
  2. PropagationPolicy 생성:
    • 리소스 셀렉터: ConfigMap 지정
    • 타겟 클러스터: 배포할 클러스터 선택
  3. 상세 패널에서 "멀티클러스터 정책" 탭 확인
  4. 대상 클러스터에 ConfigMap이 배포되었는지 확인

시나리오 5: 환경별 설정 관리​

  1. 개발 환경용 ConfigMap 생성:
    • 이름: app-config
    • 네임스페이스: dev
    • 데이터: 개발 환경 설정
  2. 운영 환경용 ConfigMap 생성:
    • 이름: app-config
    • 네임스페이스: prod
    • 데이터: 운영 환경 설정
  3. 각 네임스페이스별로 PropagationPolicy 적용
  4. 동일한 애플리케이션이 환경에 따라 다른 설정 사용

관련 개념​

ConfigMap vs Secret​

특성ConfigMapSecret
용도일반 설정 데이터민감한 데이터 (비밀번호, 토큰)
저장 방식평문 저장Base64 인코딩 저장
보안일반 보안접근 제한 및 암호화 옵션
크기 제한1MB1MB
사용 예설정 파일, 환경 변수비밀번호, API 키, 인증서

ConfigMap 사용 방법​

1. 환경 변수로 주입:

env:
- name: DATABASE_HOST
valueFrom:
configMapKeyRef:
name: app-config
key: database.host

2. 전체 ConfigMap을 환경 변수로:

envFrom:
- configMapRef:
name: app-config

3. 볼륨으로 마운트:

volumes:
- name: config-volume
configMap:
name: app-config
volumeMounts:
- name: config-volume
mountPath: /etc/config

멀티클러스터 ConfigMap 관리​

MCM를 통해 ConfigMap을 멀티클러스터에 배포할 때:

PropagationPolicy:

  • 동일한 ConfigMap을 여러 클러스터에 복제
  • 클러스터 선택 및 배포 전략 설정

OverridePolicy:

  • 클러스터별로 다른 설정값 적용
  • 환경별 설정 차이 관리

예: 클러스터별 다른 데이터베이스 호스트 설정

ConfigMap 업데이트 전략​

ConfigMap을 수정할 때 주의사항:

  1. 즉시 반영 안 됨: 이미 실행 중인 파드는 ConfigMap 수정 시 즉시 업데이트되지 않음
  2. 볼륨 마운트: 볼륨으로 마운트된 경우 일정 시간 후 자동 업데이트 (기본 60초)
  3. 환경 변수: 환경 변수로 주입된 경우 파드 재시작 필요
  4. 롤링 업데이트: Deployment 재시작으로 새 설정 적용
# Deployment 롤링 재시작
kubectl rollout restart deployment/my-app -n namespace

다음 단계​