쿠버네티스를 사용하면 컨테이너 애플리케이션이 클러스터 안의 어디에서 움직이고 있는지를 의식할 필요가 없어집니다. 그런데 애플리케이션이 공통으로 이용하는 환경변수 등을 컨테이너 안에 넣어버리면 환경이 바뀔 때 마다 이미지를 만들어야 하므로 번거롭습니다.
쿠버네티스에서는 이런 애플리케이션 정보를 일원 관리하는 장치가 있습니다.
컨피그맵(ConfigMap)
컨피그맵은 애플리케이션의 설정 정보, 구성 파일, 명령 인수, 포트 번호, 애플리케이션 고유의 식별 정보 등을 포드에서 참조할 수 있도록 해 주는 장치입니다. Key-Value 형으로 정보를 관리할 수 있습니다. 예를 들어 Nignx의 설정 파일 등 각 컨테이너에서 공통으로 만들고 싶은 것을 등록하여 일원 관리합니다.
컨피그맵의 정보는 볼륨으로서 마운트할 수 있으므로 컨테이너 애플리케이션에서 봤을 때 보통의 파일로 취급할 수 있습니다. 또 환경변수로 취급할 수도 있습니다.
ConfigMap 구성 예시
apiVersion: v1
kind: ConfigMap
metadata:
name: cm-dev
data:
SSH: 'false'
User: dev
시크릿(Secrets)
시크릿은 컨피그맵과 마찬가지로 구성 정보를 컨테이너 애플리케이션에 전달하기 위한 것이지만, DB와 연결할 때 비밀번호나 OAuth 토큰과 같은 기밀성이 높은 정보를 관리할 때 이용합니다.
바이너리 데이터도 저장할 수 있도록 데이터를 base64로 인코딩해야합니다. 시크릿의 데이터는 메모리 상(tmpfs)에 전개되어 디스크에는 기록되지 않는다는 특징을 갖고 있습니다. 또 쿠버네티스 1.7 이후 버전에서는 암호화되어 etcd로 관리됩니다. 프라이빗 컨테이너 이미지로부터 이미지를 다운로드할 때 인증 정보를 전달하는 경우에 사용합니다.
Secret 구성 예시
apiVersion: v1
kind: Secret
metadata:
name: sec-dev
data:
Key: MTIzNA==
ConfigMap과 Secret의 내용을 환경 변수로 가지는 Pod
apiVersion: v1
kind: Pod
metadata:
name: pod-1
spec:
containers:
- name: container
image: kubetm/init
envFrom:
- configMapRef:
name: cm-dev
- secretRef:
name: sec-dev
참고 서적
http://www.yes24.com/Product/Goods/78875805
'About > Kubernetes' 카테고리의 다른 글
[k8s] Volume - (emptyDir, hostPath, PV/PVC) (0) | 2022.01.06 |
---|---|
[k8s] 매니페스트 파일 작성 방법 (0) | 2022.01.04 |
[k8s] Service - (ClusterIP, NodePort, LoadBalancer) (0) | 2022.01.04 |
[k8s] Pod의 특징 (Container, Label, NodeSelector) (0) | 2022.01.04 |
[k8s] 쿠버네티스의 서버 구성(마스터와 노드) (1) | 2021.12.30 |