해당 문서의 쿠버네티스 버전: v1.25
Kubernetes v1.25 문서는 더 이상 적극적으로 관리되지 않음. 현재 보고있는 문서는 정적 스냅샷임. 최신 문서를 위해서는, 다음을 참고. 최신 버전.
파드의 스토리지에 프로젝티드 볼륨(Projected Volume)을 사용하도록 구성
이 페이지는 프로젝티드
볼륨을 사용하여 여러 기존 볼륨 소스들을
동일한 디렉터리에 마운트하는 방법을 보여준다. 현재 시크릿(secret)
, 컨피그맵(configMap)
, downwardAPI
,
그리고 서비스어카운트토큰(serviceAccountToken)
볼륨이 프로젝티드(projected)될 수 있다.
서비스어카운트토큰(serviceAccountToken)
은 볼륨 타입이 아니다.시작하기 전에
쿠버네티스 클러스터가 필요하고, kubectl 커맨드-라인 툴이 클러스터와 통신할 수 있도록 설정되어 있어야 한다. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 적어도 2개 포함된 클러스터에서 실행하는 것을 추천한다. 만약, 아직 클러스터를 가지고 있지 않다면, minikube를 사용해서 생성하거나 다음 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있다.
버전 확인을 위해서, 다음 커맨드를 실행kubectl version
.파드에 프로젝티드 볼륨을 구성
이 연습에서는 로컬 파일에 유저네임과 패스워드를 시크릿으로 생성한다. 이후 하나의 컨테이너를 포함한 파드를 생성하는 데, 이 때 시크릿을 동일한 공유 디렉터리에 마운트하기 위해 프로젝티드
볼륨을 사용한다.
다음은 파드의 구성 파일이다.
apiVersion: v1
kind: Pod
metadata:
name: test-projected-volume
spec:
containers:
- name: test-projected-volume
image: busybox:1.28
args:
- sleep
- "86400"
volumeMounts:
- name: all-in-one
mountPath: "/projected-volume"
readOnly: true
volumes:
- name: all-in-one
projected:
sources:
- secret:
name: user
- secret:
name: pass
시크릿을 생성한다.
# 유저네임과 패스워드를 포함한 파일들을 생성한다. echo -n "admin" > ./username.txt echo -n "1f2d1e2e67df" > ./password.txt # 생성한 파일들을 시크릿으로 패키징한다. kubectl create secret generic user --from-file=./username.txt kubectl create secret generic pass --from-file=./password.txt
파드를 생성한다.
kubectl apply -f https://k8s.io/examples/pods/storage/projected.yaml
파드의 컨테이너가 정상적으로 실행되는지 확인한 다음, 파드에 대한 변경 사항을 확인한다.
kubectl get --watch pod test-projected-volume
The output looks like this:
NAME READY STATUS RESTARTS AGE test-projected-volume 1/1 Running 0 14s
다른 터미널을 이용해, 실행 중인 컨테이너에 대한 셸을 가져온다.
kubectl exec -it test-projected-volume -- /bin/sh
셸에서
projected-volume
디렉터리에 프로젝티드 소스들이 포함되어 있는지 확인한다.ls /projected-volume/
정리하기
파드와 시크릿을 제거한다.
kubectl delete pod test-projected-volume
kubectl delete secret user pass
다음 내용
프로젝티드
볼륨에 대해 더 알아보기.- all-in-one 볼륨 디자인 문서를 읽기.