Olá.
Desenvolvi um Database-Driven Kubernetes Operator e gostaria de apresentá-lo a quem possa se interessar.
O Lynq é um operador que utiliza diretamente os dados que a aplicação já gerencia no DB para criar/atualizar/limpar automaticamente recursos do Kubernetes.
(O nome Lynq pode ser lido como "Lynq", mas por ter vindo de Link, estamos pronunciando como "Link".)
A motivação para o desenvolvimento foi relativamente simples.
Em uma situação em que informações como ambiente/tenant/nó já estavam todas no DB,
sempre que qualquer informação mudava, refletir isso novamente toda vez demorava demais e era trabalhoso.
Então surgiu esta ideia:
“O que realmente precisa ser gerenciado com Git talvez seja apenas um template repetitivo,
e o restante não poderia simplesmente acompanhar automaticamente cada vez que os dados de provisionamento mudarem?”
Pesquisei bastante, mas não encontrei uma ferramenta satisfatória,
E embora eu já usasse Helm e Terraform há mais de 5~6 anos, havia limitações como estas:
- não reagiam imediatamente a mudanças no DB,
- não tinham um modelo contínuo de reconcile,
- e no fim eu precisava manter manualmente vários scripts e pipelines.
Por isso, criei o Lynq como um operador que atende exatamente a esses requisitos.
Além disso, o Lynq dedica bastante esforço à visualização e à documentação para que possa ser operado em produção sem mal-entendidos.
Por exemplo, você pode ver de forma interativa, em um só lugar, visualizações para ajudar a entender criação/remoção/conflitos nas páginas abaixo:
=> Policies Docs
=> Dependency Visualizer
Parece especialmente útil em casos como estes
- criação automática de configurações de cliente/tenant em ambientes SaaS
- sistemas que precisam criar em massa ambientes de staging/preview e gerenciar seu ciclo de vida
- arquiteturas em que os recursos precisam ser sincronizados rapidamente mesmo sem GitOps
- equipes que operam configurações em larga escala com base em DB
- estruturas que precisam gerenciar de forma unificada, por template, configurações de várias filiais/nós/sites
Se você tiver alguma ideia do tipo “desse jeito isso também poderia ser usado aqui”
ou já tiver enfrentado algum problema parecido na prática, qualquer feedback será de grande ajuda.
Obrigado.
Seguindo a documentação de Quick Start, é fácil testar em um ambiente local, e a instalação via Helm também é suportada.
Além disso, são fornecidos até Prometheus Rule e Grafana Dashboard JSON para monitoramento.
- GitHub Repo: https://github.com/k8s-lynq/lynq
- Docs: https://lynq.sh/
2 comentários
Nossa, a documentação ficou extremamente detalhada e muito bem feita.
Obrigado, haha.
Como quase não há ferramentas parecidas e o conceito ainda é pouco familiar, estou priorizando ajudar na compreensão visual.
Se, ao ler a documentação, ainda houver algo que não fique claro ou algum conceito que gere confusão, agradeço muito se puderem me dar feedback sobre o que seria bom melhorar!
No momento, estou aumentando o nível de maturidade com uma demo ao vivo e a criação de testes E2E, então ficarei grato se continuarem acompanhando.