🚚 Guia de Migração: Legado (Droplet) para Kubernetes
Este guia descreve o processo utilizado para migrar serviços stateful (como n8n e Bots) de Droplets isolados para o Cluster Kubernetes.
Pré-requisitos
- Acesso
kubectlao cluster. - Acesso SSH ao Droplet de origem.
- Manifestos K8s preparados (Deployment, PVC, Service).
Passo a Passo
1. Preparação (Sem Downtime)
- Crie o PVC no Kubernetes.
- Aplique o Deployment com
replicas: 0(apenas para registrar, não subir). - Crie um Pod temporário de transferência (ex:
ubuntuoubusybox) que monte o PVC em/data.
# restore-pod.yaml
apiVersion: v1
kind: Pod
metadata: { name: restore, namespace: tools }
spec:
volumes: [{ name: data, persistentVolumeClaim: { claimName: n8n-pvc } }]
containers: [{ name: restore, image: ubuntu, command: ["sleep", "infinity"], volumeMounts: [{ mountPath: "/data", name: data }] }]
2. Janela de Manutenção (Com Downtime)
-
Parar o serviço no Droplet:
systemctl stop n8n # ou docker stop ...Isso garante a integridade do banco de dados (SQLite/arquivos).
-
Copiar os Dados: Use
scppara baixar do Droplet para sua máquina local (buffer) ekubectl cppara enviar para o Pod de restore.# Droplet -> Local
scp -r root@droplet:/var/lib/docker/volumes/n8n_data/_data/* ./temp_data/
# Local -> K8s PVC
kubectl cp ./temp_data/ tools/restore:/data/ -
Ajustar Permissões: No Pod de restore, ajuste o dono dos arquivos (ex:
1000:1000para node/n8n).kubectl exec -n tools restore -- chown -R 1000:1000 /data
3. Virada de Chave
- Deletar o Pod de Restore.
- Escalar o Deployment:
kubectl scale deployment n8n --replicas=1. - Validar Logs:
kubectl logs -f deployment/n8n. - Atualizar DNS: Aponte o domínio para o IP do Load Balancer (Ingress).
4. Limpeza
Após validar o funcionamento no K8s por 24h, o Droplet antigo pode ser desligado e, posteriormente, excluído (snapshot recomendado antes).