Tools/Kubernetes

[CKA 도전 시리즈] 9. Configmap / Secret

MOMOBOB 2023. 1. 26. 22:54
반응형

ConfigMap

컨테이너에 필요한 환경설정을 컨테이너와 분리해서 제공하는 기능.

 

ConfigMap 생성

kubectl create configmap <name> [--from-file=source] [--from-literal=key=value]

# 예
kubectl create configmap config-dev --from-literal=DB_URL=localhost

 

예제

1. 아래 변수를 가지는 config-dev라는 이름의 ConfigMap을 생성하시오.

2. 생성한 ConfigMap의 변수를 web-server라는 이름의 Nginx컨테이너에 할당하시오.

  • DB_USER: myuser
  • DB_PASS : mypass

풀이

1. ConfigMap 생성

kubectl create configmap config-dev --from-literal=DB_USER=myuser --from-literal=DB_PASS=mypass

kubectl describe configmap config-dev

 

2. nginx 파트 생성 yaml

apiVersion: v1
kind: Pod
metadata:
  name: web-server
spec:
  containers:
  - image: nginx
    name: web-server
    env:
    - name: DB_USER
      valueFrom:
        configMapKeyRef:
          name: config-dev
          key: DB_USER
    - name: DB_PASS
      valueFrom:
        configMapKeyRef:
          name: config-dev
          key: DB_PASS

 

 

반응형

 

Secret

ConfigMap : 컨테이너 구성 정보를 한 곳에 모아서 관리
Secret : 컨테이너가 사용하는 password, auth, ssh key와 같은 중요한 정보를 저장하고 민감한 구성정보를 base64로 인코딩해서 한 곳에 모아서 관리

 

kubectl create secret generic <name> [--from-file=source] [--from-literal=key=value]

# 예
kubectl create secret generic config-dev --from-literal=DB_PASS=mypass
  • 생성 예
kubectl create secret generic db-user-pass \
    --from-literal=username=admin \
    --from-literal=password='S!B\*d$zDsb='
    
kubectl describe secret db-user-pass
  • 아래와 같이 text가 보이지 않음
Name:            db-user-pass
Namespace:       default
Labels:          <none>
Annotations:     <none>

Type:            Opaque

Data
====
password:    12 bytes
username:    5 bytes
  • 실제로 아래와 같이 Base64로 인코딩된 값으로 저장된다 (암호화 된것 아님)
{"password":"UyFCXCpkJHpEc2I9","username":"YWRtaW4="}

 

생성한 Secret사용하기

  • 파드 생성 yaml
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: nginx
    volumeMounts:
    - name: foo
      mountPath: "/secret"
  volumes:
  - name: foo
    secret:
      secretName: db-user-pass

 

끝.

 


Thank you!

 

 

반응형