4 Punkte von GN⁺ 2024-06-10 | 1 Kommentare | Auf WhatsApp teilen

Demo

Dokumentation: Installation | Nutzung | Procfile | ENV | Beispiele | Roadmap | Mitwirken | LinuxConf-Vortrag | Schnelles Web-App-Tutorial | Diskussionsforum

Installation

  • Einfache Installation: curl https://piku.github.io/get | sh
  • Weitere Installationsmethoden: Es gibt auch cloud-init und manuelle Installationsmethoden.

Projektaktivität

  • Stabilität: piku ist stabil. Es wird aktualisiert, wenn neue Sprach-Runtimes hinzugefügt oder Bugs behoben werden.
  • Python-Anforderung: Python 3.7 oder höher erforderlich.

Motivation

  • piku wurde entwickelt, weil man auf ARM-Boards einen Deployment-Ansatz wie bei Heroku/CloudFoundry wollte.
  • Da dokku auf ARM nicht funktionierte, wurde eine einfachere Lösung benötigt.
  • piku kann mehrere Anwendungen auf ARM- und Intel-Architekturen deployen, verwalten und unabhängig skalieren.

Workflow

  • Heroku-ähnlicher Workflow:
    • git-SSH-Remote-Repository erstellen: git remote add piku piku@yourserver:appname
    • Code pushen: git push piku master
    • piku ermittelt die Runtime und installiert Abhängigkeiten
    • Sieht in die Procfile und startet die entsprechenden Worker
    • Anwendungseinstellungen können remote geändert und Worker-Prozesse skaliert werden
    • Die ENV-Datei kann Anwendungs- und nginx-Konfiguration enthalten
    • Deployment statischer Sites im gh-pages-Stil möglich

Virtuelle Hosts und SSL

  • Unterstützung für virtuelle Hosts: Mehrere Apps können auf derselben VPS gehostet werden
  • SSL-Konfiguration: SSL-Zertifikate können über Let's Encrypt eingerichtet werden

Caching und statische Pfade

  • Unterstützung für statische Sites: Bestimmte URL-Präfixe können direkt auf Dateisystempfade gemappt werden
  • Caching: Antworten des Backends können gecacht werden

Unterstützte Plattformen

  • POSIX-Umgebungen: Funktioniert in POSIX-Umgebungen mit Python, nginx, uwsgi und SSH
  • Haupteinsatzgebiet: Wird als Micro-PaaS auf Cloud-Servern verwendet

Unterstützte Runtimes

  • Unterstützte Sprachen: Python, Node, Clojure, Java usw.
  • Allgemeine Regel: Wenn es aus der Shell aufgerufen werden kann, kann es in piku ausgeführt werden

Kernwerte

  • Kann auf leistungsschwachen Geräten laufen
  • Zugänglich für Hobbyanwender und K-12-Schulen
  • Rund 1500 Zeilen gut lesbarer Code
  • Funktionaler Codestil
  • Eine einzige Abhängigkeit
  • 12-Faktor-App
  • Vereinfachte User Experience
  • Deckt 80 % der gängigen Anwendungsfälle ab
  • Vernünftige Standardwerte für alle Funktionen
  • Nutzt Distributionspakete von Raspbian/Debian/Ubuntu
  • Nutzt Standardwerkzeuge (git, ssh, uwsgi, nginx)
  • Bewahrt nach Möglichkeit Abwärtskompatibilität

Meinung von GN⁺

  • Einfaches Deployment: piku ermöglicht auch auf kleinen Servern ein unkompliziertes Deployment und ist daher für Softwareingenieure nützlich.
  • Unterstützung vieler Sprachen: Es unterstützt mehrere Sprachen und lässt sich daher in verschiedensten Projekten einsetzen.
  • Unterstützung für leistungsschwache Geräte: Es läuft auch auf schwächerer Hardware und ist dadurch kosteneffizient.
  • User Experience: Die vereinfachte User Experience macht es auch für Einsteiger unter Ingenieuren leicht nutzbar.
  • Sicherheit: Die SSL-Einrichtung über Let's Encrypt kann die Sicherheit verbessern.

1 Kommentare

 
GN⁺ 2024-06-10
Hacker-News-Kommentare
  • Autor des piku-Webapp-Tutorials: Ich liebe piku. Ich habe ein Webapp-Tutorial geschrieben, und es wurde als Teil der offiziellen piku-Organisation auf GitHub in das Repository aufgenommen. Es ist unter Tutorial-Link zu finden. Es erklärt, wie piku funktioniert, und zeigt ein minimales Python-Webapp-Beispiel aus Nutzersicht.

  • Nutzer, der piku zum ersten Mal entdeckt hat: Ich lese zum ersten Mal über piku. Das Gefühl, ein Deployment mit git push zu starten, wirkte immer wie Magie. Einfacher geht es nicht.

  • Nutzer, der ein Kubernetes-Projekt Open Source gemacht hat: Ich habe vor Kurzem ein Kubernetes-bezogenes Projekt als Open Source veröffentlicht. Es gehört in denselben Bereich wie piku. Projekt-Link. Glückwunsch dazu. Sieht großartig aus.

  • Dokku-Nutzer: piku sieht gut aus. Dokku war ebenfalls sehr stabil. Wenn man jedoch die Docker-Abhängigkeit entfernt, hängt man von der Wahl des OS ab. Für Apps, die jahrelang ohne Wartung laufen sollen, ist das nicht ideal. Man könnte eine bestimmte OS-Version benötigen.

  • Mitglied des Cloud Native Buildpacks (CNB)-Teams: Hat zwar nichts mit git push-Deployments zu tun, steht aber mit der PaaS-Erfahrung in Zusammenhang. Wir previewen gerade CNB, das auf die Buildpacks der CNCF abzielt. Damit kann man lokal Docker-Images mit einem Build-Tool erzeugen, das der git push-Logik von Heroku ähnelt. Link zum Rails-App-Build-Tutorial. Wir freuen uns über Feedback.

  • Hinweis auf aktualisierte piku-Dokumentation: Ich empfehle, einen Blick auf pikus neu überarbeitete Dokumentation zu werfen. Dokumentations-Link.

  • Nutzer, überrascht vom Zeitpunkt des initialen Commits: Ich war überrascht zu sehen, dass der erste Commit vor 8 Jahren war. Ich wünschte, ich hätte dieses Projekt schon vor 18 Monaten gekannt. Ich hatte nach einer Möglichkeit gesucht, auf einem Raspberry Pi eine Heroku-ähnliche Developer Experience zu bekommen. Genau das scheint piku zu leisten.

  • Nutzer, der betont, dass git kein Deployment-Tool ist: Wiederholt immer wieder: "git ist kein Deployment-Tool".

  • Vorsteller von ground-init: Ich bin Maintainer und Co-Autor. Wenn du einfache und minimale Deployment-Tools magst, schau dir ground-init an. Es bietet einen pragmatischen Ansatz für Cloud-Init.

  • Nutzer mit automatischem Deployment-Setup: Ich habe eine magische URL hinzugefügt, die GitHub bei jedem Push eines Commits an die App aufruft. Der Server führt dann git pull aus, und pm2 lädt die App neu. Für kleine Projekte passt das gut.

  • Fragesteller zu Zero-Downtime-Deployments: Ich frage mich, wie piku Zero-Downtime-Deployments handhabt. Wenn zum Beispiel ein Python-Service hinter nginx auf Port 8080 läuft, würde ich gern wissen, wie auf eine neue Instanz auf demselben Port umgeschaltet wird.