본문으로 건너뛰기

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

다음 단계