본문 바로가기
따배쿠

[따배쿠] 10. Kubernetes ConfigMap

by Engineer-Lee 2022. 11. 16.
반응형

configmap: 컨테이너 운영에 필요한 구성 정보를 한곳에 모아서 관리해주는 api

 

 

text.file의 내용은 아래와 같다.

 

이 파일을 컨피그맵으로 등록하고 싶다면

kubectl create configmap CONFIG_NAME --from-file=text.file 을 입력하면 된다.

 

 

 

https://github.com/237summit/Getting-Start-Kubernetes/tree/main/10

 

GitHub - 237summit/Getting-Start-Kubernetes: example yamls

example yamls. Contribute to 237summit/Getting-Start-Kubernetes development by creating an account on GitHub.

github.com

 

config.dir 디렉토리 안에 nginx-config.conf 파일이 존재한다.

이는 실제 nginx의 구성 파일을 간단히 만든 것이다.

 

kubectl create configmap ttabae-config --from-literal=INTERVAL=2 --from-literal=OPTION=boy --from-file=config.dir/ 명령으로 컨피그맵을 생성한다.

 

kubectl describe configmaps ttabae-config 을 통해 자세히 컨피그맵 내용도 볼 수 있고

kubectl edit configmaps ttabae-config 으로 컨피그맵의 구성내용을 편집할 수 있다.

 

 

 

 

build 디렉토리 안에는 Dockerfile과 genid.sh 이라는 두개의 파일이 있다.

genid.sh의 내용을 보면 webdata라는 디렉토리를 하나 만들고

가짜 id를 boxes에서 받고 그 내용을 webdata의 index.html에 입력하는 동작을 반복한다.

 

도커파일은 우툰부 컨테이너에 boxes 를 설치하고 INTERVAL 을 5로 설정하였다.

엔트리 포인트에는 genid.sh을 넣으므로써 이 도커파일로 인해 생성된 우툰부 컨테이너가 genid.sh를 실행 시키도록 하였다.

 

따라서 genid.sh을 통해 가짜 id가 담긴 boxes가 stone옵션으로 5초간격마다 생성된다.

 

 

genid.yaml 파일을 보면 

 

kubectl apply -f genid.yaml 을 통해 파드를 생성한다.

생성된 파드의 컨테이너의 ip주소로 curl을 통해 접속하면 가짜 id가 담긴 boxes가 stone옵션으로 5초간격마다 생성되는걸 볼 수 있다.

 

 

envFrom - 전체 컨피그 적용
configMapRef - 전체
configMapKeyRef - 키 하나만

 

genid-whole.yaml 파일 내용은 아래와 같다.

 

kubectl create -f genid-whole.yaml 로 실행해보자

 

 

kubectl exec genid-boy -- env로 파드안에 적용된 환경변수를 보면 option이 boy이다.

이는 envFrom의 configMapKeyRef가 ttabae-config이고

ttabae-config의 option이 boy이므로 boxes의 옵션이 boy로 적용된다.

 

 

컨피그맵에 있는 키가 파일이름이 되어서 특정 디렉토리로 볼륨마운트하는 것도 가능하다.

 

 

kubectl exec -it genid-volume -c web-server -- /bin/bash로 웹 서버 컨테이너 안에 들어와서

nginx 디렉토리의 conf.d 로 들어가서 nginx-config.conf 파일 정보를 보면 심볼릭 링크로 볼륨마운트 된걸 볼 수 있다.

반응형