Skip to content

Piko

An open-source alternative to Ngrok, designed to serve production traffic and be simple to host (particularly on Kubernetes)

Ngrok의 오픈소스 대체제

Features

  • 외부 네트워크로 터널링하는 리버스 프록시
  • 프로덕션 수준의 트래픽을 처리하며, 호스팅(특히 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와 동일한 네트워크에 있는 프록시 클라이언트에 대해서만 내부 경로를 제공할 수 있음

Getting Started

See also

Favorite site