구성을 위한 ConfigMaps
ConfigMaps를 사용하여 애플리케이션 구성을 컨테이너 이미지에서 외부로 분리하세요.
구성을 위한 ConfigMaps은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
ConfigMaps 소개
애플리케이션에는 데이터베이스 연결 문자열이나 기능 플래그 같은 구성 데이터가 필요한 경우가 많습니다.
이 정보를 컨테이너 이미지에 직접 하드코딩하면 이미지를 변경하기 어렵고 유연성이 떨어질 수 있습니다.
ConfigMaps는 애플리케이션의 민감하지 않은 구성을 외부화하고 중앙에서 관리하는 방법을 제공하여 이미지를 유연하게 유지합니다.
ConfigMap이란 무엇인가요?
ConfigMap은 민감하지 않은 데이터를 키-값 쌍으로 저장하는 데 사용하는 쿠버네티스 객체입니다.
애플리케이션 설정을 중앙에서 관리하며 파드가 액세스할 수 있는 장소라고 생각하면 됩니다.
- 구성 분리: 구성을 애플리케이션 코드에서 분리합니다.
- 유연성: 이미지를 다시 빌드하지 않고도 설정을 쉽게 변경할 수 있습니다.
- 이식성: 서로 다른 구성의 환경 간에 애플리케이션을 이동할 수 있습니다.
ConfigMaps 만들기: 명령형 방식
kubectl create configmap을 사용하여 명령줄에서 ConfigMap을 바로 만들 수 있습니다.
이 방법은 간단한 일회성 구성이나 빠른 테스트에 적합합니다.
my-app-config라는 ConfigMap에 로그 수준 설정을 저장해 보겠습니다.
kubectl create configmap my-app-config \
--from-literal=log_level=INFOConfigMap 검사
ConfigMap을 만든 후 세부 정보를 확인하고 내용을 검증할 수 있습니다.
-o yaml 플래그와 함께 kubectl get을 사용하면 내부에 저장된 데이터를 포함한 전체 YAML 정의를 볼 수 있습니다.
kubectl get configmap my-app-config -o yaml선언형 ConfigMap(YAML)
프로덕션 환경과 버전 관리에서는 YAML 매니페스트를 사용하여 ConfigMaps를 정의하는 것이 표준적인 방법입니다.
이 접근 방식을 사용하면 구성을 재현할 수 있고 애플리케이션 코드와 함께 쉽게 관리할 수 있습니다.
다음은 게임 구성의 YAML 예시입니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: game-config
data:
game.properties: |
level=easy
player_limit=10
ui.properties: |
theme=dark
language=enYAML에서 ConfigMap 적용하기
game-config ConfigMap을 만들려면 이전 장면의 YAML 내용을 파일(예: game-config.yaml)로 저장합니다.
그런 다음 kubectl apply -f를 사용하여 클러스터에 배포합니다.
# Save the YAML to game-config.yaml
kubectl apply -f game-config.yaml
kubectl get configmap game-config -o yaml환경 변수로 사용하는 ConfigMaps
파드에서 ConfigMap 데이터를 사용하는 일반적인 방법 중 하나는 환경 변수로 주입하는 것입니다.
노출할 개별 키를 지정하거나 envFrom을 사용하여 ConfigMap의 모든 키-값 쌍을 노출할 수 있습니다.
간단한 애플리케이션 설정에 적합한 방법입니다.
apiVersion: v1
kind: Pod
metadata:
name: my-env-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "echo Log Level: $LOG_LEVEL && sleep 3600"]
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: my-app-config
key: log_level실습: 환경 구성을 사용하는 파드
파드 정의를 실행하여 LOG_LEVEL 환경 변수가 실제로 작동하는 모습을 확인해 보겠습니다.
파드 YAML을 env-pod.yaml에 저장하고 적용한 다음 파드 로그를 확인합니다.
# Save Pod YAML to env-pod.yaml
kubectl apply -f env-pod.yaml
kubectl logs my-env-pod
# Clean up
kubeclt delete pod my-env-pod볼륨으로 마운트하는 ConfigMaps
구성 파일(예: nginx.conf, application.properties)을 필요로 하는 애플리케이션의 경우 ConfigMap을 볼륨으로 마운트할 수 있습니다.
ConfigMap의 각 키-값 쌍은 컨테이너 내부에서 지정된 마운트 경로에 있는 파일이 됩니다.
apiVersion: v1
kind: Pod
metadata:
name: my-volume-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "echo 'Contents of game.properties:' && cat /etc/config/game.properties && sleep 3600"]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: game-config실습: 구성을 마운트한 파드
이번에는 game-config ConfigMap을 볼륨으로 마운트하는 파드를 배포해 보겠습니다.
파드 YAML을 volume-pod.yaml에 저장하고 적용한 다음 로그를 확인하여 마운트된 파일의 내용을 살펴봅니다.
# Save Pod YAML to volume-pod.yaml
kubectl apply -f volume-pod.yaml
kubectl logs my-volume-pod
# Clean up
kubeclt delete pod my-volume-pod빠른 확인: ConfigMaps
쿠버네티스 ConfigMaps에 대한 다음 설명 중 참인 것은 무엇인가요?
복습: ConfigMaps
잘하셨습니다! ConfigMaps가 쿠버네티스에서 구성을 관리하는 데 어떻게 도움이 되는지 배웠습니다.
- 목적: 민감하지 않은 구성 데이터를 키-값 쌍으로 저장합니다.
- 생성:
kubectl create를 사용한 명령형 방식이나 YAML을 사용한 선언형 방식으로 생성합니다. - 사용: 파드 내부에서 환경 변수 또는 마운트된 파일로 사용합니다.
- 이점: 구성을 애플리케이션 코드에서 분리하여 유연성을 높입니다.
다음에는 쿠버네티스 Secrets를 사용하여 민감한 정보를 안전하게 처리하는 방법을 살펴보겠습니다!
자주 묻는 질문
“구성을 위한 ConfigMaps” 강의는 무료인가요?
네 — “구성을 위한 ConfigMaps” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“구성을 위한 ConfigMaps”에서 뭘 배우나요?
ConfigMaps를 사용하여 애플리케이션 구성을 컨테이너 이미지에서 외부로 분리하세요. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“구성을 위한 ConfigMaps” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 구성을 위한 ConfigMaps
- 민감한 데이터를 위한 Secrets
- 영구 볼륨 및 볼륨 클레임
- StorageClasses와 동적 프로비저닝