반갑습니다!
💙베하💙 누구든 탑승할 수 있는 유임승차 팀의 BTC 룰루랄라 입니다!!💨😉
저번 포스팅은 쿠버네티스 기능 중 하나인 volume에 대해서 설명 드렸는데요~
이번 포스팅에서는 Kubernetes의 ConfigMap에 대해서 살펴보겠습니다.
그럼 시작해 보겠습니다!
룰루랄라~♬
⚡️ 목표
쿠버네티스에서 설정파일과 환경변수를 관리하는 방법을 알아봅니다.
컨테이너에서 설정 파일을 관리하는 방법은 이미지를 빌드할 때 복사하거나, 컨테이너를 실행할 때 외부 파일을 연결하는 방법이 있습니다. 쿠버네티스는 ConfigMap으로 설정을 관리합니다.
#ConfigMap 만들기
파일을 통째로 ConfigMap으로 만든 다음 컨테이너에서 사용하는 방법을 알아봅니다.
global:
scrape_interval: 15s
scrape_configs:
- job_name: prometheus
metrics_path: /prometheus/metrics
static_configs:
- targets:
- localhost:9090
먼저, ConfigMap을 만듭니다. --from-file 옵션을 이용하여 file을 설정으로 만듭니다.
# ConfitMap 생성 configmap -> cm
kubectl create cm my-config --from-file=config-file.yml
# ConfitMap 조회
kubectl get cm
# ConfigMap 내용 상세 조회
kubectl describe cm/my-config
생성한 ConfigMap을 /etc/config 디렉토리에 연결합니다.
apiVersion: v1
kind: Pod
metadata:
name: alpine
spec:
containers:
- name: alpine
image: alpine
command: ["sleep"]
args: ["100000"]
volumeMounts:
- name: config-vol
mountPath: /etc/config
volumes:
- name: config-vol
configMap:
name: my-config
volume을 연결하여 배포하고 확인합니다.
kubectl apply -f alpine.yml
# 접속 후 설정 확인
kubectl exec -it alpine -- ls /etc/config
kubectl exec -it alpine -- cat /etc/config/config-file.yml
#env 파일로 만들기
env 포멧을 그대로 사용합니다.
hello=world
haha=hoho
env-config로 만듭니다.
# env 포멧으로 생성
kubectl create cm env-config --from-env-file=config-env.yml
# env-config 조회
kubectl describe cm/env-config
#YAML 선언하기
ConfigMap을 YAML파일로 정의합니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
hello: world
kuber: netes
multiline: |-
first
second
third
config-map.yml 적용 후 마운트 된 내용을 확인합니다.
# 기존 configmap 삭제
kubectl delete cm/my-config
# configmap 생성
kubectl apply -f config-map.yml
# alpine 적용
kubectl apply -f alpine.yml
# 적용내용 확인
kubectl exec -it alpine -- cat /etc/config/multiline
#ConfigMap을 환경변수로 사용하기
ConfigMap을 volume이 아닌 환경변수로 설정합니다.
apiVersion: v1
kind: Pod
metadata:
name: alpine-env
spec:
containers:
- name: alpine
image: alpine
command: ["sleep"]
args: ["100000"]
env:
- name: hello
valueFrom:
configMapKeyRef:
name: my-config
key: hello
환경변수를 확인합니다.
kubectl apply -f alpine-env.yml
# env 확인
kubectl exec -it alpine-env -- env
#마무리
ConfigMap은 쿠버네티스에서 각종 설정을 관리하는 가장 좋은 방법입니다. 실제 운영에서 자주 접하게 되므로 어떻게 사용하는지 확실하게 익혀두세요
'INFRA > DevOps' 카테고리의 다른 글
[K8s] kubernetes namespace, yaml template (0) | 2022.08.25 |
---|---|
Secret (0) | 2022.08.22 |
Volume(local) (0) | 2022.08.20 |
[K8s] kubernetes 동작 원리 (0) | 2022.08.16 |
[k8s] kubernetes 설치 (containerd 사용) (0) | 2022.08.08 |
댓글