쿠버네티스는 YAML 파일과 설정값을 분리할 수 있는 컨피그맵과 시크릿이라는 오브젝트를 제공한다. 컨피그맵에는 일반적인 설정값을, 시크릿에는 노출되어서는 안되는 비밀값을 저장할 수 있다. 포드 생성을 위한 YAML 파일을 2개 만들지 않고 1개의 포드 YAML 파일을 사용하되 환경에 따라 다른 컨피그맵을 사용하면 된다
컨피그맵 생성 명령어
# kubectl create configmap <컨피그맵 이름> <설정값들>
컨피그맵 생성(1개의 키-값)
LOG_LEVEL 키의 값이 DEBUG인 컨피그맵을 생성해보자
# kubectl create configmap <컨피그맵명> --from-literal LOG_LEVEL=DEBUG
# kubectl describe configmap <컨피그맵명>
컨피그맵 생성(여러 개의 키-값)
--from-literal 옵션을 여러 번 사용함으로써 여러 개의 키-값을 설정할 수도 있다
# kubectl create configmap start-k8s --from-literal k8s=kubernetes \
> --from-literal container=docker
# kubectl describe configmap start-k8s
생성된 컨피그맵을 포드로 가져오기 위해서는 디플로이먼트 YAML 파일에서 포드 템플릿 항목에 컨피그맵을 사용하도록 정의하면 된다.
컨피그맵을 사용하는 포드를 생성하기 전에, 컨피그맵을 포드에서 어떻게 사용하는지를 보고 적절한 방법을 선택한다
1. 컨피그맵의 값을 포드 내부의 파일로 마운트해 사용
2. 컨피그맵의 데이터를 컨테이너의 환경 변수로 가져오기
컨피그맵의 데이터를 컨테이너의 환경 변수로 가져와서 사용하는 포드 생성을 위한 YAML 파일(env-from-configmap) 작성
포드 생성 및 환경변수 확인
# kubectl apply -f env-from-configmap.yaml
# kubectl exec container-env-example env
3개의 환경 변수가 포드의 컨테이너에 설정된 것을 확인할 수 있다
컨피그맵의 값을 포드 내부의 파일로 마운트해 사용하는 포드 생성을 위한 YAML 파일(volume-mount-configmap.yaml) 작성
*spec.volumes: 사용할 볼륨을 정의(여기서는 start-k8s라는 이름의 컨피그맵을 통해 "configmap-volume" 볼륨을 정의함)
*spec.containers.volumeMounts: spec.volume에서 정의한 볼륨을 컨테이너 내부의 어떤 디렉터리에 마운트할 것인지를 명시
포드 생성 및 디렉터리 조회
# kubectl apply -f volume-mount-configmap.yaml
# kubectl exec configmap-volume-pod ls /etc/config
컨피그맵에 저장돼 있던 두 개의 키-쌍 데이터(k8s-kubernetes, container-docker)가 /etc/config 디렉터리에 container와 k8s라는 키 이름이 파일로 존재하고 있다
파일로부터 컨피그맵 생성 및 조회
컨피그맵을 볼륨으로 포드에 제공할 때는 대부분 설정 파일 그 자체를 컨피그맵으로 사용하는 경우가 많기 때문에 쿠버네티스는 컨피그맵을 파일로부터 생성하는 기능을 제공한다
# kubectl create configmap <컨피그맵 이름> --from-file<파일 이름>
# echo hello, world! >> index.html
# kubectl create configmap index-file --from-file index.html
# kubectl describe configmap index-file
--from-file 옵션에서 별도의 키를 지정하지 않으면 파일 이름이 키로, 파일 내용이 값으로 저장된다. 여기서는 index.html이라는 키에 hello, world!라는 값이 설정되었다
'쿠버네티스' 카테고리의 다른 글
쿠버네티스 인그레스(Ingress) 생성 + SSL/TLS 보안 연결 (0) | 2021.05.03 |
---|---|
쿠버네티스 서비스(Service)를 이용해 포드를 외부에 노출 (0) | 2021.04.28 |
kops를 이용해 AWS에 쿠버네티스 설치 (0) | 2021.04.28 |
쿠버네티스 디플로이먼트(Delpoyment) 사용하기 (0) | 2021.04.27 |
구글 클라우드(GCP)에 쿠버네티스 연동하기 (0) | 2021.04.26 |