#Plain Key Value
env:
- name: APP_COLOR
value: pink
#ConfigMap
env:
- name: APP_COLOR
valueFrom:
configMapKeyRef:
name: configmapname
#Secret
env:
- name: APP_COLOR
valueFrom:
secretKeyRef:
ConfigMap
- 설정할게 많을 경우에는 Pod yaml에 하나하나 적기 번거로움
- 다른 파일에서 가져와서 Pod에 추가할 수 있고, ConfigMap에서 한꺼번에 관리 가능
- 키 - 값으로 구성됨
- Pod가 생성되면 키 - 값 쌍이 환경변수로 사용될 수 있게 함
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_COLOR: blue
APP_MODE: prod
키: 값
ConfigMap Data 보기
kubectl describe configmap <configmap name>
ConfigMap data 전체 Pod에 넣기
envFrom:
configMapRef:
name: app-config
ConfigMap data 몇개만 Pod에 넣기
env:
- name: APP_COLOR
valueFrom:
configMapKeyRef:
name: app-config
key: APP_COLOR
Volume으로 넣기
volumes:
- name: app-config-volume
configMap:
name: app-config
Secrets
- ConfigMap과 비슷하지만, 더 민감한 정보를 저장
kubectl create secret generic <secret name> --from-literal=DB_Host=mysql ...
- 위처럼 생성할 수 있지만, 너무 많으면 secret.yaml을 만들기
apiVersion: v1
kind: Secret
metadata:
name: app-secret
data:
DB_HOST: mysql
DB_USER: root
...
- echo -n 'mysql' | base64 처럼 base64로 인코딩 필요
- echo -n 'mysql' | base64 --decode 로 디코딩
apiVersion: v1
kind: Pod
metadata:
name: simple-webapp-color
labels:
name: simple-webapp-color
spec:
containers:
- name: simple-webapp-color
image: simple-webapp-color
ports:
- containerPort: 8080
envFrom:
- secretRef:
name: app-secret
envFrom:
- secretRef:
name: app-config
---
env:
- name: DB_password
valueFrom:
secretKeyRef:
name: app-secret
key: DB_Password
---
volumes:
- name: app-secret-volume
secret:
secretName: app-secret
- 인코딩된것이지 암호화된 것이 아니다.
- 디코딩하면 아무나 볼 수 있다.
- 별도의 암호화 도구가 필요함.
728x90
'클라우드' 카테고리의 다른 글
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 |
Kubernetes Principles (0) | 2024.10.15 |