ConfigMap
1) ConfigMap이란?
파드를 생성하면서 컨테이너에 입력해줘야하는 설정값이 있는 경우가 있다.
이 때 같은 이미지를 사용하더라도 설정에 따라서 애플리케이션이 다르게 동작할 수 있는데
이 때마다 이미지를 만들면 효율적이지 못하다.
이럴 땐 환경변수를 이용해서 파드를 생성하면서 설정값을 입력해줄 수 있다.
또한 환경변수를 사용하여 전달할 수도 있지만 설정이 여러가지가 있다고 하면
파드의 설정과 함께 작성하기에 복잡해질 수 있다.
이 때 파드의 yml과 설정 내용의 yml을 분리하기 위해 사용
파드생성시 특정 컨피그맵만 불러와서 적용되게 함.
컨피그맵 생성
#설정파일의 이름은 cm-dev
apiVersion: v1
kind: ConfigMap
metadata:
name: cm-dev
data:
SSH: 'false'
User: dev
파드 생성 yml
apiVersion: v1
kind: Pod
metadata:
name: pod-1
spec:
containers:
- name: container
image: ubuntu:18.04
command: ["/bin/sh", "-ec", "while :; do echo '.'; sleep 5 ; done"] #우분투이미지는 실행하고있는게 없으면 꺼지므로 무한루프 돌려둔다
envFrom:
- configMapRef:
name: cm-dev #cm-dev 설정파일을 불러오자
실습1
mysql pod를 컨피그맵방식으로 바꿔서 불러와보자
#mysql - 컨피그맵으로 바꾸자
#mysql용 컨피그맵
apiVersion: v1
kind: ConfigMap
metadata:
name: cm-mysql-dev
data:
MYSQL_ROOT_PASSWORD: 'qwer1234'
#mysql pod 생성
apiVersion: v1
kind: Pod
metadata:
name: mysql-server
spec:
nodeSelector:
kubernetes.io/hostname: node1
containers:
- name: mysql
image: mysql
envFrom:
- configMapRef:
name: cm-mysql-dev #cm-dev 설정파일을 불러오자
volumeMounts:
- mountPath: /var/lib/mysql
name: db-vol
volumes:
- name : db-vol
hostPath:
path: /db-vol
type: DirectoryOrCreate
실습1
mysql pod를 시크릿방식으로 바꿔서 불러와보자
apiVersion: v1
kind: Secret
metadata:
name: sec-dev1
data:
MYSQL_ROOT_PASSWORD: cXdlcjEyMzQ= #qwer1234 를 base64 인코딩한값
apiVersion: v1
kind: Pod
metadata:
name: mysql-server
spec:
nodeSelector:
kubernetes.io/hostname: node1
containers:
- name: mysql
image: mysql
envFrom:
- secretRef:
name: sec-dev1 #cm-dev 설정파일을 불러오자
volumeMounts:
- mountPath: /var/lib/mysql
name: db-vol
volumes:
- name : db-vol
hostPath:
path: /db-vol
type: DirectoryOrCreate
추후 git에 올릴때 설정으로 컨피그맵파일같은거는 안올라가게 해야한다.
728x90
반응형