Section 5-2. ConfigMaps and Secrets
udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의 및 쿠버네티스 인 액션 (마르코 룩샤)를 참고하여 정리한 글입니다.
Section05. Application Lifecycle Management
ConfigMaps
- ConfigMap은 키-값 쌍으로 데이터를 저장하는 데 사용하는 API 오브젝트이다.
- 이러한 리소스를 활용하여 쿠버네티스 컨테이너에 설정 정보를 전달할 수 있다.
ConfigMap 생성 방법
- 명령어를 통해 ConfigMap을 생성하는 방식
1 2 3 4 5
kubectl create configmap <config-name> --from-literal=<key1>=<value1> \ --from-literal=<key2>=<value2> kubectl create configmap app-config --from-literal=APP_COLOR=blue \ --from-literal=APP_MODE=prod
- 파일을 통해 ConfigMap을 생성하는 방식
1 2 3 4 5 6 7 8 9
# config-map.yaml apiVersion: v1 kind: ConfigMap metadata: name: app-config data: APP_COLOR: blue APP_MODE: prod
1
kubectl create -f config-map.yaml
ConfigMap 조회하는 방법
- kubectl get configmaps
- kubectl describe configmaps
Pod에 생성한 ConfigMap을 적용하는 방법
- ConfigMap 전체를 적용하는 방법 ``` apiVersion: v1 kind: Pod metadata: name: simple-webapp-color labels: name: simple-webapp-color spec: containers:
- name: simple-webapp-color image: simple-webapp-color ports:
- containerPort: 8080 envFrom:
- configMapRef: name: app-config ```
- configMapRef를 통해 ConfigMap을 참조할 수 있다.
- name: simple-webapp-color image: simple-webapp-color ports:
- single key-value를 적용하는 방법
1 2 3 4 5 6 7 8
... 생략 env: - name: APP_COLOR valueFrom: configMapKeyRef: name: app-config key: APP_COLOR
Secrets
- ConfigMap과 유사하지만 민감한 데이터일 경우 Secret을 이용하여 value의 값을 인코딩한 포맷으로 저장할 수 있다.
Secret 생성 방법
- 명령어를 통해 Secret을 생성하는 방식
1 2 3 4
kubectl create secret generic <secret-name> --from-literal=<key>=<value> --from-literal=<key2>=<value2> kubectl create secret generic <secret-name> --from-file=<path-to-file>
- 파일을 통해 Secret을 생성하는 방식
1 2 3 4 5 6 7 8 9 10
# secret-data.yaml apiVersion: v1 kind: Secret metadata: name: app-secret data: DB_Host: <base64로 인코딩된 텍스트> DB_User: <base64로 인코딩된 텍스트> DB_Password: <base64로 인코딩된 텍스트>
1
kubectl create -f secret-data.yaml
- 이 때 base64로 인코딩된 값은
echo -n <value> | base64
명령어를 통해 얻을 수 있다.
- 이 때 base64로 인코딩된 값은
Secret 조회하는 방법
- kubectl describe secrets 는 value를 보여주지 않는다.
kubectl get secret <secret-name> -o yaml
명령어를 통해 secret의 value를 확인할 수 있다.
Pod에 생성한 Secret을 적용하는 방법
- Secret 전체를 적용하는 방법 ``` apiVersion: v1 kind: Pod metadata: name: simple-webapp-color labels: name: simple-webapp-color spec: containers:
- name: simple-webapp-color image: simple-webapp-color ports:
- containerPort: 8080 envFrom:
- secretRef: name: app-config ```
- secretRef 통해 Secret을 참조할 수 있다.
- name: simple-webapp-color image: simple-webapp-color ports:
- single key-value를 적용하는 방법
1 2 3 4 5 6 7 8
... 생략 env: - name: APP_COLOR valueFrom: secretKeyRef: name: app-config key: DB_Password
This post is licensed under CC BY 4.0 by the author.