반응형
환경(dev, pord)에 따라 변하는 설정과 관련된 값들을 관리하는 Object
서비스 내에서 환경과 관련된 값들을 관리했을 때 단점
- 환경에 대한 값들이 서비스 내부에서 관리되면 바뀔때마다 이미지 전체를 관리해줘야 함
- 환경 값에 따라 다른 이미지가 만들어지기 때문에 많은 이미지를 저장, 관리해야 함
- 클러스터 내 다른 서비스에서 해당 값들에 대한 접근 불가
파일 저장 및 주입 방법
1. Env (Literal)
- 상수로 값을 저장
- secret의 값은 Base64 인코딩하여 저장 → pod에 주입 될 때 자동 디코딩
- secret이 메모리에 저장됨
- 1Mbyte까지 가능 → 너무 많이 생성하면 자원에 문제 일으킴
- File 방식보다 보안성 좋음
apiVersion: v1
kind: ConfigMap
metadata:
name: cm-dev
data:
SSH: 'false'
User: dev
apiVersion: v1
kind: Secret
metadata:
name: sec-dev
data:
Key: MTlzNA== # base64 encoded
apiVersion: v1
kind: Pod
metadata:
name: pod-1
spec:
containers:
- name: container
image: something
envFrom:
- configMapRef:
name: cm-dev
- secretReg:
name: sec-dev
2. Env (File)
- 파일에 값을 저장
- Key ⇒ 파일명, Value ⇒ 파일 내용
- pod에 주입시 key 값을 변경하여 주입 (확장자까지 key로 저장되기 때문)
- master의 console로 kubectl을 사용함
- 파일 내용이 Secret에 주입될 때 base64로 인코딩 되기 때문에 별도로 파일 내용 인코딩 X
$ kubectl create secret generic ...
- 한번 주입되면 파일 내용이 변경돼도 pod에 주입된 값이 변경되지 않음 (Async) → pod가 재생성 될 때 다시 주입
$ kubectl create configmap cm-file --from-file=./file-c.txt
$ kubectl create secret generic sec-file --from-file=./file-s.txt
apiVersion: v1
kind: Pod
metadata:
name: file
spec:
containers:
- name: container
image: something
env:
- name: file-c # key 변경
valueFrom:
configMapKeyRef:
name: cm-file
key: file-c.txt # 기존 key
- name: file-s
valueFrom:
secretKeyRef:
name: sec-file
key: file-s.txt
3. Volume Mount (File)
- 파일에 값을 저장
- Key ⇒ 파일명, Value ⇒ 파일 내용
- pod에 주입시 key 값을 변경하여 주입 (확장자까지 key로 저장되기 때문)
- master의 console로 kubectl을 사용함
- 파일 내용이 Secret에 주입될 때 base64로 인코딩 되기 때문에 별도로 파일 내용 인코딩 X
$ kubectl create secret generic ...
- 파일이 mount되어 있기 때문에 파일 내용이 변경되면 pod에 주입된 값도 변경 (Sync)
$ kubectl create configmap cm-file --from-file=./file-c.txt
$ kubectl create secret generic sec-file --from-file=./file-s.txt
apiVersion: v1
kind: Pod
metadata:
name: mount
spec:
containers:
- name: container
image: something
volumeMounts:
- name: file-volume
mountPath: /mount
volumes:
- name: file-volume
configMap:
name: cm-file
반응형
'Kubernetes' 카테고리의 다른 글
ReplicaSet, Replication Controller (0) | 2023.02.08 |
---|---|
Namespace / ResourceQuota / LimitRange (0) | 2023.02.08 |
Volume (0) | 2023.02.08 |
Service (0) | 2023.02.08 |
Pod (0) | 2023.02.08 |