39 ポイント 投稿者 xguru 2024-05-16 | 6件のコメント | WhatsAppで共有
  • 外部ネットワークへトンネリングするリバースプロキシ
  • 本番レベルのトラフィックを処理し、ホスティング(特にKubernetes上)が簡単になるよう設計されている
  • 顧客ネットワークや BYOC(Bring Your Own Cloud)サービスのサービスを公開したり、IoTデバイスに接続したりできる
  • 耐障害性、拡張性、無停止デプロイのためにノードクラスターとしてホスティングできる

Pikoの仕組み

  • アップストリームサービスは Piko に接続してエンドポイントを登録する
  • Piko はアウトバウンド専用接続を通じて、登録されたアップストリームサービスへエンドポイントへのリクエストをルーティングする
  • これは公開ポートを開かずにサービスを公開できることを意味する
  • 受信した HTTP(S) リクエストは Host ヘッダーまたは x-pico-endpoint ヘッダーを使って対象エンドポイントの ID を識別する
  • 複数のアップストリームサービスが同じエンドポイントを登録している場合、Piko はそのエンドポイントへのリクエストを登録済みアップストリーム間でロードバランシングする

Pikoの設計目標

本番トラフィックの処理

  • Piko はテストや開発ツールではなく、本番トラフィックを処理するよう設計されている
  • Piko を使って顧客ネットワークにアクセスし、BYOC ソリューションを構築し、IoT デバイスにアクセスできる
  • これを支えるため、Piko は耐障害性、水平スケーリング、無停止デプロイのためにノードクラスターとして実行できる
  • また、監視とデバッグのための可観測性ツールを提供する

ホスティングの容易さ

  • Piko は Kubernetes 上でホスティングしやすいよう設計されている
  • Piko クラスターは HTTP ロードバランサーまたは Kubernetes Gateway の背後で、Kubernetes StatefulSet としてホスティングできる
  • アップストリームサービス接続とプロキシクライアントのリクエストは、クラスター内のすべてのノードにロードバランシングでき、Piko はリクエストを正しいアップストリームへルーティングすることを管理する

セキュリティ

  • アップストリームサービスはアウトバウンド専用接続を通じて Piko に接続する
  • Piko はその接続を通じてすべてのリクエストをアップストリームへルーティングする
  • そのため、アップストリームはリクエストを受信するためにポートを開く必要がない
  • Piko は、アップストリームサービスがエンドポイントを登録する前に認証することをサポートする
  • Piko はセルフホスト可能なため、プロキシクライアントと同じネットワーク内でホスティングし、外部ネットワークからのリクエストを受け付けないようにできる
  • たとえば、認証済みアップストリームサービスが TLS 経由でインターネットから登録できるようにしつつ、Piko と同じネットワーク内にあるプロキシクライアントに対してのみ内部ルートを提供できる

6件のコメント

 
halfenif 2024-05-17

これは、公開ポートを開けなくてもサービスを公開できることを意味します。

それがどのような意味を持つのか、==具体的な事例が気になります。

 
secret3056 2024-05-17

例えば、情報工学科の学部生Aがプロジェクトをしているとしましょう。
一生懸命開発したAは、いよいよ発表日が近づき、このサービスをデモしたいと考えます。
しかしAは、サーバーを書けるようになったばかりで、サーバーやインスタンスを立ち上げる方法を知りません。
しかも寮に住んでいるため、ポートフォワーディングでサービスを公開することもできません。
そこでトンネリングの出番です。
寮にあるノートPCで ngork http 8080 と打つとランダムなURLが発行され、教室でデモするときにユーザーがこのURLに接続すれば、ngrokサーバー-ngrokクライアント-AのサーバープログラムへとHTTPリクエストが転送され、別途ポートフォワーディングをしなくてもサービスを公開できるようになります。

 
lastorder 2024-05-16

https://github.com/andydunstall/piko/pull/20

プロジェクト名が Pico から Piko に変更されたようです。すでに pico という名前のエディタがあるため、衝突の問題で変更されたものと思われます。

 
dontdieych 2024-05-18

picoエディタを知らないという返答を見て、自分のオッサン力を感じます。nanoの前はpicoだったのに(泣)

 
xguru 2024-05-16

昨日見つけて整理して投稿したものですが……その間に変わっていましたね(涙) 修正しておきました。