10.1 컨피그맵 사용하기
•
컨피그맵 설정
(데이터베이스 접속에 필요한 환경 변수들을 넣는다는 가정을 함)
kubectl apply -f config-dev.yaml #쿠버네티스 클러스터 안에 적용
kubectl describe configmap config-dev #설정 내용이 제대로 들어갔는지 확인
JavaScript
복사
Data 항목의 출력 결과가 템플릿 설정과 일치 → 정상적으로 적용된 것
⇒ 컨피그맵을 컨테이너에서 불러와서 사용하는 방법을 알아보자!
10.2 컨피그맵 설정 중 일부만 불러와서 사용하기
apiVersion: apps/v1
kind: Deployment
metadata:
name: configapp
labels:
app: configapp
spec:
replicas: 1
selector:
matchLabels:
app: configapp
template:
metadata:
labels:
app: configapp
spec:
containers:
- name: testapp
image: arisu1000/simple-container-app:latest
ports:
- containerPort: 8080
env:
- name: DEBUG_LEVEL # name 필드 값으로 DEBUG_LEVEL이라는 환경 변숫값 설정
valueFrom: # 값을 어디에서 가져올 것인지를 지정
configMapKeyRef: # 어떤 컨피그맵의 어떤 키를 가져올 것인지를 지정
name: config-dev # config-dev 컨피그맵을 선택
key: DEBUG_INFO # .data.DEBUG_INFO 필드만 불러옴
---
apiVersion: v1
kind: Service
metadata:
labels:
app: configapp
name: configapp-svc
namespace: default
spec:
ports:
- nodePort: 30800
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: configapp
type: NodePort
YAML
복사
→ 이 컨테이너의 DEBUG_LEVEL이라는 환경 변숫값이 debug가 됨
•
클러스터에 적용
→ DEBUG_LEVEL 필드 값에 debug가 설정된 것을 확인할 수 있음
10.3 컨피그맵 설정 전체를 한꺼번에 불러와서 사용하기
apiVersion: apps/v1
kind: Deployment
metadata:
name: configapp
labels:
app: configapp
spec:
replicas: 1
selector:
matchLabels:
app: configapp
template:
metadata:
labels:
app: configapp
spec:
containers:
- name: testapp
image: arisu1000/simple-container-app:latest
ports:
- containerPort: 8080
envFrom: # 환경 변수를 어디에서 가져올 것인지 설정
- configMapRef: # 어떤 컨피그맵을 참조해서 환경 변수들을 불러올 것인지를 설정
name: config-dev # 컨피그맵인 config-dev 연결
---
apiVersion: v1
kind: Service
metadata:
labels:
app: configapp
name: configapp-svc
namespace: default
spec:
ports:
- nodePort: 30800
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: configapp
type: NodePort
JavaScript
복사
→ 필드 4개 모두 설정된 것 확인 가능
10.4 컨피그맵을 볼륨에 불러와서 사용하기
•
컨테이너 볼륨 형식으로 컨피그맵을 설정해서 파일로 컨테이너에 제공하기
apiVersion: apps/v1
kind: Deployment
metadata:
name: configapp
labels:
app: configapp
spec:
replicas: 1
selector:
matchLabels:
app: configapp
template:
metadata:
labels:
app: configapp
spec:
containers:
- name: testapp
image: arisu1000/simple-container-app:latest
ports:
- containerPort: 8080
volumeMounts:
- name: config-volume # config-volume라는 볼륨을 만들어서 config-dev 컨피그맵의 .data 하위 필드 4개를 컨테이너의
mountPath: /etc/config # /etc/config 디렉터리에 필드 이름 형태의 파일로 저장
volumes:
- name: config-volume
configMap:
name: config-dev # config-volume 볼륨을 사용하는 컨피그맵 config-dev를 설정
---
apiVersion: v1
kind: Service
metadata:
labels:
app: configapp
name: configapp-svc
namespace: default
spec:
ports:
- nodePort: 30800
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: configapp
type: NodePort
JavaScript
복사
•
클러스터에 적용
•
config-dev 컨피그맵에 해당하는 파드 이름 확인
kubectl get pods
JavaScript
복사
kubectl exec -it 컨피그맵파드이름 -- sh # 컨테이너 안 /etc/config 디렉터리에 진짜 파일이 만들어졌는지 확인
JavaScript
복사
•
•
볼륨에 해당하는 쿼리가 있는 http://localhost:30800/volume-config?path=/etc/config/DB_USER 로 접속 → DB_USER 파일 내용 확인 가능