설정 값을 따로 정리하여 파일 형태로 저장하는 것이 관리 및 확장성에 유리하게 작용한다. 쿠버네티스에서는 configMap이라는 오브젝트를 제공하여 보다 쉽게 로그 및 DB 정보 등 여러 정보들을 쉽게 관리 및 연동이 가능하다.
configmap 문자열로 생성
# configmap 생성
# kubectl create configmap <컨피그맵 이름> <설정 정보들>
kubectl create configmap start-k8s --from-literal k8s=kubernetes \
>--from-literal container=docker
# configmap 조회
kubectl get cm
# configmap 상세 조회
kubectl describe configmap log-level-configmap
configmap Pod에 환경변수 설정
configmap 정보 전체 설정
apiVersion: v1
kind: Pod
metadata:
name: container-env-example
spec:
containers:
- name: my-container
image: busybox
args: ['tail', '-f', 'dev/null']
envFrom: # configmap 설정
- configMapRef:
name: log-level-configmap
- configMapRef:
name: start-k8s
configmap 정보 부분 설정
apiVersion: v1
kind: Pod
metadata:
name: container-env-example2
spec:
containers:
- name: my-container
image: busybox
args: ['tail', '-f', 'dev/null']
env:
- name: ENV_KEYNAME_1 # 환경변수 KEY
valueFrom:
configMapKeyRef:
name: log-level-configmap # confingmap에서 가져올 Key
key: LOG_LEVEL # 환경변수 VALUE
- name: ENV_KEYNAME_2 # 환경변수 KEY
valueFrom:
configMapKeyRef:
name: start-k8s # confingmap에서 가져올 Key
key: k8s # 환경변수 VALUE
포드 환경변수 조회
# kubectl exec <컨테이너 이름> env
# container-env-example 정보 조회
kubectl exec container-env-example env
# result
HOSTNAME=container-env-example
LOG_LEVEL=DEBUG
container=docker
k8s=kubernetes
# container-env-example2 정보 조회
kubectl exec container-env-example2 env
# result
ENV_KEYNAME_1=DEBUG
ENV_KEYNAME_2=kubernetes
configmap 파일로 포드에 마운트
configmap 정보 전체 설정
apiVersion: v1
kind: Pod
metadata:
name: configmap-volume-pod
spec:
containers:
- name: configmap-volume-pod
image: busybox
args: ['tail', '-f', '/dev/null']
volumeMounts:
- name: configmap-volume # volumes에서 정의한 이름
mountPath: /etc/config # 컨테이너 내부에 파일로 저장할 경로
volumes:
- name: configmap-volume # volume 이름
configMap:
name: start-k8s # configmap 이름
configmap 정보 부분 설정
apiVersion: v1
kind: Pod
metadata:
name: configmap-volume-pod2
spec:
containers:
- name: configmap-volume-pod
image: busybox
args: ['tail', '-f', '/dev/null']
volumeMounts:
- name: configmap-volume # volumes에서 정의한 이름
mountPath: /etc/config # 컨테이너 내부에 파일로 저장할 경로
volumes:
- name: configmap-volume
configMap:
name: start-k8s # volume 이름
items:
- key: k8s # configmap Key
path: k8s_fullname # 저장할 파일 이름
컨테이너 내부 configmap 정보 조회
# 컨테이너 내부 진입
kubectl exec configmap-volume-pod ls /etc/config
# result
container
k8s
configmap 파일로 생성
nano multiple-keyvalue.env
myKey1=myValue1
myKey2=myValue2
myKey3=myValue3
# kubectl create configmap <컨피그 맵 이름> --from-file 파일 이름
kubectl create configmap init-config --from-file multiple-keyvalue.env
# 조회
kubectl describe cm init-config
# result
multiple-keyvalue.env:
----
myKey1=myValue1
myKey2=myValue2
myKey3=myValue3
'Kubernetes' 카테고리의 다른 글
7-1. Kubernetes Ingress (0) | 2024.08.20 |
---|---|
6. Kubernetes Secret (0) | 2024.08.13 |
4. Kubernetes Service (0) | 2024.08.07 |
3. Kubernetes Deployment (0) | 2024.08.07 |
2. Kubernetes ReplicaSet (0) | 2024.08.06 |