<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=<efs id> \
--set nfs.path=/ \
-n nfs-client
동적 프로비저닝 기능을 사용하면 자동으로 PVC를 생성해주기 때문에 별도로 PVC를 만들 필요가 없다.
storageClassName은 위에서 만든 이름을 넣어준다.
kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: task-pv-claim
namespace: argo
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1000Gi
EOF
pvc는 위에서 만든 task-pv-claim를 넣어주었다.
이제 pod 내부의 /var/www경로는 efs와 마운트된다.
kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: nginx-nfs-pvc-test
spec:
containers:
- image: maersk/nginx
imagePullPolicy: Always
name: nginx
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- name: workdir
mountPath: /var/www
volumes:
- name: workdir
persistentVolumeClaim:
claimName: task-pv-claim
EOF