GitHub

https://github.com/Choidongjun0830

클라우드

Secret, ConfigMap

gogi masidda 2024. 12. 7. 23:13
  • 애플리케이션 코드에 설정 정보, 민감 정보를 두면 정보 변경 시, 이미지를 다시 빌드해야 한다.
  • 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