컨피그맵과 비밀값으로 애플리케이션 설정하기



  • Category : 쿠버네티스-교과서
  • Tag : kubernetes


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: Annotations:

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 ```


Share this post