파드의 스토리지에 프로젝티드 볼륨(Projected Volume)을 사용하도록 구성

이 페이지는 프로젝티드 볼륨을 사용하여 여러 기존 볼륨 소스들을 동일한 디렉터리에 마운트하는 방법을 보여준다. 현재 시크릿(secret), 컨피그맵(configMap), downwardAPI, 그리고 서비스어카운트토큰(serviceAccountToken) 볼륨이 프로젝티드(projected)될 수 있다.

시작하기 전에

쿠버네티스 클러스터가 필요하고, 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
  1. 시크릿을 생성한다.

    # 유저네임과 패스워드를 포함한 파일들을 생성한다.
    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
    
  2. 파드를 생성한다.

    kubectl apply -f https://k8s.io/examples/pods/storage/projected.yaml
    
  3. 파드의 컨테이너가 정상적으로 실행되는지 확인한 다음, 파드에 대한 변경 사항을 확인한다.

    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
    
  4. 다른 터미널을 이용해, 실행 중인 컨테이너에 대한 셸을 가져온다.

    kubectl exec -it test-projected-volume -- /bin/sh
    
  5. 셸에서 projected-volume 디렉터리에 프로젝티드 소스들이 포함되어 있는지 확인한다.

    ls /projected-volume/
    

정리하기

파드와 시크릿을 제거한다.

kubectl delete pod test-projected-volume
kubectl delete secret user pass

다음 내용

최종 수정 June 20, 2024 at 12:44 PM PST: Sync changest from andygol/k8s-website (36d05bc8a1)