33 puntos por GN⁺ 2025-06-18 | 1 comentarios | Compartir por WhatsApp
  • Una plataforma open source creada para que incluso desarrolladores individuales puedan usar Kubernetes fácilmente, ofreciendo una simplicidad similar a la de Heroku
    • Funciona en entornos de Docker y Docker Compose, y puede instalarse y ejecutarse con comandos simples
  • Fue desarrollada para resolver el problema de los aumentos inesperados en los costos de IT que se vivieron en una startup anterior
  • En lugar de funciones complejas, busca la simplicidad al exponer solo elementos clave como Ingress, Services, Deployments, Pods y CronJobs
  • Permite desplegar casi cualquier app open source mediante Helm, y también es posible salir de Canine descargando la configuración en YAML
  • También complementa funciones que Kubernetes no incluye por defecto, como cuentas, despliegues y dashboards, con el objetivo de ser una plataforma de desarrollo adecuada para equipos pequeños

Resumen

  • Canine es una plataforma open source de despliegue para Kubernetes, diseñada para que desplegar apps sea tan sencillo como en Heroku
  • Funciona sobre su propio clúster de Kubernetes y, si hace falta, se puede descargar la configuración en YAML para operar de forma descentralizada
  • Ofrece una experiencia simple e intuitiva al exponer solo recursos clave como Ingress, Services, Deployments, Pods y CronJobs

El problema: estructuras complejas y costos que se disparan

  • A partir de la experiencia operando una startup, se vio que los costos de IT crecían mucho más rápido de lo esperado
  • En muchos casos, los costos aumentaban principalmente por la complejidad organizacional y la proliferación de servicios integrados, más que por el uso de servidores o capacidad de cómputo
  • La acumulación de herramientas de terceros como las siguientes disparó los costos de IT:
    • Herramientas de datos como Looker, Redshift, Databricks, DBT Cloud y FiveTran
    • Herramientas de monitoreo como Datadog, New Relic y Sentry
    • Herramientas de infraestructura como Google Maps API y AWS
  • Algunas podían reemplazarse por open source, pero se evitaba adoptarlas por la carga de montar infraestructura operativa como monitoreo, health checks y alertas

El potencial y los límites de Kubernetes

  • Kubernetes es una plataforma escalable desde un solo nodo hasta miles de clústeres, y está disponible como estándar en casi cualquier nube
  • Pero para principiantes y equipos pequeños suele percibirse como un sistema complejo y fácil de romper
  • En particular, un error como borrar CoreDNS puede hacer que todo el clúster deje de funcionar
  • Cuando se acumulan los costos y la complejidad operativa, los PaaS abstractos existentes pueden terminar convirtiéndose en un obstáculo

Características de Canine

  • Expone solo las funciones mínimas necesarias de Kubernetes para mantener simplicidad y control
  • Lo que falta se complementa con funciones como:
    • Gestión de cuentas
    • Gestión de despliegues
    • Ejecución simple de scripts one-off
    • Dashboard de métricas
  • Gracias a su plataforma de despliegue intuitiva, incluso principiantes pueden desplegar aplicaciones fácilmente en entornos Kubernetes
  • Si ya se cuenta con Docker y Docker Compose, puede instalarse y ejecutarse con un solo comando
  • Ofrece un entorno de administración basado en UI que reduce la carga de configuración compleja y mantenimiento de Kubernetes
  • Gracias a la integración con Helm, también es fácil desplegar apps open source como Sentry

Migración y libertad

  • Canine se usa sobre Kubernetes existente, por lo que también es fácil dejar de usarlo
  • Toda la configuración puede descargarse en YAML, lo que facilita migrar más adelante a otra plataforma

Importancia y diferenciadores

  • Frente a herramientas de Kubernetes más generales, ofrece una UI amigable para principiantes y un proceso de instalación sencillo
  • Lleva una experiencia de uso similar a la de Heroku al ecosistema de Kubernetes, reduciendo en gran medida la barrera de entrada
  • Al estar basado en open source, permite escalabilidad flexible y mejoras impulsadas por la comunidad
  • Se espera que tenga un gran impacto al permitir que incluso equipos de desarrollo pequeños o startups aprovechen fácilmente las ventajas de Kubernetes
  • Con Apache 2.0 License, permite uso, distribución y modificación libremente

