33 pontos por GN⁺ 2025-06-18 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2025-06-18
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

    1. Ao criar um “Cluster” na Hetzner, isso é de fato um cluster K8s real cobrindo várias máquinas, ou só uma divisão virtual de uma única máquina?
    2. Se eu rodar o script de instalação em outro servidor, ele entra no cluster e vira uma configuração realmente distribuída, hospedando pods de forma espalhada?
    3. Dá para conectar o Canine a um K8s gerenciado já existente e fazer deploy nele?
    • Hoje o Canine suporta duas configurações
      1. Rodar em uma única VPS da Hetzner
      2. Usar em um cluster Kubernetes já existente
        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

  • 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 hello
    Mas, quando quero colocar algo no ar o mais rápido possível, eu não quero nem pensar nas palavras “Kubernetes e Helm chart”

    • Esse era exatamente o objetivo do Canine
      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

    • Eu também estou desenvolvendo uma ferramenta nesse espaço intermediário entre Docker e Kubernetes
      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.yaml passam a valer depois de uma alteração e quais precisam ser definidos desde o início
      Algumas 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