본문 바로가기
네트워크/k8s

[k8s] 9. ConfigMap, Secret - 실습

by Lauren X Ming 2021. 2. 8.

ConfigMap, Secret 실습

1. Env(Literal)

ConfigMap YAML

apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-dev
data:
  SSH: 'false'
  User: dev
  • key, value는 모두 string이니까 '을 넣어야 함

Secret YAML

apiVersion: v1
kind: Secret
metadata:
  name: sec-dev
data:
  Key: MTIzNA==
  • key에 들어갈 value는 base64 인코딩해야 함

Pod YAML

apiVersion: v1
kind: Pod
metadata:
  name: pod-1
spec:
  containers:
  - name: container
    image: kubetm/init
    envFrom:
    - configMapRef:
        name: cm-dev
    - secretRef:
        name: sec-dev
  • 환경변수로 cm-dev, sec-dev 설정

실습 과정

  1. ConfigMap, Secret, Pod 생성
  2. pod-1 shell에서 env 확인 --> key 값 나오넹

2. Env(File)

ConfigMap 생성 명령어

echo "Content" >> file-c.txt
kubectl create configmap cm-file --from-file=./file-c.txt

Secret 생성 명령어

echo "Content" >> file-s.txt
kubectl create secret generic sec-file --from-file=./file-s.txt
  • create secret 할 때, 파일에 있는 내용을 base64 인코딩을 함

Pod YAML

apiVersion: v1
kind: Pod
metadata:
  name: pod-file
spec:
  containers:
  - name: container
    image: kubetm/init
    env:
    - name: file-c
      valueFrom:
        configMapKeyRef:
          name: cm-file
          key: file-c.txt
    - name: file-s
      valueFrom:
        secretKeyRef:
          name: sec-file
          key: file-s.txt
  • 환경변수에서 key를 파일 이름으로 매핑시킴

실습 과정

  1. Master에 들어가서 위에 명령어 입력으로 ConfigMap, Secret 생성
  2. 대시보드에서 컨피그 맵, 시크릿에 생성됐는지 확인 --> 생겼당, 키는 파일이름, 내용은 Content
  3. Pod 생성 후 컨테이너 shell에서 env 확인 --> 생겼당

  • file-s=Content 싱기

3. Volume Mount(File)

Pod YAML

apiVersion: v1
kind: Pod
metadata:
  name: pod-mount
spec:
  containers:
  - name: container
    image: kubetm/init
    volumeMounts:
    - name: file-volume
      mountPath: /mount
  volumes:
  - name: file-volume
    configMap:
      name: cm-file

실습 과정

  1. Pod 생성 --> shell에서 다음 명령어 수행
cd /mount
ls
cat *

요러캐 나옴

  1. 컨피그 맵에서 file-c.txt의 value를 Content --> Content123으로 수정
  2. pod-file(Env file)의 env와 pod-mount의 mount1 디렉토리의 파일 내용 비교

pod-file(삭제 전)

  • 이전 값 그대로 Content

pod-file(삭제 후 재생성)

  • 삭제하고 재생성하니 변함

pod-mount

  • 파드를 삭제 후 재생성하지도 않았는데 ConfigMap 변한게 그대로 반영 됨

출처

인프런 - 대세는 쿠버네티스