Como criar um StorageClass NFS dinâmico com Helm e usar em Deployments
Como criar um StorageClass NFS dinâmico com Helm e usar em Deployments
Crie um StorageClass NFS dinâmico com Helm e consuma via PVC em um Deployment. Ajuste IPs e paths para o seu servidor NFS.
Prerequisites
Antes de começar, tenha:
- Cluster Kubernetes rodando.
- Helm instalado e configurado para o cluster.
- Servidor NFS com diretórios já criados para o Kubernetes usar.
Se precisar do Helm, siga o guia oficial.
Step 1: Add the NFS Subdir External Provisioner Helm Repository
Adicione o repositório do chart NFS Subdir External Provisioner:
1
2
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm repo update
Step 2: Create a Dynamic NFS StorageClass
Com o repositório adicionado, instale o chart e defina servidor e path NFS. Valores abaixo usam paths separados para prod/hom.
Produção:
1
2
3
4
5
6
7
8
9
10
11
export KUBECONFIG=k8s/k8s-config
helm install nfs-subdir-external-provisioner-prod nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set nfs.server=192.168.1.56 \
--set nfs.path=/app-prod \
--set storageClass.name=nfs-storage-class-prod \
--set storageClass.provisionerName=k8s-sigs.io/nfs-storage-class-prod-provisioner \
--set storageClass.pathPattern='app-prod' \
--set storageClass.allowVolumeExpansion=true \
--set storageClass.reclaimPolicy=Retain \
--set storageClass.accessModes=ReadWriteMany
Homologação:
1
2
3
4
5
6
7
8
9
10
11
export KUBECONFIG=k8s/k8s-config
helm install nfs-subdir-external-provisioner-hmg nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set nfs.server=192.168.1.23 \
--set nfs.path=/app-hom \
--set storageClass.name=nfs-storage-class-hmg \
--set storageClass.provisionerName=k8s-sigs.io/nfs-storage-class-hmg-provisioner \
--set storageClass.pathPattern='app-hom' \
--set storageClass.allowVolumeExpansion=true \
--set storageClass.reclaimPolicy=Retain \
--set storageClass.accessModes=ReadWriteMany
Step 3: Create a PersistentVolumeClaim (PVC)
Crie um PVC usando o StorageClass:
PVC for Homologation:
1
2
3
4
5
6
7
8
9
10
11
12
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: hmg-pvc
namespace: homolog
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: nfs-storage-class-hmg
Aplique o PVC:
1
kubectl --kubeconfig=k8s/k8s-config apply -f hmg-pvc.yaml
Step 4: Use the PVC in a Deployment
Use o PVC em um Deployment:
Deployment Example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
apiVersion: apps/v1
kind: Deployment
metadata:
name: hmg-app
namespace: homolog
spec:
replicas: 1
selector:
matchLabels:
app: hmg-app
template:
metadata:
labels:
app: hmg-app
spec:
containers:
- name: app-container
image: nginx:latest
volumeMounts:
- mountPath: "/data"
name: hmg-storage
volumes:
- name: hmg-storage
persistentVolumeClaim:
claimName: hmg-pvc
Aplique o Deployment:
1
kubectl --kubeconfig=k8s/k8s-config apply -f hmg-deployment.yaml
Conclusion
Agora você tem StorageClasses NFS dinâmicos para múltiplos ambientes, além de PVC e Deployment consumindo-o. Ajuste IPs, paths e políticas conforme seu cluster e modelo de storage.
We hope this tutorial has been helpful. If you have any questions or suggestions, please leave a comment below!