쿠버네티스/기초

ConfigMap, Secret (기초)

라리음 2022. 8. 5. 14:47

이 글은 인프런의 대세는 쿠버네티스 강의를 보며 정리한 글입니다

 

 

 

 

개발환경과 상용환경에 이미지 키 값을 바꿔야 함.

 

 

 

분리해야하는 일반적인 상수를 모아서 Config Map을 만들고

 

관리해야하는 Key 값을 모아 Secret을 만들어줌

 

그리고 Env로 원하는 환경 변수를 당기는 원리.

 

 

 

 

일반적인 object들은 k8s DB에 저장되는데 secret은 메모리에 저장이 됨.

 

 

 

 

* file로 만들면 한번 주입 후 수정해도 pod의 설정이 안바뀜.

* mount를 하면 계속 참조를 하고 있기 때문에 수정을 하면 pod의 설정도 계속 바뀜.

 

 

 

 

실습

 

 

 

Env (Literal)

 

 

1-1) ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-dev
data:
  SSH: 'false'
  User: dev

1-2) Secret

apiVersion: v1
kind: Secret
metadata:
  name: sec-dev
data:
  Key: MTIzNA==

1-3) Pod

apiVersion: v1
kind: Pod
metadata:
  name: pod-1
spec:
  containers:
  - name: container
    image: kubetm/init
    envFrom:
    - configMapRef:
        name: cm-dev
    - secretRef:
        name: sec-dev

 

 

2. Env (File)


2-1) Configmap

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

2-2) Secret

echo "Content" >> file-s.txt
kubectl create secret generic sec-file --from-file=./file-s.txt

2-3) Pod

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



3. Volume Mount (File)


3-1) Pod

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

 

 

실습 순입니다. (그대로 가져왔습니다.)