- 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
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
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
Justo estaba buscando dónde enviar el proyecto a listas así, así que gracias, voy a mandar un PR
dokku es una plataforma PaaS minimalista que puede correr en un VPS, y también existe dokku-scheduler-kubernetes
dokku-scheduler-kubernetes
Eso sí, no soporta Helm chart
También hay una buena recopilación de la estructura general de cloud computing y varios enlaces comparativos
Cloud computing architecture
Cloud-computing comparison
Category:Cloud_platforms
En awesome-selfhosted también hay una sección de serverless/FaaS, que enlaza a awesome-sysadmin > PaaS
awesome-selfhosted FaaS/Serverless
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 helloPero cuando quiero subir algo lo más rápido posible, ni siquiera quiero pensar en palabras como “Kubernetes” o “Helm chart”
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
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.yamlse aplican después de editarse y cuáles tienen que definirse desde el inicioAlgunas 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