ConfigMaps 및 Secrets
ConfigMaps와 Secrets를 사용하여 Kubernetes 배포 환경에서 구성 데이터와 민감한 정보를 안전하게 관리하세요.
ConfigMaps 및 Secrets은(는) CoddyKit의 무료 Docker & DevOps Fundamentals 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Docker & DevOps Fundamentals 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Docker & DevOps Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
ConfigMaps 및 Secrets 소개
환영합니다! 이 레슨에서는 Kubernetes에서 구성 데이터와 민감한 정보를 관리하는 방법을 배웁니다. 유연하고 안전한 애플리케이션 배포에 필수적인 두 도구인 ConfigMaps와 Secrets를 살펴보겠습니다.

구성을 외부화해야 하는 이유
데이터베이스 자격 증명이나 API 키를 애플리케이션의 Docker 이미지에 직접 하드코딩한다고 생각해 보세요. 그러면 업데이트가 어려워지고 민감한 데이터가 노출됩니다.
- 유연성 부족: 변경할 때마다 이미지를 다시 빌드해야 합니다.
- 보안 위험: 민감한 데이터가 이미지에 포함됩니다.
- 환경별 설정: 환경(개발, 운영)마다 서로 다른 설정이 필요합니다.
ConfigMaps: 민감하지 않은 데이터
ConfigMap은 키-값 쌍으로 민감하지 않은 구성 데이터를 저장하는 Kubernetes 객체입니다. 로그 수준이나 API 엔드포인트와 같은 애플리케이션 설정을 모아 두는 중앙 장소라고 생각하시면 됩니다.
구성과 애플리케이션 코드를 분리하므로 배포의 이식성이 높아지고 관리가 쉬워집니다.
ConfigMap 정의하기
리터럴 값, 파일 또는 디렉터리에서 ConfigMap을 만들 수 있습니다. 다음은 YAML 파일에 정의한 간단한 예시입니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: my-app-config
data:
log_level: "INFO"
api_endpoint: "http://myapi.example.com"환경 변수로 사용하는 ConfigMap
ConfigMap을 만들고 나면 Pod에서 해당 데이터를 환경 변수로 사용할 수 있습니다. 애플리케이션에 설정을 전달하는 일반적인 방법입니다.
Pod에서 my-app-config를 사용하는 방법은 다음과 같습니다.
apiVersion: v1
kind: Pod
metadata:
name: configmap-env-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "echo Log Level: $LOG_LEVEL; echo API: $API_ENDPOINT"]
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: my-app-config
key: log_level
- name: API_ENDPOINT
valueFrom:
configMapKeyRef:
name: my-app-config
key: api_endpoint
restartPolicy: Never마운트된 파일로 사용하는 ConfigMap
또 다른 방법으로 ConfigMap 데이터를 컨테이너 내부에 파일로 마운트할 수 있습니다. 각 키-값 쌍은 하나의 파일이 되며, 키는 파일 이름으로, 값은 파일 내용으로 사용됩니다.
애플리케이션이 특정 경로에서 읽어야 하는 구성 파일에 유용합니다.
apiVersion: v1
kind: Pod
metadata:
name: configmap-file-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "cat /etc/config/log_level; cat /etc/config/api_endpoint"]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: my-app-config
restartPolicy: NeverSecrets: 민감한 데이터
Secrets는 ConfigMaps와 비슷하지만 비밀번호, API 키 또는 TLS 인증서와 같은 민감한 데이터를 위해 설계되었습니다. Kubernetes는 이를 안전하게 관리하고 배포할 수 있도록 지원합니다.
ConfigMaps는 데이터를 일반 텍스트로 저장하지만 Secrets는 base64로 인코딩됩니다. 이는 NOT 암호화가 아니지만 실수로 데이터가 노출되는 것을 방지합니다.
Secret 정의하기
Secret을 만들 때 값은 base64로 인코딩해야 합니다. echo -n 'my-password' | base64를 사용하여 인코딩할 수 있습니다.
다음은 데이터베이스 비밀번호의 예시입니다.
apiVersion: v1
kind: Secret
metadata:
name: db-credentials
type: Opaque
data:
username: YWRtaW4= # base64 of 'admin'
password: c3VwZXJzZWNyZXRwYXNz # base64 of 'supersecretpass'Pod에서 Secrets 사용하기
Pod에서는 ConfigMaps와 거의 같은 방식으로 Secrets를 사용합니다. 환경 변수로 사용하거나 파일로 마운트할 수 있습니다. Kubernetes는 컨테이너에 전달하기 전에 자동으로 디코딩합니다.
환경 변수는 더 쉽게 기록되거나 검사될 수 있으므로, 보안을 위해 일반적으로 파일로 마운트하는 방법을 권장합니다.
apiVersion: v1
kind: Pod
metadata:
name: secret-env-pod
spec:
containers:
- name: my-app-container
image: busybox
command: ["sh", "-c", "echo DB User: $DB_USERNAME; echo DB Pass: $DB_PASSWORD"]
env:
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: db-credentials
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: password
restartPolicy: Never보안 모범 사례
base64 인코딩은 암호화가 아니라는 점을 기억하세요. 저장 데이터의 진정한 암호화를 위해서는 Kubernetes Secret 백엔드(예: Vault)를 사용하거나 클라우드 제공업체의 KMS 서비스를 활용해야 할 수 있습니다.
- RBAC: Secrets에 액세스할 수 있는 사용자를 제어합니다.
- 최소 권한: Pod에는 필요한 Secrets에만 액세스 권한을 부여합니다.
- 마운트된 파일: 환경 변수보다 Secrets를 파일로 마운트하는 방법을 우선하세요.
구성 빠른 확인
Kubernetes에서 애플리케이션에 사용할 API 키(민감한 데이터)와 로그 수준 설정(민감하지 않은 데이터)을 저장해야 합니다.
각각 어떤 Kubernetes 객체를 사용해야 하나요?
복습: ConfigMaps 및 Secrets
잘하셨습니다! Kubernetes에서 애플리케이션 구성과 민감한 데이터를 관리하는 방법을 배웠습니다.
- ConfigMaps: 민감하지 않은 키-값 쌍을 저장합니다.
- Secrets: 민감한 데이터를 저장합니다(base64로 인코딩됨).
- Pod에서 둘 다 환경 변수로 사용하거나 파일로 마운트할 수 있습니다.
- 민감한 정보를 처리할 때는 항상 보안 모범 사례를 따르세요.
다음으로 RBAC 및 외부 Secret 관리 솔루션과 같은 고급 보안 주제를 살펴보세요.
자주 묻는 질문
“ConfigMaps 및 Secrets” 강의는 무료인가요?
네 — “ConfigMaps 및 Secrets” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Docker & DevOps Fundamentals 강의 전체를 잠금 해제할 수 있습니다. Docker & DevOps Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
“ConfigMaps 및 Secrets”에서 뭘 배우나요?
ConfigMaps와 Secrets를 사용하여 Kubernetes 배포 환경에서 구성 데이터와 민감한 정보를 안전하게 관리하세요. 브라우저에서 직접 실행하는 실습 코드로 Docker & DevOps Fundamentals을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Docker & DevOps Fundamentals을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Docker & DevOps Fundamentals은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“ConfigMaps 및 Secrets” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Docker & DevOps Fundamentals 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Docker & DevOps Fundamentals 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 상태 비저장 앱을 위한 배포
- 네트워크 액세스를 위한 서비스
- ConfigMaps 및 Secrets
- Ingress와 외부 라우팅