쿠버네티스는 YAML 파일과 설정값을 분리할 수 있는 컨피그맵(Configmap)과 시크릿(Secret)이라는 오브젝트를 제공한다. 컨피그맵에는 설정값을, 시크릿에는 노출되어서는 안 되는 비밀값을 저장할 수 있다.
컨피그맵을 사용하지 않으면 환경에 따라 YAML 파일에 환경 변수를 각각 정의해 두 개의 YAML 파일을 만들어야 한다.
하지만 컨피그맵을 사용하면 1개의 YAML 파일만을 사용하여 환경에 따라 다른 컨피그맵을 생성해 사용하면 된다. 즉, 환경 변수 설정값까지 쿠버네티스 오브젝트에서 관리할 수 있으며, 이러한 설정값 또한 YAML 파일로 포드와 함께 배포할 수 있다.
따라서 애플리케이션과 설정값을 별도로 관리할 수 있다는 장점이 있다.
일반적인 설정값을 담아 저장할 수 있는 쿠버네티스 오브젝트
네임스페이스 별로 컨피그맵이 존재한다.
👉 컨피그맵을 포드에서 사용하는 방법
SSH 키, 비밀번호 등과 같이 민감한 정보를 저장하기 위한 용도
네임스페이스에 종속되는 오브젝트
컨피그맵과 사용 방법이 매우 비슷하지만, 민감한 정보를 저장하기 위해 좀 더 세분화된 사용 방법을 제공한다.
시크릿에 값을 저장할 때, 쿠버네티스가 기본적으로 base64로 값을 인코딩한다. 따라서 YAML 파일로부터 시크릿을 생성할 때에도 데이터의 값에 base64로 인코딩이 된 문자열을 사용해야 한다.
시크릿은 데이터의 사용 목적에 따라 몇 가지 종류로 나뉜다.
👉 Opaque 타입의 시크릿
별도의 종류를 명시하지 않으면 자동으로 설정되는 타입
일반적인 목적의 시크릿 (generic)
👉 docker-registry 타입의 시크릿
비공개 이미지 레지스트리에 접근할 때 사용하는 인증 설정 시크릿
디플로이먼트 또는 포드 등에서 사설 레지스트리로부터 이미지를 받아올 때 사용할 수 있다.
👉 tls 타입의 시크릿
TLS 연결에 사용되는 공개키, 비밀키 등을 쿠버네티스에 자체적으로 저장할 수 있도록 tls 타입을 지원
포드 내부의 애플리케이션이 보안 연결을 위해 인증서나 비밀키 등을 가져와야 할 때 시크릿의 값을 포드에 제공하는 방식으로 사용 가능
✔️ Kustomize
YAML 파일의 속성을 별도로 정의해 재사용하거나 여러 YAML 파일을 하나로 묶는 등 다양한 용도로 사용할 수 있는 기능.
시크릿이나 컨피그맵을 배포하기 위해 YAML 파일을 작성할 때, 데이터를 YAML 파일로부터 분리하는 용도로 사용이 가능하다. (YAML 파일과 데이터가 분리되지 않으면 데이터를 관리하기에 불편하기 때문)
[출처] 시작하세요! 도커/쿠버네티스 (용찬호 지음)