NFS Subdir External Provisioner 설치하기

<aside> 💡 helm이 설치되어 있어야 함

</aside>

참고: Github

nfs-client namespace 생성하기

kubectl create ns nfs-client

helm으로 설치한다.

helm repo add nfs-subdir-external-provisioner <https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/>
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
    --set nfs.server=192.168.0.51 \
    --set nfs.path=/mnt/share \
		-n nfs-client

그러면 아래와 같이 storage class가 생성된다.

Untitled

PVC 정의

동적 프로비저닝 기능을 사용하면 자동으로 PVC를 생성해주기 때문에 별도로 PVC를 만들 필요가 없다.

storageClassName은 위에서 만든 이름을 넣어준다.

kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
  namespace: nfs-client
spec:
  storageClassName: nfs-client
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi
EOF

WorkflowTemplate에서 PVC 사용하기

위에서 만든 pvc를 먼저 정의한다. pvc와 같은 namespace이어야 한다.

mountPath는 nfs에서 마운트한 볼륨으로 정의한다.

apiVersion: v1
kind: Pod
metadata:
  name: nginx-task-pvc-test
  namespace: argo
spec:
  containers:
  - image: maersk/nginx
    imagePullPolicy: Always
    name: nginx
    ports:
    - containerPort: 80
      protocol: TCP
    volumeMounts:
    - name: workdir
      mountPath: /dataset
  volumes:
  - name: workdir
    persistentVolumeClaim:
      claimName: task-pv-claim

그러면 아래와 같은 경로로 데이터들이 저장된다.

<mount volume path>/<name space>-<PVC name>-<uuid>

예시