- Plataforma open source criada para permitir que até desenvolvedores solo usem Kubernetes com facilidade, oferecendo uma simplicidade semelhante à do Heroku
- Funciona em ambientes Docker e Docker Compose, podendo ser instalada e executada com comandos simples
- Foi desenvolvida para resolver o problema do aumento inesperado dos custos de TI enfrentado em startups anteriores
- Em vez de recursos complexos, busca a simplicidade ao expor apenas elementos centrais como Ingress, Services, Deployments, Pods e CronJobs
- Quase todos os apps open source podem ser implantados via Helm, e também é possível sair do Canine baixando as configurações em YAML
- Também complementa recursos que não existem por padrão no Kubernetes, como contas, implantações e dashboards, visando ser uma boa plataforma de desenvolvimento para equipes pequenas
Visão geral
- Canine é uma plataforma open source de implantação para Kubernetes, projetada para permitir publicar apps com facilidade, como no Heroku
- Funciona sobre seu próprio cluster Kubernetes e, quando necessário, é possível baixar as configurações em YAML para operar de forma descentralizada
- Oferece uma experiência simples e intuitiva ao expor apenas recursos essenciais como Ingress, Services, Deployments, Pods e CronJobs
O problema: estrutura complexa e custos disparando
- Com base na experiência anterior operando startups, os custos de TI cresceram muito mais rápido do que o esperado
- Em muitos casos, os custos aumentavam principalmente com a complexidade organizacional e o crescimento dos serviços integrados, e não com o uso de servidores ou computação
- O acúmulo de ferramentas de terceiros como as abaixo fez os custos de TI dispararem:
- Ferramentas de dados como Looker, Redshift, Databricks, DBT Cloud e FiveTran
- Ferramentas de monitoramento como Datadog, New Relic e Sentry
- Ferramentas de infraestrutura como Google Maps API e AWS
- Algumas podiam ser substituídas por open source, mas isso era evitado por causa da carga de montar e operar infraestrutura de monitoramento, health checks e alertas
O potencial e os limites do Kubernetes
- Kubernetes é uma plataforma escalável de um único nó até milhares de clusters, e é oferecida como padrão em praticamente todas as nuvens
- Ainda assim, para iniciantes e equipes pequenas, ele é visto como um sistema complexo e fácil de quebrar
- Em especial, um erro como apagar o CoreDNS pode fazer o cluster inteiro parar de funcionar
- Quando os custos e a complexidade operacional se acumulam, os PaaS abstratos tradicionais podem acabar se tornando um obstáculo
Características do Canine
- Garante simplicidade e controle ao expor apenas as funcionalidades mínimas necessárias do Kubernetes
- O que falta é complementado com recursos como:
- Gerenciamento de contas
- Gerenciamento de implantações
- Execução simples de scripts one-off
- Dashboard de métricas
- Por meio de uma plataforma de implantação intuitiva, até iniciantes conseguem publicar aplicações facilmente em ambientes Kubernetes
- Se Docker e Docker Compose já estiverem prontos, a instalação e a execução podem ser feitas com um único comando
- Fornece um ambiente de gerenciamento com interface gráfica que reduz a carga de configurações complexas e manutenção do Kubernetes
- Com a integração com Helm, também é possível implantar facilmente apps open source como o Sentry
Migração e liberdade
- O Canine é usado sobre Kubernetes existente, então também é fácil sair dele
- Toda a configuração pode ser baixada em YAML, facilitando uma futura migração para outra plataforma
Importância e diferenciais
- Em comparação com ferramentas comuns de Kubernetes, oferece uma UI mais amigável para iniciantes e um processo de instalação simples
- Ao trazer uma experiência de uso semelhante à do Heroku para o ecossistema Kubernetes, reduz bastante a barreira de entrada
- Por ser open source, permite expansão flexível e melhorias orientadas pela comunidade
- Espera-se um grande impacto por permitir que pequenas equipes de desenvolvimento e startups aproveitem facilmente as vantagens do Kubernetes
- Uso, distribuição e modificação livres sob a Apache 2.0 License
1 comentários
Opiniões no Hacker News
Sou do tipo que vive procurando uma solução melhor para ter uma “experiência parecida com Heroku” no meu próprio servidor, então fiquei genuinamente feliz em ver isso
A documentação do Canine sobre Kubernetes é muito acessível, talvez a mais amigável que já vi até agora
Lendo a documentação, fiquei com uma dúvida: eu esperava que fosse possível usar o Canine também em ambientes K8s gerenciados, como Digital Ocean, mas saí com a impressão de que é preciso gerenciar o cluster K8s por conta própria
Deixo algumas perguntas
Em geral, a opção 1 é usada para apps de staging/desenvolvimento, e a 2 para apps de produção
No caso da opção 2, você gerencia a quantidade de nós em provedores como a Digital Ocean, e o Kubernetes faz o rescheduling automático das workloads e permite usar autoscaling
Isso parece ir ao cerne da sua pergunta, mas o Canine ainda não suporta criar diretamente um cluster multinó em ambiente Hetzner
Existe também Terraform da Hetzner para criar um cluster K8s, mas isso ainda não está embutido no Canine
Tenho interesse nisso depois de melhorar a UI e outras partes
Por enquanto, a ideia é ajudar com o guia de instalação do K3s em uma VPS única, ou assumir que o cluster já está pronto para uso
Link de referência: terraform-hcloud-kube-hetzner
Como alguém que acha que esse tipo de projeto é realmente necessário, estou torcendo muito
Hoje eu provavelmente ficaria em dúvida entre Canine e Dokploy (também acho Docker Swarm uma tecnologia subestimada)
Um feedback: a seção “por que você não deveria usar o Canine” parecia que ia ser um toque de honestidade refrescante, mas acabou soando um pouco sarcástica e me incomodou
Eu preferiria que dissesse de forma direta apenas as desvantagens reais: você precisa comprar e administrar o servidor, se ele cair a responsabilidade é sua, e este é um produto inicial feito por um único desenvolvedor
Fiquei curioso sobre a situação atual de manutenção e suporte do Docker Swarm
Compartilho que parei de acompanhar alguns anos atrás, quando pareceu que a equipe atual do Docker tinha interrompido o desenvolvimento
Escrevi assim tentando me diferenciar de outras landing pages, mas agradeço muito esse tipo de feedback de usuários reais
Vou tentar de novo
Compartilhando uma lista que reúne várias plataformas PaaS existentes no mundo
awesome-paas
Eu estava justamente procurando como submeter o projeto para listas desse tipo, então graças a você vou abrir um PR
O dokku é uma plataforma PaaS minimalista que pode rodar em VPS, e também existe o dokku-scheduler-kubernetes
dokku-scheduler-kubernetes
Porém, não há suporte a Helm chart
Também há uma boa organização de links sobre a estrutura geral de cloud computing e várias comparações
Cloud computing architecture
Cloud-computing comparison
Category:Cloud_platforms
No awesome-selfhosted também há serverless/FaaS, que remete a awesome-sysadmin > PaaS
awesome-selfhosted FaaS/Serverless
Uma pergunta para o OP (autor)
Queria entender o que te levou a criar um projeto assim
Tenho vontade de construir algo complexo do começo ao fim, mas só trabalhei com integração entre API e React
Fico curioso sobre como você quebrou uma ideia complexa em tarefas realistas e conseguiu levar isso até virar um projeto open source do tipo “alternativa ao Heroku”
Eu quase não tenho experiência com Heroku, então imagino que usaria coisas como a página de preços para entender “o que implementar”, mas fico receoso de que essa abordagem seja ineficiente
Fiquei curioso com a ideia de uma alternativa ao Heroku baseada em Kubernetes
Mas se eu precisar saber coisas como K8s ou Helm chart para usar, então para mim isso não é, na prática, uma alternativa ao Heroku
Claro, entendo que do ponto de vista de quem opera isso talvez possa ser simples como um
echo helloMas, quando quero colocar algo no ar o mais rápido possível, eu não quero nem pensar nas palavras “Kubernetes e Helm chart”
O usuário nem precisa saber que Kubernetes existe, mas ainda assim pode aproveitar esse ecossistema maduro
E, quando precisar de algo mais poderoso, sempre será possível expor e usar diretamente recursos avançados como a API do Kubernetes
Um detalhe pequeno, mas vale a observação
O Kubernetes não roda contêineres Docker, e sim contêineres compatíveis com o padrão Open Container Initiative (OCI)
Docker é uma marca registrada
Mais uma observação pequena:
No Canine Kubernetes Crash Course está escrito que ele “suporta 10 mil servidores”
Mas oficialmente o Kubernetes declara suporte de até 5 mil nós
veja a documentação oficial do Kubernetes
Clusters bem maiores também são possíveis, mas aí exigem muita customização (como trocar todo o API registry)
Claro que a workload também influencia
O Kubernetes ainda está longe de suportar grandes clusters out-of-the-box, mas vem melhorando a cada release
Quando dizem que Docker é obrigatório, eu já torço o nariz
Hoje em dia, muita gente opera mais com podman ou containerd no lugar do Docker
Fazer esse projeto foi muito divertido, e provavelmente é o desenvolvimento mais prazeroso da minha vida
A sensação de ter toda a “stack” técnica na palma da mão é incrível
O app Rails, a infra do Canine, o servidor Raspberry Pi, até o ISP que eu uso
Compartilho essa experiência de subir um app administrando tudo sozinho
No site, a licença aparece como MIT License de 2024
Mas no GitHub ela está indicada como Apache License
Mais do que a questão de o ano estar certo ou não, isso me parece uma diferença importante no tipo de licença
Fico curioso para saber qual é a licença que realmente vale
No self-hosting, eu queria algo intermediário entre Docker e K8s, então já pesquisei soluções parecidas
Considerei o Nomad, mas ele ainda parecia um pouco mais complexo do que o Docker dead simple, e o ecossistema parecia fraco
No fim, deixei meu home server só com Docker e aceitei o downtime durante deploy
Em produção, fico curioso sobre até que ponto o Canine abstrai o K8s
Se em algum momento vou precisar olhar por dentro, e, sendo iniciante em K8s, fico em dúvida se esse meio-termo é mesmo possível
uncloud
A meta é oferecer uma CLI no estilo Docker e capacidades de multi-machine/produção parecidas com Docker Compose, mas mantendo a simplicidade sem um control plane operacional
Ainda está em desenvolvimento, mas o objetivo é que seja fácil entender o que está acontecendo em todas as camadas e também facilitar troubleshooting
Gostei muito do conceito
K8s é uma tecnologia fantástica, mas sua complexidade é uma barreira de entrada
Pelo material público, parece que você entendeu bem a essência do problema
Imagino que isso seja ainda mais útil no universo de self-hosting, onde soluções como PVE, Microcloud e Cockpit são populares
Tenho um N100 NUC parado em casa, e agora fiquei com vontade de desistir do Microcloud e testar o Canine
O Helm às vezes é meio chato
Fico confuso sobre quais valores em
values.yamlpassam a valer depois de uma alteração e quais precisam ser definidos desde o inícioAlgumas instalações via Helm trazem tantos serviços que fica difícil saber o que pode ou não ser reiniciado e em que momento
Já o core do Kubernetes é bem agradável de usar para jobs stateless
Hoje em dia eu nem sei mais de onde vem esse discurso sobre a “complexidade” do K8s
Antigamente havia essas histórias de passar duas horas configurando com kubespray
Hoje, usando ferramentas como rke, dá para criar um cluster com um único arquivo yaml e uma única chave ssh