ConfigMap은 환경 설정 값이나 설정 파일 등을 Key-Value 형태로 저장하여 애플리케이션이 외부 설정을 동적으로 주입받을 수 있게 해주는 Kubernetes 오브젝트입니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
APP_ENV: production
LOG_LEVEL: debug
envFrom:
- configMapRef:
name: my-config
env:
- name: APP_ENV
valueFrom:
configMapKeyRef:
name: my-config
key: APP_ENV
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: my-config
Secret은 설정값을 Base64 인코딩하여 저장하는 Object입니다.
apiVersion: v1
kind: Secret
metadata:
name: my-secret
type: Opaque
stringData:
DB_PASSWORD: s3cr3t
TOKEN: abcdefg1234567
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: my-secret
key: DB_PASSWORD
volumeMounts:
- name: secret-volume
mountPath: /etc/secret
volumes:
- name: secret-volume
secret:
secretName: my-secret
ConfigMap 설정만 추가 후 Deployment에 반영하면 pod 재기동 후 변경 설정 반영 가능
apiVersion: v1
kind: ConfigMap
metadata:
name: myapp-config
data:
SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE: "100MB"
SPRING_SERVLET_MULTIPART_MAX_REQUEST_SIZE: "100MB"
spec:
template:
spec:
containers:
- name: myapp-container
image: myapp:latest
envFrom:
- configMapRef:
name: myapp-config
kubectl apply -f myapp-configmap.yaml
kubectl rollout restart deployment myapp