서론
Kubernetes에서는 컨테이너 실행 시 필요한 환경 변수를 설정할 수 있다.
이 장에서는 Pod정의 파일에서 환경 변수를 설정하는 기본적인 방법과 ConfigMap, Secret대해 공부한다.
Pod
Pod 정의 파일에서 spec.containers.env 항목을 사용하여 환경 변수 설정 가능하다.
env는 배열 형식이며, 각 항목은 - name과 value 키로 구성된다.

ConfigMaps
많은 Pod 정의 파일에서 환경변수 설정을 하게되면, 그 안에 저장된 환경 변수들을 관리하기가 어려워진다.
이 정보를 Pod정의 파일에서 분리하여 ConfigMap을 이용해 관리할 수 있다.

위 이미지에서 환경변수 설정을 직접 key-value 형태로 작성했더라면 아래 처럼 ConfigMap을 따로 만들고 파드 정의 파일에 넣어주면 위와 동일한 효과가 나타난다.


ConfigMap파일을 만드는 방법은 정의 파일을 만들고 아래 처럼 구성해주면된다.
기존 설정과 달리 spec필드대신에 data 필드로 들어간다는 것에 유념하자

또는 파일을 만들지 않고 명령어로 한번에 구성해주고 싶다면 :
—-from-literal=APP_COLOR=blue
위 옵션을 통해 작성해줄 수 있으며 여러 개가 있는 경우 반복적으로 옵션을 추가해 아래와 같이 작성해주면 된다.

이렇게 아래 그림처럼 하나는 애플리케이션용, 하나는 MySQL용, 또 하나는 Redis용으로 용도에 맞게 설정 파일을 만들어줄 수 있다.
나중에 Pod에 연결할 때 이 이름들을 사용하게 되므로 ConfigMap 이름을 잘 짓는 것이 중요하다.

Configmap을 보려면 아래 명령어를 통해 볼 수 있으며 describe를 사용하면 설정되어있는 configmap들의 상세정보들과 함께 볼 수 있다.

파드에 ConfigMap을 넣는 방법에는 몇가지가 더 있다.
단일 환경변수 주입
단일 환경 변수로 주입이 가능하다.
아래처럼 ConfigMap의 특정 key하나만 Pod 내 환경 변수로 주입한다.
아래 파드 정의 파일에서 COLOR라는 환경변수에 app-config의 APP_COLOR의 값을 담는다는 뜻이다.
즉, 파드를 실행시키고 파드 내부의 터미널에서 아래와 같은 명령어를 입력하면 blue가 나온다.
$ echo $APP_COLOR
blue
# pod-definition.yaml
apiVersion: v1
kind: Pod
metadata:
name: color-app
spec:
containers:
- name: app-container
image: my-app-image
env:
- name: APP_COLOR
valueFrom:
configMapKeyRef:
name: app-config # 참조할 ConfigMap 이름
key: APP_COLOR # ConfigMap 안의 key 이름
# ConfigMap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_COLOR: blue
Volume mount
또 하나의 방법은 ConfigMap을 볼륨 마운트시키는 것이다.
먼저 아래처럼 ConfigMap을 실행한다.
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_COLOR: green
APP_MODE: production
그 다음 위 실행한 설정을 볼륨형태로 넣어주는 것이다.
apiVersion: v1
kind: Pod
metadata:
name: configmap-volume-pod
spec:
containers:
- name: app-container
image: busybox]
volumeMounts:
- name: config-volume
mountPath: /etc/config # 이 디렉토리에 파일로 마운트됨
volumes:
- name: config-volume
configMap:
name: app-config # 마운트할 ConfigMap 이
그럼 /etc/config 위치에 설정이 아래처럼 존재하게된다.
$ ls /etc/config
APP_COLOR
APP_MODE
$ cat /etc/config/APP_COLOR
green
$ cat /etc/config/APP_MODE
production
Comment