
안녕하세요. 이쁜이와 멋쟁이의 BTC_기범입니다.
오늘은 kubernetes에서 key, value 형태의 정보를 저장하는 데 사용할 수 있는
Secrets과 ConfigMap에 대해 알아보겠습니다.
Secrets
암호, 토큰 또는 키와 같이 타인에게 노출되는 것을 경계해야하는 키-값 쌍의 정보에 대해서 저장하는 객체입니다.
k8s 컨테이너에 환경변수로 적용하거나 Volume의 형태로 마운트시켜 사용할 수 있습니다.
ConfigMap
보안적으로 노출되어도 위험이 없는 키-값 쌍의 정보에 대해서 저장하는 객체입니다.
secrets와 같이 k8s 컨테이너에 환경변수로 적용하거나 Volume의 형태로 마운트 시켜 사용할 수 있습니다.
Mount를 통해 사용하기
Secrets Mount
# Secrets 생성
kubectl create secret generic mount-secret --from-literal=testmount=job
# mount
# 아래 내용의 yaml 생성 후 실행
apiVersion: v1
kind: Pod
metadata:
name: secret-test-pod
spec:
containers:
- name: test-container
image: nginx
volumeMounts:
- name: secret-volume
mountPath: /etc/secret-volume
volumes:
- name: secret-volume
secret:
secretName: mount-secret
ConfigMap Mount
# ConfigMap 생성
kubectl create configmap mount-configmap --from-literal=testmount=job
# mount
# 아래 내용의 yaml 생성 후 실행
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: test-container
image: busybox
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: mount-configmap
환경변수를 통해 사용하기
Secrets Env
# Secrets 생성
kubectl create secret generic env-secret --from-literal=testenv=good
# env에 포함
# 아래 내용의 yaml 생성 후 실행
apiVersion: v1
kind: Pod
metadata:
name: test-secret-2
spec:
containers:
- name: test-container
image: nginx
env:
- name: good
valueFrom:
secretKeyRef:
name: env-secret
key: testenv
ConfigMap Env
# ConfigMap 생성
kubectl create configmap env-configmap --from-literal=testenv=job
# mount
# 아래 내용의 yaml 생성 후 실행
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: test-container
image: busybox
env:
- name: TEST_ENV
valueFrom:
configMapKeyRef:
name: env-configmap
key: testenv
지금까지 Secrets와 ConfigMap에 대해 알아보았습니다.
여러 파드들에 교차되어 공통적으로 사용되는 키-값 데이터에 대해 저장, 사용을 통해
좀 더 효율적인 k8s 운영을 하시데 도움이 되었으면 좋겠습니다.
다음에 또 봬요~!

댓글