1 comentarios

 
GN⁺ 2025-06-18
Comentarios en Hacker News
  • Soy de los que siempre anda buscando una mejor solución para replicar una “experiencia tipo Heroku” en mi propio servidor, así que esto me da muchísimo gusto
    La documentación de Canine sobre Kubernetes se siente muy accesible, de las más amigables que he visto hasta ahora
    Al leer la documentación me surgió una duda: esperaba que Canine pudiera usarse también en entornos de K8s administrados como Digital Ocean, pero después de leerla me quedó la impresión de que uno tiene que gestionar directamente su propio clúster de K8s
    Dejo algunas preguntas

    1. Al crear un “Cluster” en Hetzner, ¿es realmente un clúster de K8s de verdad que abarca varias máquinas, o solo una partición virtual de una sola máquina?
    2. Si ejecuto el script de instalación en otros servidores, ¿se unirán al clúster y formarán una configuración distribuida real que aloje pods repartidos?
    3. ¿Se puede conectar Canine a un K8s administrado ya existente y desplegar ahí?
    • Actualmente Canine soporta dos configuraciones
      1. Ejecutarse en un solo VPS de Hetzner
      2. Usarse sobre un clúster de Kubernetes ya construido
        En general, la opción 1 sirve para apps de staging/desarrollo, y la 2 para apps de producción
        En el caso de la opción 2, administras la cantidad de nodos en Digital Ocean o donde sea, y Kubernetes se encarga de reprogramar automáticamente las cargas de trabajo y usar autoscaling
        Creo que eso responde al punto central de tu pregunta: Canine todavía no soporta crear por sí mismo un clúster multinodo en Hetzner
        Sí existe terraform para crear clústeres de K8s en Hetzner, pero Canine aún no lo trae integrado
        Me interesa hacerlo después de mejorar la UI y otras partes
        Por ahora, la idea es ayudarte con la guía de instalación de K3s en un solo VPS, o asumir que ya tienes un clúster listo si quieres usarlo ahí
        Enlace de referencia: terraform-hcloud-kube-hetzner
  • Como alguien que cree que este tipo de proyecto hace mucha falta, lo apoyo totalmente
    Hoy en día probablemente estaría considerando Canine o Dokploy (también creo que Docker Swarm es una tecnología subestimada)
    Un comentario: la sección “por qué no deberías usar Canine” parecía que iba a ser una honestidad refrescante, pero tiene un tono un poco sarcástico y me incomodó
    Preferiría que simplemente dijera con claridad las desventajas reales: que tienes que comprar y administrar servidores, que si algo se cae la responsabilidad es tuya, y que es un producto temprano hecho por una sola persona

    • Me da curiosidad cómo está hoy el mantenimiento y soporte de Docker Swarm
      Hace unos años dejé de seguirlo porque me dio la impresión de que el equipo actual de Docker había dejado de desarrollarlo

    • Lo redacté así intentando diferenciarme de otras landing pages, pero agradezco mucho el feedback de alguien que realmente lo usaría
      Voy a intentar replantearlo

  • Comparto una lista que reúne varias plataformas PaaS que existen
    awesome-paas

  • Una pregunta para el OP (autor)
    Me da curiosidad qué te llevó a hacer este proyecto
    Tengo ganas de construir algo complejo de principio a fin, pero solo he trabajado con integración de API y React
    Me interesa saber cómo dividiste una idea compleja en tareas realistas y la convertiste en un proyecto open source que terminó siendo una “alternativa a Heroku”
    Yo casi no he usado Heroku, así que probablemente me guiaría por cosas como su página de precios para entender “qué funciones implementar”, pero me preocupa que ese enfoque sea ineficiente

  • Me parece interesante la idea de una alternativa a Heroku basada en Kubernetes
    Pero si para usarla tengo que saber de K8s o de Helm chart, entonces para mí en realidad no sería una alternativa a Heroku
    Claro, entiendo que desde la perspectiva del operador eso puede ser algo tan simple como echo hello
    Pero cuando quiero subir algo lo más rápido posible, ni siquiera quiero pensar en palabras como “Kubernetes” o “Helm chart”

    • Ese era justamente el objetivo de Canine
      El usuario ni siquiera necesita saber que Kubernetes existe, pero aun así puede aprovechar su ecosistema maduro
      Y si en algún momento necesita funciones más potentes, siempre puede abrir y usar directamente cosas más especializadas, como la API de Kubernetes
  • Un detalle menor
    Kubernetes no ejecuta contenedores de Docker, sino contenedores que siguen la especificación de la Open Container Initiative (OCI)
    Docker es una marca registrada

    • Otro detalle pequeño:
      En Canine Kubernetes Crash Course se dice que soporta “10 mil servidores”
      Pero oficialmente Kubernetes indica soporte de hasta 5 mil nodos como máximo
      ver documentación oficial de Kubernetes
      Se pueden lograr clústeres mucho más grandes, pero ahí ya hace falta bastante personalización (como reemplazar por completo el API registry, etc.)
      Y claro, también depende de la carga de trabajo
      Kubernetes todavía está lejos de soportar clústeres enormes out-of-the-box, pero va mejorando en cada release

    • A mí me echa para atrás si dicen que Docker es obligatorio
      Hoy en día opero más con podman o containerd que con Docker

  • Crear este proyecto ha sido divertidísimo, probablemente el desarrollo más disfrutable de mi vida
    La sensación de tener toda la “pila tecnológica” en una sola mano es increíble
    La app en Rails, la infraestructura de Canine, el servidor Raspberry Pi, hasta el ISP que uso
    Comparto la experiencia de haber desplegado una app administrándolo todo por mi cuenta

  • En el sitio web la licencia aparece como MIT License de 2024
    Pero en GitHub en realidad está marcada como Apache License
    Más allá de si el año está bien o no, me parece que el tipo de licencia sí es una diferencia importante
    Me gustaría saber cuál es la licencia real que aplica

  • En self-hosting yo quería un punto intermedio entre Docker y K8s, y también me puse a investigar algo parecido
    Consideré Nomad, pero seguía siendo un poco más complejo que Docker simple, y el ecosistema se sentía flojo
    Al final dejé mi home server funcionando solo con Docker, aceptando el downtime durante los despliegues
    En producción me da curiosidad cuánto abstrae Canine de K8s
    Si al final voy a tener que meterme a ver lo de adentro, siendo novato en K8s me pregunto si de verdad existe ese punto medio

    • Yo también estoy desarrollando una herramienta que queda entre Docker y Kubernetes
      uncloud
      La meta es ofrecer un CLI estilo Docker y capacidades multi-máquina/de producción tipo Docker Compose, pero manteniendo la simplicidad sin un plano de control operativo
      Todavía está en desarrollo, pero el objetivo es que sea fácil entender qué está pasando en cada capa y también sencillo de depurar
  • Me gusta muchísimo el concepto
    K8s es una tecnología impresionante, pero su complejidad es una barrera de entrada
    Por lo que he visto del material público, parece que entienden muy bien la esencia del problema
    Creo que sería aún más útil en el mundo del self-hosting, donde son populares soluciones como PVE, Microcloud y Cockpit
    Tengo un N100 NUC ahí sin usar en casa, y me dieron ganas de abandonar Microcloud y probar Canine

    • Helm a veces sí puede ser engorroso
      Confunde cuáles valores en values.yaml se aplican después de editarse y cuáles tienen que definirse desde el inicio
      Algunas instalaciones con Helm traen tantos servicios que uno ya no sabe qué se puede reiniciar ni en qué momento
      En cambio, el Kubernetes core se siente muy cómodo para trabajos stateless

    • Últimamente no sé de dónde sale tanto eso de la “complejidad” de K8s
      Antes sí era aquello de pasar dos horas configurando con kubespray
      Hoy en día, con herramientas como rke, puedes crear un clúster con un solo archivo yaml y una sola llave ssh