4.1 쿠버네티스에서 애플리케이션에 설정이 전달되는 과정
- ConfigMap과 Secret
- 적은양의 데이터 저장이 목적
환경변수
- 적은양의 데이터 저장이 목적
- 설정값을 저장하는 가장 기본적인 변수
[sleep.yaml] 기본 pod 배포
apiVersion: apps/v1
kind: Deployment
metadata:
name: sleep
spec:
selector:
matchLabels:
app: sleep
template:
metadata:
labels:
app: sleep
spec:
containers:
- name: sleep
image: kiamol/ch03-sleep
- 명령어 실습 ```shell master@master:~/study-kubernetes$ kubectl apply -f sleep.yaml deployment.apps/sleep created master@master:~/study-kubernetes$ kubectl get pods NAME READY STATUS RESTARTS AGE sleep-85fdd4cf75-rc7zh 1/1 Running 0 20s master@master:~/study-kubernetes$ kubectl wait –for=condition=Ready pod -l app=sleep pod/sleep-85fdd4cf75-rc7zh condition met
printenv : 환경변수 확인 명령어
master@master:~$ kubectl exec deploy/sleep – printenv HOSTNAME KIAMOL_CHAPTER sleep-85fdd4cf75-rc7zh command terminated with exit code 1
### [sleep-with-env.yaml] Deployment에서 파드 정의를 수정(환경변수 추가)
- KIAMOL_CHAPTER 환경변수의 정의 새로 추가
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: sleep
spec:
selector:
matchLabels:
app: sleep
template:
metadata:
labels:
app: sleep
spec:
containers:
- name: sleep
image: kiamol/ch03-sleep
env: # 환경 변수 정의
- name: KIAMOL_CHAPTER # 환경 변수 이름
value: "04" # 환경 변수 값
- 명령어 실습
master@master:~/study-kubernetes$ kubectl apply -f sleep-with-env.yaml deployment.apps/sleep configured master@master:~/study-kubernetes$ kubectl exec deploy/sleep -- printenv HOSTNAME KIAMOL_CHAPTER sleep-58bcd9564-j6xch 04
정리
- 간단한 설정같은 경우
POD정의
에 포함시켜도 나쁘지 않음 - 복잡한 설정같은 경우
ConfigMap
을 사용하는것이 적절
ConfigMap
- POD에서 읽어들이는 데이터를 저장하는 리소스
- 데이터 저장하는 형태는 제약없음
- 하나 또는 그 이상의 파드에 연결될 수 있는 독립된 리소스
[sleep-with-configMap-env.yaml] POD정의에서 ConfigMap 읽어들이기
apiVersion: apps/v1
kind: Deployment
metadata:
name: sleep
spec:
selector:
matchLabels:
app: sleep
template:
metadata:
labels:
app: sleep
spec:
containers:
- name: sleep
image: kiamol/ch03-sleep
env:
- name: KIAMOL_CHAPTER
value: "04"
- name: KIAMOL_SECTION
valueFrom:
configMapKeyRef:
name: sleep-config-literal
key: kiamol.section
- 명령어 실습
```shell
ConfigMap 생성
master@master:~/study-kubernetes$ kubectl create configmap sleep-config-literal –from-literal=kiamol.section=’4.1’ configmap/sleep-config-literal created
ConfigMap 내에 들어있는 데이터 수 확인
master@master:~/study-kubernetes$ kubectl get cm sleep-config-literal NAME DATA AGE sleep-config-literal 1 22h
ConfigMap 상세정보 출력
master@master:~/study-kubernetes$ kubectl describe cm sleep-config-literal
Name: sleep-config-literal
Namespace: default
Labels:
Data
kiamol.section: —- 4.1
Events:
#
master@master:~/study-kubernetes$ kubectl apply -f sleep-with-configMap-env.yaml
deployment.apps/sleep configured
POD 내에 환경변수 수정 확인
master@master:~/study-kubernetes$ kubectl exec deploy/sleep – sh -c ‘printenv | grep “^KIAMOL”’ KIAMOL_SECTION=4.1 KIAMOL_CHAPTER=04
---
# 4.2 ConfigMap에 저장한 설정파일 사용하기
```shell
# 환경 파일의 내용으로 ConfigMap 생성
kubectl create configmap sleep-config-env-file --from-env-file=ch04.env
# ConfigMap의 상세 정보 확인
kubectl get cm sleep-config-env-file
# 새로운 ConfigMap의 설정을 적용하여 POD 업데이트
kubectl apply -f sleep-with-configMap-env-file.yaml
# 컨테이너에 적용된 환경 변수의 값 확인
kubectl exec deploy/sleep -- sh -c 'printenv | grep "^KIAMOL"'
- 명령어 실습 ``` master@master:~/study-kubernetes$ kubectl create configmap sleep-config-env-file –from-env-file=ch04.env configmap/sleep-config-env-file created
master@master:~/study-kubernetes$ kubectl get cm sleep-config-env-file NAME DATA AGE sleep-config-env-file 3 3m10s
master@master:~/study-kubernetes/sleep$ kubectl apply -f sleep-with-configMap-env-file.yaml deployment.apps/sleep configured
master@master:~/study-kubernetes/sleep$ kubectl exec deploy/sleep – sh -c ‘printenv | grep “^KIAMOL”’ KIAMOL_EXERCISE=try it now KIAMOL_SECTION=4.1 KIAMOL_CHAPTER=04 ```