Post

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

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!

Esta postagem está licenciada sob CC BY 4.0 pelo autor.