쿠버네티스/기초
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
실습 순입니다. (그대로 가져왔습니다.)