configmap from file이란?
참고자료: https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#create-configmaps-from-directories
파일을 configmap으로 관리하는 방법입니다.
언제 사용할까?
파일을 쿠버네티스 노드 또는 서버에 저장하지 않고 쿠버네티스로 파일을 관리하고 싶을 때 사용합니다.
노드 또는 파일서버에 존재하는 파일을 마운트해서 사용하는 경우가 종종 있습니다. pod에서는 파일을 마운트해서 사용하려면 hostpath 또는 NFS 등 프로토콜을 사용해야 합니다. hostpath를 사용하면 nodeAffinity등 같은 스케쥴 설정이 필요합니다. NFS 등 프로토콜을 사용한다면 방화벽 설정 등이 필요하죠.
단순히 파일을 pod에서 파일을 마운트해서 사용하기 위해 여러가지 설정이 필요한데요. configmap으로 파일을 관리하면 설정없이 바로 pod에서 파일을 마운트할 수 있습니다.
configmap으로 관리해야하는 파일 개수가 많으면 관리하기 힘든 단점이 있습니다. 그리고 실수로 configmap을 지우면 파일이 삭제되어 주의가 필요합니다.
Configm생성 방법
kubectl로 configmap을 생성할 때 파일을 입력으로 받을 수 있습니다. 실습을 위해 shell 스크립트 파일을 생성하겠습니다. 쉘스크립트는 helloworld를 출력하는 간단한 예제입니다.
#!/bin/sh
echo "helloworld"
kubectl create와 —from-file인자를 이용하여 helloworld.sh파일을 configmap으로 생성합니다.
kubectl create configmap helloworld --from-file=./helloworld.sh
kubectl describe로 configmap을 확인하면 Data필드에 helloworld.sh서브키가 생성되었습니다. 그리고 값은 helloworld.sh파일 내용이 있습니다.
kubectl describe configmap helloworld
kubectl edit으로 확인하면 예쁘게 볼 수 있습니다.
kubectl edit configmap helloworld
pod 마운트 예
configmap에 있는 파일은 pod에 마운트될 수 있습니다.
apiVersion: v1
kind: Pod
metadata:
name: busybox-test
labels:
name: busybox-test
spec:
containers:
- name: busybox-test
image: busybox
resources:
limits:
memory: "32Mi"
cpu: "50m"
command:
- /bin/sh
- /data/helloworld.sh
volumeMounts:
- mountPath: /data
name: echo
volumes:
- name: echo
configMap:
name: helloworld
kubectl apply로 pod를 생성합니다.
kubectk apply -f pod.yaml
pod로그를 보면 쉘 스크립트가 성공적으로 마운트 되고 실행된 것을 확인 할 수 있습니다.
'전공영역 공부 기록' 카테고리의 다른 글
Event Exporter - 쿠버네티스 이벤트 장기저장 (0) | 2022.10.23 |
---|---|
Typescript 에러 - default import when using the 'esModuleInterop' flag. (0) | 2022.10.10 |
쿠버네티스 Replica 설정 시 주의사항 (0) | 2022.10.02 |
Dockerfile 변수 ARG (0) | 2022.09.25 |
Mac에서 오픈된 tcp port검색 (0) | 2022.09.21 |