Testando o Veeam Kasten com K3s e Longhorn – Parte 3

Testando o Veeam Kasten com K3s e Longhorn – Parte 3

A ideia desse artigo é mostrar passo a passo uma forma simplificada e rápida de fazer deploy do K3s com Longhorn e usar o Veeam Kasten para proteger a carga de trabalho que está sendo executada no Kubernetes. É importante frisar que todas as escolhas de design e arquitetura aqui descritas foram pensadas para ser o mais simples possível, com o objetivo bem claro de ter um ambiente funcional para testes da solução de proteção de dados para Kubernetes da Veeam. Não recomendo repetir esses passos para ambientes produtivos.

Para facilitar a leitura, separei o artigo em três partes.

Parte 1 – Instalação e configuração do K3s e Longhorn
Parte 2 – Instalação e configuração básica do Veeam Kasten
Parte 3 – Configuração de politicas de backup no Veeam Kasten (você está aqui)


Agora que já temos o básico para que o Veeam Kasten funciona corretamente, vamos criar uma aplicação para efetuar os testes de backup e restore. A ideia é manter o mesmo padrão e criar um deploy de apache bem simples. Quero proteger o artefato de forma completa, desde o deployment e serviço, até o volume persistente, ingress, secrets, namespace etc. Basta executar o comando abaixo para fazer deploy desse apache. Lembre-se de ajustar com os detalhes pertinentes ao seu ambiente.

kubectl create namespace apache-test

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: apache-html-pvc
  namespace: apache-test
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 200Mi
  storageClassName: longhorn-single-replica
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: apache-test
  namespace: apache-test
spec:
  selector:
    matchLabels:
      app: apache-test
  template:
    metadata:
      labels:
        app: apache-test
    spec:
      containers:
      - name: apache
        image: httpd:2.4
        ports:
        - containerPort: 80
        volumeMounts:
        - name: apache-html
          mountPath: /usr/local/apache2/htdocs
      volumes:
      - name: apache-html
        persistentVolumeClaim:
          claimName: apache-html-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: apache-test
  namespace: apache-test
spec:
  selector:
    app: apache-test
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: apache-test-ingress
  namespace: apache-test
spec:
  ingressClassName: traefik
  rules:
  - host: test1.caverna.local
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: apache-test
            port:
              number: 80
EOF

Só para enfeitar um pouco, vamos personalizar a página inicial do apache com o comando abaixo:

kubectl exec -n apache-test -it deploy/apache-test -- bash -c 'echo "<h1>Veeam Kasten</h1>" > /usr/local/apache2/htdocs/index.html'

Se tudo foi criado corretamente, então basta abrir o endereço no navegador.

Se navegar no menu esquerdo Application no Veeam Kasten, provavelmente verá o apache-test, default e longhorn-system, todos com a coluna compliance Unmaneged. Ou seja, não está sendo protegido pelo Kasten. No apache-test, clique no três pontos e Create a Policy.

Para testar, vamos manter quase tudo no padrão. Vamos alterar apenas a opção Enable Backups via Snapshot Exports, onde o objetivo é que todos os snapshots sejam enviados para o repositório NFS e use a mesma retenção aplicada ao snapshot.

Esse é um ponto interessante, pois existem configurações de retenção para o snapshot e para os backups que vão para o repositório em si. Sem marcar essa opção e selecionar o repositório, como resultado você teria apenas snapshots e não backups. Após criar a politica ela fica disponível no menu Policies. É esperado que você veja Valid no campo Validation, que o recurso protegido esteja correto e que a ação (Snapshot + Export) esteja correta também.

Agora navegando no menu Applications é possível observar que o apache-test está Compliant, ou seja, está sendo protegido pelo Veeam Kasten.

Perfeito, agora temos uma politica que protege o apache-test. Podemos restaurar a partir do snapshot ou a partir do backup que está armazenado no NFS. Como mostra a imagem abaixo, já concluimos com sucesso o primeiro backup.

Muito bonito, tudo verdinho 🙂 mas eu quero validar se consigo restaurar tudo no caso de perder a minha aplicação inteira. Afinal de contas, é isso que a Veeam faz de melhor. Então, vamos destruir o apache-test por completo: deployment, services, namespace, tudo. Basta executar o código apocalíptico abaixo:

kubectl delete all --all -n apache-test
kubectl delete ingress apache-test-ingress -n apache-test
kubectl delete pvc apache-html-pvc -n apache-test
kubectl delete namespace apache-test

Se eu navegar até Applications não consigo mais ver o apache-test, mas se for até Restore Points, é possível ver dois tipos: Exported e Snapshot. Adivinha qual dos dois vai me salvar agora?

Se você falou exported, acertou em cheio! É esse o ponto de restauração que está armazenado no NFS e que não foi removido junto com a aplicação. Então vamos iniciar o processo de restauração. Obs: o cadeado aberto ao lado do nome do repositório serve para nos lembrar que o repositório não é imutável, ou seja, não recomendado para ambientes produtivos (sim, vou repetir isso mais mil vezes se for preciso).

Ao iniciar o restore, a primeira coisa que vemos é uma caixa verde informando que o restore point em questão está fora do cluster (ufaaa) e que a restauração pode precisar de mais tempo para trazer os dados, importar e fazer a restauração em si.

O que importa mesmo está aqui. Eu posso escolher exatamente o que eu quero restaurar. No meu caso não tenho muita escolha porque eu removi TUDO. Então eu seleciono todos os itens e restauro. Mas em outra situação, eu poderia selecionar granularmente apenas um volume, service, ingress etc.

E é isso, restauração concluida com sucesso. Minha aplicação foi restaurada exatamente como estava anteriormente. Com isso temos um ambiente completamente funcional para testar o Veeam Kasten, fazer backups e restaurações e ter a possibilidade de conhecer um pouco mais sobre esta fantastica solução de proteção para ambientes Kubernetes.

É isso aí, pessoal. O artigo ficou longo, mas o objetivo era fazer algo bem completo. Até a próxima!

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *