PostgreSQL em Kubernetes: funciona?
Bom, se tem uma coisa pela qual eu sempre torci o nariz é a utilização de bancos de dados relacionais sem soluções de microserviços. Quem conhece um pouco sabe que persistência em banco de dados é algo que precisa ser consistente e íntegro.
Mas eu conheço apenas banco de dados e muito pouco de microserviços, e imaginar todos aqueles pods subindo e descendo, sendo criados, recriados e deletados, para um DBA tradicionalista (não faço nem ideia se isso realmente existe), traz um certo desconforto que beira a um ataque de ansiedade que necessita de intervenção médica — brincadeira, mas talvez nem tanto.
Sou daqueles que acreditam que banco de dados deve permanecer em sua redoma consistente e segura, sem interrupções, com seus dados persistidos no disco mais performático e redundante possível. Mas é mal de DBA, com aquele instinto protetor de manter o que é hoje um dos recursos mais importantes da nossa era: os dados.
Mas claro…
Como dizem — temos que experimentar coisas novas. E também, como já dizia Bob Dylan:
“People are crazy and times are strange…” Opa, pera! Não é essa. É: “For the times, they are a-changin'”
Talvez as coisas realmente estejam mudando — e já há algum tempo. Toda essa introdução, com um pouco de opinião e música, é só pra dizer que, sim, PostgreSQL em Kubernetes funciona. E, que, há até uma solução Cloud Native para isso: o CloudNativePG, que foi um dos temas abordados na KubeCon 2024.
Mas afinal, o que é o CloudNativePG?
O CloudNativePG é um operador de código aberto criado para gerenciar clusters do PostgreSQL em ambientes Kubernetes. Ele automatiza todo o ciclo de vida de um cluster PostgreSQL, desde a implantação inicial até a manutenção contínua, integrado nativamente à API do Kubernetes — juro, não inventei, isso está na documentação deles.
Destacam-se como principais recursos:
- Alta Disponibilidade: Utiliza a replicação nativa do PostgreSQL para garantir que, em caso de falha do nó primário, uma réplica seja promovida automaticamente, garantindo a continuidade do serviço.
- Autopilot ou Piloto Automático — como preferir. Essa é uma funcionalidade que automatiza várias tarefas críticas dentro do cluster PostgreSQL em Kubernetes. Projetado para simplificar a administração, é ele que: inicia o failover da instância em caso de falha, gerencia réplicas e replicações, realiza o escalonamento automático de pods, auto-recuperação, backups, monitoramento e alertas.
- Segurança e Certificados TLS: Suporta conexões TLS criptografadas em trânsito, garantindo uma camada adicional de segurança para as comunicações entre os serviços e o PostgreSQL.
- Recuperação de Desastres: Oferece backup contínuo e aproveita a funcionalidade de recuperação point-in-time do PostgreSQL, permitindo a inicialização de um novo cluster a partir de um ponto específico no tempo.
- Persistência de Dados — se não fosse por isso, eu nem teria falado sobre Kubernetes. O CloudNativePG gerencia PVCs de forma eficiente, assegurando que os dados do PostgreSQL sejam armazenados de maneira confiável e consistente.
Isso é só um breve resumo sobre essa solução, que é bastante interessante. Convenhamos, facilita a implementação de um cluster PostgreSQL em ambiente Kubernetes, proporcionando diversas funcionalidades que desempenham um papel importante na continuidade e disponibilidade de qualquer serviço. Vale a pena ganhar algumas horas aprofundando e testando todas as possibilidades.