k8s

CKA 준비 (16) ConfigMap 운영

Joon0464 2022. 6. 11. 15:11

이 게시물은 아래 강의를 참고 하였습니다.
참고 강의 https://www.youtube.com/watch?v=KdATmTulf7s&list=PLApuRlvrZKojqx9-wIvWP3MPtgy2B372f&index=1 

 

 

이론)

- 컨테이너 마다 가지고 있는 configuration 정보를 별도의 ConfigMap에 key value 타입의 데이터 형태로 저장

예시

- Configuration 정보를 Mount를 통해 전달하거나 env를 통해 데이터를 컨테이너로 전달한다.

- Mount 를 통해 전달하면 value가 file로 전달되고 env를 통해 전달하면 value가 변수로 전달된다.

 

문제)

Expose Configuration settings

Task:

1. All operations in this question should be performed in the ckad namespace

2. Create a ConfigMap called web-config that contains the following two entries:

- connection_string=localhost:80

- external_url=cncf.io

3. Run a pod called web-pod with a single container running the nginx:1.19.8-alpine image, and expose these configuration settings as environment variables inside the container.

 

 

답안)

- namespace 생성
$ sudo kubectl create namespace ckad
https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#create-a-configmap 참고
- ckad namespace에 ConfigMap 생성
sudo kubectl create configmap web-config -n ckad --from-literal=connection_string=localhost:80 --from-literal=external_url=cncf.io
 

생성된 ConfigMap 확인
다음과 같이 Key Value 형태로 데이터가 입력된다.

- nginx pod 생성

https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#define-container-environment-variables-using-configmap-data 에서 확인

web-config ConfigMap에 있는 모든 데이터를 컨테이너의 환경변수로 설정하게됨

$ sudo kubectl run web-pod --image=nginx:1.19.8-alpine --port=80 --dry-run=client -o yaml > web-pod.yaml
$ sudo vi web-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: web-pod
  namespace: ckad
spec:
  containers:
  - image: nginx:1.19.8-alpine
    name: web-pod
    envFrom:
    - configMapRef:
        name: web-config
- pod 실행
$ sudo kubectl apply -f web-pod.yaml
- 상태 확인

환경 변수가 정상적으로 입력되어있다.