클라우드 엔지니어/클라우드 캠프과정

쿠버네티스 - 컨피그맵(Kubernetes ConfigMap)

해아's 2022. 10. 17. 11:02
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
반응형