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 파일 정보를 보면 심볼릭 링크로 볼륨마운트 된걸 볼 수 있다.
'따배쿠' 카테고리의 다른 글
[따배쿠/멤버십] 12-1. Pod Scheduling (0) | 2022.11.19 |
---|---|
[따배쿠] 11. Kubernetes Secret (0) | 2022.11.17 |
[따배쿠] 9-4. kubernetes Canary Deployment (0) | 2022.11.16 |
[따배쿠] 9-3. kubernetes annotation (0) | 2022.11.16 |
[따배쿠] 9-2. kubernetes node label (0) | 2022.11.16 |