logotype

Etepa 5 -Configurar Volumes com Longhorn

Leitura estimada: 2 minutos 2 views Colaboradores

Ótima escolha! 🎯 Longhorn é uma solução de armazenamento distribuído altamente integrada ao Kubernetes, ideal para workloads stateful como o PostgreSQL. Ele fornece:

  • Replicação de volumes (alta disponibilidade)
  • Snapshots e backups
  • Provisionamento dinâmico
  • Interface Web para gestão
  • Fácil instalação via Helm ou YAML

🚀 Passo a passo para instalar o Longhorn e usar com PostgreSQL

✅ Pré-requisitos:

  • Cluster Kubernetes (bare-metal ou VM, mínimo 3 nodes recomendados)
  • Todos os nodes devem ter:
    • Um disco disponível para Longhorn (pode ser um disco separado ou uma pasta montada via NFS/local)
    • Docker/containerd funcionando
    • Acesso entre si na rede (não pode usar nodes com storage separados sem rede privada entre eles)

1. Instalar Longhorn via Helm

📦 Adicione o repositório Helm:

helm repo add longhorn https://charts.longhorn.io
helm repo update

🧱 Instale o Longhorn no namespace longhorn-system:

kubectl create namespace longhorn-system

helm install longhorn longhorn/longhorn \
  --namespace longhorn-system

Isso instalará o Longhorn Manager, UI, Engine e outros componentes.


2. Acessar a interface do Longhorn (opcional)

Você pode usar um port-forward:

kubectl -n longhorn-system port-forward service/longhorn-frontend 8080:80

Depois acesse: http://localhost:8080

Ou expor via Ingress/LoadBalancer, se preferir.


3. Verificar StorageClass criado pelo Longhorn

kubectl get storageclass

Você verá algo como:

longhorn (default)

Se não for default, você pode definir:

kubectl patch storageclass longhorn -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

4. Criar PVC e PostgreSQL usando o Longhorn

🧾 PVC para PostgreSQL:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: longhorn
  resources:
    requests:
      storage: 10Gi

🐘 StatefulSet PostgreSQL:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: postgres
spec:
  selector:
    matchLabels:
      app: postgres
  serviceName: "postgres"
  replicas: 1
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
        - name: postgres
          image: postgres:15
          ports:
            - containerPort: 5432
              name: postgres
          env:
            - name: POSTGRES_USER
              value: user
            - name: POSTGRES_PASSWORD
              value: password
            - name: POSTGRES_DB
              value: mydb
          volumeMounts:
            - name: postgres-storage
              mountPath: /var/lib/postgresql/data
  volumeClaimTemplates:
    - metadata:
        name: postgres-storage
      spec:
        accessModes: ["ReadWriteOnce"]
        storageClassName: longhorn
        resources:
          requests:
            storage: 10Gi

5. Verificar que está tudo funcionando:

kubectl get pods
kubectl get pvc
kubectl get volumes.longhorn.io -n longhorn-system

Compartilhe este documento

Etepa 5 -Configurar Volumes com Longhorn

Ou copiar link

    CONTEÚDO