🥞 BE
home

컨피그맵

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/env 로 접속하면 config-dev 컨피그맵의 설정 내용이 보이지 않음
볼륨에 해당하는 쿼리가 있는 http://localhost:30800/volume-config?path=/etc/config/DB_USER 로 접속 → DB_USER 파일 내용 확인 가능