티스토리 뷰

728x90
반응형

✅ 아래 글의 내용 및 이미지는 인프런 "쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2" 강의를 듣고 정리한 글입니다.

 

Configmap, Secret 기본 개념

Kubernetes에서 ConfigMapSecret은 애플리케이션의 설정값을 Pod와 분리하여 관리하는 리소스입니다.
하지만 두 개의 목적과 보안 수준이 다르므로, 상황에 따라 적절히 선택해야 합니다.

ConfigMap이란?

일반적인 설정값을 저장하는 리소스
ConfigMap은 환경 변수, 설정 파일 등을 Pod에 전달하는 데 사용됩니다.

ConfigMap 예제

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  APP_ENV: "production"
  LOG_LEVEL: "info"

ConfigMap을 Pod의 환경 변수로 사용

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: nginx
      env:
        - name: APP_ENV
          valueFrom:
            configMapKeyRef:
              name: my-config
              key: APP_ENV

✅ APP_ENV 설정값이 환경 변수로 Pod 내부에 주입됨

Secret이란?

📌 비밀번호, API 키 등 민감한 데이터를 저장하는 리소스
Secret은 보안이 중요한 데이터를 Base64로 인코딩하여 저장합니다.

Secret 예제

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  DB_PASSWORD: "cGFzc3dvcmQ="  # "password"를 Base64 인코딩한 값

Secret을 Pod의 볼륨으로 마운트

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  volumes:
    - name: secret-volume
      secret:
        secretName: my-secret
  containers:
    - name: my-container
      image: nginx
      volumeMounts:
        - name: secret-volume
          mountPath: "/etc/secret"
          readOnly: true

✅ Secret 데이터가 /etc/secret/ 디렉토리에 파일 형태로 저장됨

3️⃣ ConfigMap vs Secret 차이점 정리

비교 항목 ConfigMap Secret

목적 일반적인 설정값 저장 민감한 정보 저장
데이터 저장 방식 평문 (key-value) Base64 인코딩
보안성 낮음 (모든 사용자가 조회 가능) 높음 (RBAC 적용 가능)
Pod 내 적용 방식 환경 변수, 볼륨 마운트 가능 환경 변수, 볼륨 마운트 가능
사용 예시 서비스 URL, 로그 레벨 설정 DB 비밀번호, API 키

4️⃣ ConfigMap과 Secret을 함께 사용하는 경우

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: nginx
      env:
        - name: APP_ENV
          valueFrom:
            configMapKeyRef:
              name: my-config
              key: APP_ENV
        - name: DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: my-secret
              key: DB_PASSWORD
      volumeMounts:
        - name: secret-volume
          mountPath: "/etc/secret"
          readOnly: true
  volumes:
    - name: secret-volume
      secret:
        secretName: my-secret

✅ ConfigMap 값은 환경 변수로 주입
✅ Secret 값은 환경 변수 + 볼륨 파일로 저장 가능

🎯 결론

  • ConfigMap은 환경 변수, 설정값을 저장할 때 사용
  • Secret은 비밀번호, API 키와 같은 민감한 정보를 저장할 때 사용
  • Secret은 보안성을 위해 Base64 인코딩되며 RBAC을 적용 가능
  • 둘 다 환경 변수나 볼륨 마운트 방식으로 Pod 내부에 주입 가능

비밀번호, API 키는 반드시 Secret을 사용하고, 일반 설정값은 ConfigMap을 사용

 

1. 기본 개념

  • ConfigMap
    • 민감하지 않은 데이터를 저장 (예: spring.profiles.active=dev).
    • Pod에 환경 변수나 볼륨으로 주입되어 설정을 관리.
  • Secret
    • 민감한 데이터를 Base64로 인코딩해 저장 (예: DB 비밀번호).
    • Pod에 환경 변수나 볼륨으로 주입되며 보안 유지.
  • Pod
    • ConfigMap과 Secret의 데이터를 사용해 애플리케이션 실행.
    • 예: 환경 변수로 설정값, 볼륨으로 파일 활용.

2. 동작 확인

  • ConfigMap 활용
    • 환경 변수로 주입 → 애플리케이션 프로파일 설정 (예: dev).
  • Secret 활용
    • 볼륨으로 마운트 → 민감한 정보 제공 (예: db-info.yaml).
  • 결과 검증
    • Pod에서 주입된 데이터를 애플리케이션이 정상적으로 사용하며 설정 적용 확인.

실습

https://cafe.naver.com/kubeops/43

 

Application 기능으로 이해하기 - Configmap, Secret

1. 기본 개념 2. 동작 확인 (1) 입력값 확인 (Secret, Configmap) ▶ kubectl (2) 컨테이너 내부 확인 ▶ dashboard ▶ kubectl (...

cafe.naver.com

출처

https://www.inflearn.com/course/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EC%96%B4%EB%82%98%EB%8D%94-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%A7%80%EC%83%81%ED%8E%B8-sprint1

 

쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 | 일프로 - 인프런

일프로 | , ✅ 광범위한 쿠버네티스 기술을 A~Z까지 넓고 얇게 훑기보다 하나의 개념을 배우더라도 왜 사용하는지 부터 실무에서 어떻게 사용되는지 까지를 다루는 강의 ✅ 시작은 초급자지만

www.inflearn.com

 

728x90
반응형
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함
반응형