728x90
ConfigMap은 변수, 설정 파일 등의 내용을 key:value 형태로 저장한다. ConfigMap은 특수한 볼륨의 한 종류에 해당하며, 실제로 Pod를 생성할 때 ConfigMap 볼륨에 연결할 수 있다.
Secret 오브젝트와 비교했을 때는 비교적 민감하지 않은 정보들이 저장된다.
1. 명령어로 ConfigMap 생성하기
$ kubectl create configmap CONFIGMAP_NAME --from-file=FILE_NAME
$ kubectl create configmap CONFIGMAP_NAME--from-literal=KEY_NAME=VALUE
# key 를 새로 지정하고 value를 파일에 있는 값으로 넣어주기
$ kubectl create configmap my-config3 --from-file=KEY_NAME=FILE_NAME.conf
2. YAML (Manifest File)로 ConfigMap 생성하기
apiVersion: v1
kind: ConfigMap
metadata:
name: CONFIG_NAME
data:
KEY: VALUE
생성한 ConfigMap 확인하기
$ kubectl get configmaps CONFIGMAP_NAME # 컨피그맵 목록 확인
$ kubectl describe configmaps CONFIGMAP_NAME # 상세 정보 확인
실제로 확인해보면 다음과 같이 키와 값의 정보를 확인할 수 있다.
$ kubectl describe configmaps my-config
Name: my-config
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
appversion:
----
1234
BinaryData
====
Events: <none>
Pod의 환경변수에 ConfigMap 참조하기
apiVersion: v1
kind: Pod
metadata:
name: POD_NAME
spec:
containers:
- name: myapp
image: DOCKER_IMAGE_REPO
env: # 환경 변수 지정해서 configMap 참조해서 사용
- name: MESSAGE
valueFrom:
configMapKeyRef:
name: myapp-message # configmap 의 이름
key: message # configmap 의 데이터 일부를 참조하는 경우
args: # env에서 정의한 MESSAGE 환경변수를 출력
- $(MESSAGE)
ports:
- containerPort: 8080
protocol: TCP
Pod의 볼륨에 ConfigMap 연결하기
apiVersion: v1
kind: Pod
metadata:
name: POD_NAME
spec:
containers:
- image: DOCKER_IMAGE
name: CONTAINER_NAME
volumeMounts:
- name: example-config
mountPath: /etc/nginx/conf.d
ports:
- containerPort: 80
protocol: TCP
volumes:
- name: example-config # 컨피그맵을 볼륨처럼 활용가능. 컨피그맵 오브젝트와 이름이 달라도 상관없음
configMap:
name: example-configmap # 컨피그맵 오브젝트 이름
728x90
'Cloud Engineering > Kubernetes ⚙️' 카테고리의 다른 글
[Kubernetes] Deployment Object (디플로이먼트 오브젝트) 와 Rolling Update 전략 (0) | 2023.02.22 |
---|---|
[Kubernetes] Secret 오브젝트 사용하기 (0) | 2023.02.21 |
[Kubernetes] Persistent Volume 과 Persistent Volume Claim (0) | 2023.02.20 |
[Kubernetes] Ingress 컨트롤러 (0) | 2023.02.19 |
[Kubernetes] 쿠버네티스 Volume의 종류와 특징 (0) | 2023.02.17 |