- Ein Reverse-Proxy für Tunneling in externe Netzwerke
- Verarbeitet Traffic auf Produktionsniveau und ist so konzipiert, dass Hosting einfach ist (insbesondere auf Kubernetes)
- Kann Kundennetzwerke, Dienste in BYOC-(Bring Your Own Cloud)-Services exponieren oder Verbindungen zu IoT-Geräten herstellen
- Kann als Node-Cluster gehostet werden, um Fehlertoleranz, Skalierbarkeit und Zero-Downtime-Deployments zu ermöglichen
Wie Piko funktioniert
- Upstream-Services verbinden sich mit Piko und registrieren Endpunkte
- Piko leitet Anfragen für Endpunkte über ausschließlich ausgehende Verbindungen an die registrierten Upstream-Services weiter
- Das bedeutet, dass sich Services exponieren lassen, ohne öffentliche Ports zu öffnen
- Eingehende HTTP(S)-Anfragen identifizieren die ID des Zielendpunkts über den
Host-Header oder den x-pico-endpoint-Header
- Wenn mehrere Upstream-Services denselben Endpunkt registriert haben, verteilt Piko die Anfragen für diesen Endpunkt per Load Balancing auf die registrierten Upstreams
Pikos Designziele
Verarbeitung von Produktionstraffic
- Piko ist für die Verarbeitung von Produktionstraffic ausgelegt, nicht als Test- oder Entwicklungstool
- Mit Piko lassen sich Kundennetzwerke erreichen, BYOC-Lösungen aufbauen und IoT-Geräte anbinden
- Zur Unterstützung dessen kann Piko als Node-Cluster für Fehlertoleranz, horizontale Skalierung und Zero-Downtime-Deployments betrieben werden
- Außerdem stellt es Observability-Tools für Monitoring und Debugging bereit
Einfaches Hosting
- Piko ist so konzipiert, dass es sich leicht auf Kubernetes hosten lässt
- Ein Piko-Cluster kann als Kubernetes StatefulSet hinter einem HTTP-Load-Balancer oder Kubernetes Gateway gehostet werden
- Verbindungen von Upstream-Services und Anfragen von Proxy-Clients können per Load Balancing auf alle Nodes im Cluster verteilt werden, während Piko die Weiterleitung an den richtigen Upstream übernimmt
Sicherheit
- Upstream-Services verbinden sich über ausschließlich ausgehende Verbindungen mit Piko
- Piko leitet sämtliche Anfragen über diese Verbindungen an die Upstreams weiter
- Dadurch müssen Upstreams keine Ports öffnen, um Anfragen zu empfangen
- Piko unterstützt die Authentifizierung von Upstream-Services, bevor diese Endpunkte registrieren
- Piko kann selbst gehostet werden und im selben Netzwerk wie Proxy-Clients laufen, sodass keine Anfragen aus externen Netzwerken angenommen werden müssen
- So können sich zum Beispiel authentifizierte Upstream-Services per TLS über das Internet registrieren, während nur Proxy-Clients im selben Netzwerk wie Piko interne Routen erhalten
6 Kommentare
Das bedeutet, dass sich ein Dienst exponieren lässt, ohne einen öffentlichen Port zu öffnen
Nehmen wir zum Beispiel an, der Informatik-Student A arbeitet an einem Projekt.
A hat fleißig entwickelt und möchte den Dienst nun, da der Präsentationstermin näher rückt, vorführen.
Allerdings kann A gerade erst Server programmieren und weiß nicht, wie man überhaupt irgendeinen Server oder eine Instanz startet.
Außerdem wohnt A im Wohnheim und kann den Dienst daher nicht per Port-Forwarding öffentlich erreichbar machen.
An dieser Stelle kommt Tunneling ins Spiel.
Wenn man auf dem Laptop im Wohnheim
ngork http 8080eingibt, wird eine zufällige URL erzeugt, und wenn sich bei der Vorführung im Hörsaal ein Benutzer mit dieser URL verbindet, wird die HTTP-Anfrage vom ngrok-Server über den ngrok-Client an As Serverprogramm weitergeleitet, sodass sich der Dienst auch ohne zusätzliches Port-Forwarding öffentlich bereitstellen lässt.https://github.com/andydunstall/piko/pull/20
Der Projektname wurde offenbar von Pico in Piko geändert. Es scheint, dass die Änderung wegen eines Konflikts erfolgte, da es bereits einen Editor namens
picogibt.Als ich die Antwort sah, dass jemand den
pico-Editor nicht kannte, wurde mir bewusst, wie alt ich schon bin. Vornanogab espicoT_TIch hatte das gestern recherchiert, zusammengefasst und gepostet ... inzwischen hat es sich schon wieder geändert ;_; Ich habe es korrigiert.