4 points par GN⁺ 2024-06-10 | 1 commentaires | Partager sur WhatsApp

Démo

Documentation : installation | mode d’emploi | Procfile | ENV | exemples | feuille de route | contribution | présentation à la LinuxConf | tutoriel rapide d’application web | forum de discussion

Installation

  • Installation simple : curl https://piku.github.io/get | sh
  • Autres méthodes d’installation : des méthodes via cloud-init et une installation manuelle sont également disponibles.

Activité du projet

  • Stabilité : piku est stable. Il est mis à jour lors de l’ajout de nouveaux runtimes ou de corrections de bugs.
  • Exigence Python : Python 3.7 ou supérieur est requis.

Motivation

  • piku a été développé pour disposer d’un mode de déploiement semblable à Heroku/CloudFoundry sur des cartes ARM.
  • dokku ne fonctionnant pas sur ARM, une solution plus simple était nécessaire.
  • piku permet de déployer, gérer et faire évoluer indépendamment plusieurs applications sur des architectures ARM et Intel.

Workflow

  • Workflow similaire à Heroku :
    • Création d’un dépôt distant SSH git : git remote add piku piku@yourserver:appname
    • Push du code : git push piku master
    • piku détermine le runtime et installe les dépendances
    • Démarrage des workers concernés en se basant sur le Procfile
    • Possibilité de modifier à distance la configuration de l’application et d’augmenter le nombre de processus worker
    • Le fichier ENV peut inclure la configuration de l’application et de nginx
    • Déploiement possible de sites statiques de style gh-pages

Hôtes virtuels et SSL

  • Prise en charge des hôtes virtuels : possibilité d’héberger plusieurs applications sur le même VPS
  • Configuration SSL : possibilité de configurer des certificats SSL via Let's Encrypt

Cache et chemins statiques

  • Prise en charge des sites statiques : possibilité de mapper directement certains préfixes d’URL à des chemins du système de fichiers
  • Cache : possibilité de mettre en cache les réponses du backend

Plateformes prises en charge

  • Environnement POSIX : fonctionne dans un environnement POSIX avec Python, nginx, uwsgi et SSH
  • Usage principal : utilisé comme micro-PaaS sur des serveurs cloud

Runtimes pris en charge

  • Langages pris en charge : Python, Node, Clojure, Java, etc.
  • Règle générale : si cela peut être invoqué depuis le shell, cela peut être exécuté avec piku

Valeurs clés

  • Peut fonctionner sur des appareils peu puissants
  • Accessible aux hobbyistes et aux écoles K-12
  • Environ 1 500 lignes de code faciles à lire
  • Style de code fonctionnel
  • Une seule dépendance
  • Applications en 12 facteurs
  • Simplification de l’expérience utilisateur
  • Couvre 80 % des cas d’usage courants
  • Fournit des valeurs par défaut raisonnables pour toutes les fonctionnalités
  • Exploite les paquets de distribution de Raspbian/Debian/Ubuntu
  • Exploite des outils standard (git, ssh, uwsgi, nginx)
  • Maintient la compatibilité ascendante lorsque c’est possible

L’avis de GN⁺

  • Déploiement simple : piku permet un déploiement facile même sur de petits serveurs, ce qui le rend utile aux ingénieurs logiciel.
  • Prise en charge de nombreux langages : le support de plusieurs langages permet de l’appliquer à des projets variés.
  • Prise en charge des appareils peu puissants : il peut fonctionner sur du matériel modeste, ce qui le rend économique.
  • Expérience utilisateur : la simplicité de l’expérience utilisateur permet même aux ingénieurs débutants de l’utiliser facilement.
  • Sécurité : la configuration SSL via Let's Encrypt permet de renforcer la sécurité.

1 commentaires

 
GN⁺ 2024-06-10
Avis sur Hacker News
  • Auteur du tutoriel de webapp piku : J’adore piku. J’ai rédigé un tutoriel de webapp, qui a été inclus dans le dépôt en tant que partie de l’organisation officielle piku sur GitHub. Il est disponible via ce lien vers le tutoriel. Il explique comment fonctionne piku et propose un exemple minimal de webapp Python du point de vue de l’utilisateur.

  • Utilisateur découvrant piku pour la première fois : Je lis au sujet de piku pour la première fois. Déclencher un déploiement avec git push m’a toujours semblé magique. On ne peut pas faire plus simple.

  • Utilisateur ayant open sourcé un projet Kubernetes : J’ai récemment open sourcé un projet lié à Kubernetes. Il appartient au même espace que piku. Lien vers le projet. Félicitations. Ça a l’air excellent.

  • Utilisateur de Dokku : piku a l’air bien. Dokku a aussi été très stable. Mais supprimer la dépendance à Docker signifie dépendre du choix de l’OS. Ce n’est pas idéal pour des apps qui doivent tourner pendant des années sans maintenance. On peut finir par avoir besoin d’une version spécifique de l’OS.

  • Membre de l’équipe Cloud Native Buildpacks (CNB) : Ce n’est pas lié au déploiement par git push, mais c’est lié à l’expérience PaaS. Nous prévisualisons CNB, qui cible les Buildpacks de la CNCF. Cela permet de générer localement des images Docker avec des outils de build similaires à la logique git push de Heroku. Lien vers le tutoriel de build d’une app Rails. Nous aimerions avoir des retours.

  • Annonce de mise à jour de la documentation piku : Je recommande d’aller voir la nouvelle documentation remaniée de piku. Lien vers la documentation.

  • Utilisateur surpris par la date du commit initial : J’ai été surpris d’apprendre que le commit initial date d’il y a 8 ans. J’aurais aimé connaître ce projet il y a 18 mois. Je cherchais un moyen d’obtenir une expérience de développement proche de Heroku sur un Raspberry Pi. piku semble faire exactement cela.

  • Utilisateur insistant sur le fait que git n’est pas un outil de déploiement : Je répète sans cesse que « git n’est pas un outil de déploiement ».

  • Présentateur de ground-init : J’en suis le mainteneur et co-auteur. Si vous aimez les outils de déploiement simples et minimaux, je vous recommande de jeter un œil à ground-init. Il propose une approche pragmatique de l’initialisation cloud.

  • Utilisateur ayant configuré un déploiement automatique : J’ai ajouté une URL magique appelée par GitHub chaque fois qu’un commit est pushé sur l’app. Le serveur exécute git pull et pm2 recharge l’app. C’est adapté aux petits projets.

  • Personne posant une question sur le déploiement sans interruption : Je me demande comment piku gère le déploiement sans interruption. Par exemple, lorsqu’un service Python tourne sur le port 8080 derrière nginx, j’aimerais savoir comment il bascule vers une nouvelle instance sur ce même port.