Demostración
Documentación: instalación | uso | Procfile | ENV | ejemplos | hoja de ruta | contribuciones | charla en LinuxConf | tutorial rápido de app web | foro de discusión
Instalación
- Instalación simple:
curl https://piku.github.io/get | sh
- Otros métodos de instalación: también hay métodos con
cloud-init e instalación manual.
Actividad del proyecto
- Estabilidad:
piku es estable. Se actualiza cuando se agregan nuevos runtimes de lenguaje o se corrigen errores.
- Requisitos de Python: requiere Python 3.7 o superior.
Motivación
piku fue creado para ofrecer un método de despliegue similar a Heroku/CloudFoundry en placas ARM.
- Como
dokku no funcionaba en ARM, se necesitaba una solución más simple.
piku permite desplegar, administrar y escalar de forma independiente múltiples aplicaciones en arquitecturas ARM e Intel.
Flujo de trabajo
- Flujo de trabajo similar a Heroku:
- Crear un repositorio remoto SSH de
git: git remote add piku piku@yourserver:appname
- Hacer push del código:
git push piku master
piku determina el runtime e instala las dependencias
- Revisa el
Procfile e inicia los workers correspondientes
- Permite cambiar la configuración de la aplicación y escalar procesos worker de forma remota
- El archivo
ENV puede incluir la configuración de la aplicación y de nginx
- Permite desplegar sitios estáticos al estilo
gh-pages
Hosts virtuales y SSL
- Soporte de hosts virtuales: permite alojar múltiples apps en el mismo VPS
- Configuración de SSL: permite configurar certificados SSL mediante Let's Encrypt
Caché y rutas estáticas
- Soporte para sitios estáticos: permite mapear directamente prefijos específicos de URL a rutas del sistema de archivos
- Caché: permite almacenar en caché las respuestas del backend
Plataformas compatibles
- Entornos POSIX: funciona en entornos POSIX con Python,
nginx, uwsgi y SSH
- Uso principal: se usa como micro PaaS en servidores en la nube
Runtimes compatibles
- Lenguajes compatibles: Python, Node, Clojure, Java y más
- Regla general: si se puede invocar desde el shell, se puede ejecutar en
piku
Valores principales
- Puede ejecutarse en dispositivos de bajos recursos
- Accesible para aficionados y escuelas K-12
- Aproximadamente 1500 líneas de código fáciles de leer
- Estilo de código funcional
- Una sola dependencia
- Aplicaciones de 12 factores
- Simplificación de la experiencia de usuario
- Cubre el 80% de los casos de uso comunes
- Ofrece valores predeterminados razonables para todas las funciones
- Aprovecha los paquetes de distribución de Raspbian/Debian/Ubuntu
- Usa herramientas estándar (
git, ssh, uwsgi, nginx)
- Mantiene compatibilidad con versiones anteriores cuando es posible
Opinión de GN⁺
- Despliegue sencillo:
piku permite desplegar fácilmente incluso en servidores pequeños, por lo que resulta útil para ingenieros de software.
- Soporte para varios lenguajes: admite múltiples lenguajes, por lo que puede aplicarse a distintos proyectos.
- Soporte para dispositivos de bajos recursos: puede ejecutarse en hardware modesto, lo que lo hace rentable.
- Experiencia de usuario: simplifica la experiencia de uso para que incluso ingenieros principiantes puedan utilizarlo con facilidad.
- Seguridad: la configuración de SSL mediante Let's Encrypt permite reforzar la seguridad.
1 comentarios
Opiniones de Hacker News
Autor del tutorial de la app web de piku: Le encanta piku. Escribió un tutorial para una app web y fue incluido en el repositorio como parte de la organización oficial de piku en GitHub. Se puede ver en el enlace al tutorial. Explica cómo funciona piku y un ejemplo mínimo de una app web en Python desde la perspectiva del usuario.
Usuario que conoció piku por primera vez: Es la primera vez que lee sobre piku. La sensación de iniciar un despliegue con
git pushsiempre le ha parecido mágica. No hay nada más simple que eso.Usuario que liberó como código abierto un proyecto de Kubernetes: Recientemente publicó como open source un proyecto relacionado con Kubernetes. Es un proyecto que pertenece a un espacio similar al de piku. Enlace al proyecto. Felicita al autor. Se ve excelente.
Usuario de Dokku: piku se ve bien. Dokku también ha sido muy estable. Sin embargo, eliminar la dependencia de Docker hace que todo dependa de la elección del sistema operativo. No es ideal para apps que deban ejecutarse durante años sin mantenimiento. Puede que termines necesitando una versión específica del sistema operativo.
Miembro del equipo de Cloud Native Buildpacks (CNB): No está relacionado con despliegues por
git push, pero sí con la experiencia PaaS. Está mostrando una vista previa de CNB dirigido a los Buildpacks de CNCF. Con esto se pueden crear imágenes Docker localmente usando herramientas de build similares a la lógica degit pushde Heroku. Enlace al tutorial para construir una app de Rails. Le gustaría recibir comentarios.Aviso sobre actualización de la documentación de piku: Recomienda revisar la documentación recién renovada de piku. Enlace a la documentación.
Usuario sorprendido por la fecha del commit inicial: Le sorprendió saber que el commit inicial fue hace 8 años. Le hubiera gustado conocer este proyecto hace 18 meses. Había estado buscando una forma de ofrecer una experiencia de desarrollo tipo Heroku en una Raspberry Pi. piku parece cumplir exactamente ese papel.
Usuario que enfatiza que git no es una herramienta de despliegue: Repite una y otra vez que "git no es una herramienta de despliegue".
Presentador de ground-init: Es mantenedor y coautor. Si te gustan las herramientas de despliegue simples y mínimas, recomienda revisar ground-init. Ofrece un enfoque realista para la inicialización en la nube.
Usuario con despliegue automático configurado: Agregó una URL mágica que GitHub llama cada vez que se hace push de un commit a la app. El servidor ejecuta
git pully pm2 vuelve a cargar la app. Es adecuado para proyectos pequeños.Persona que pregunta sobre despliegues sin tiempo de inactividad: Tiene curiosidad por cómo piku maneja los despliegues sin downtime. Por ejemplo, cuando un servicio de Python se está ejecutando en el puerto 8080 detrás de nginx, quiere saber cómo se cambia a una nueva instancia en ese mismo puerto.