- 애플리케이션 코드에 설정 정보, 민감 정보를 두면 정보 변경 시, 이미지를 다시 빌드해야 한다.
- Secret과 ConfigMap에 각각 민감 정보와 설정 정보를 두면, 정보를 변경해도 이미지를 다시 빌드하지 않아도 된다.
- ConfigMap 정보와 Secret 정보는 etcd에 저장되어, API 서버를 통해 접근해야 한다.
- 환경 변수 방식이 있고, 볼륨 마운트 방식이 있다.
- 환경 변수 방식은 Pod가 실행 중에 변경 시 재시작이 필요하다.
- 볼륨 방식은 Pod가 실행 중에 변경시 재시작이 필요하지 않다.
- 이를 위해서는 애플리케이션이 디스크에 있는 configuration file을 보고 있어야 한다. 이것이 불가능하면 도와주는 side-car container를 같이 돌린다.
ConfigMap: 외부 Configuration 정보를 담고 있다.
Secret: 민감 정보를 담고 있다. Base64로 인코딩되어 있고, 개별적인 암호화 방식이 필요하다.
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
env:
- name: USER
valueFrom:
secretKeyRef:
- name: mysecret
key: dbuser
- name: PASS
valueFrom:
secretKeyRef:
- name: mysecret
key: dbkey
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
env:
- name: USER
valueFrom:
configMapKeyRef:
- name: myconfig
key: dbuser
- name: PASS
valueFrom:
configMapKeyRef:
- name: myconfig
key: dbkey
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: creds
mountPath: /etc/secrets
volumes:
- name: creds
secret:
secretName: mysecret
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: configs
mountPath: /etc/configmap
volumes:
- name: configs
configMap:
name: configmap
728x90
'클라우드' 카테고리의 다른 글
환경 변수 (2) | 2024.11.28 |
---|---|
Rolling Updates and Rollbacks (0) | 2024.11.28 |
Kube-proxy (0) | 2024.11.23 |
API Server (0) | 2024.11.22 |
DOCKER VS CONTAINERD (0) | 2024.11.22 |