- Reverse proxy untuk tunneling ke jaringan eksternal
- Menangani traffic tingkat produksi, dan dirancang agar mudah di-hosting (terutama di Kubernetes)
- Dapat mengekspos layanan di jaringan pelanggan, layanan BYOC (Bring Your Own Cloud), atau terhubung ke perangkat IoT
- Dapat di-host sebagai klaster node untuk toleransi kesalahan, skalabilitas, dan deployment tanpa downtime
Cara kerja Piko
- Layanan upstream terhubung ke Piko untuk mendaftarkan endpoint
- Piko merutekan permintaan untuk endpoint ke layanan upstream yang terdaftar melalui koneksi outbound-only
- Ini berarti layanan dapat diekspos tanpa membuka port publik
- Permintaan HTTP(S) yang masuk mengidentifikasi ID endpoint target menggunakan header Host atau header
x-pico-endpoint
- Jika beberapa layanan upstream mendaftarkan endpoint yang sama, Piko melakukan load balancing permintaan untuk endpoint tersebut di antara upstream yang terdaftar
Tujuan desain Piko
Menangani traffic produksi
- Piko dirancang untuk menangani traffic produksi, bukan sekadar alat pengujian dan pengembangan
- Dengan Piko, Anda dapat mengakses jaringan pelanggan, membangun solusi BYOC, dan mengakses perangkat IoT
- Untuk mendukung hal ini, Piko dapat dijalankan sebagai klaster node demi toleransi kesalahan, penskalaan horizontal, dan deployment tanpa downtime
- Piko juga menyediakan alat observabilitas untuk pemantauan dan debugging
Kemudahan hosting
- Piko dirancang agar mudah di-hosting di Kubernetes
- Klaster Piko dapat di-host sebagai Kubernetes StatefulSet di belakang HTTP load balancer atau Kubernetes Gateway
- Koneksi layanan upstream dan permintaan klien proxy dapat di-load balance ke semua node dalam klaster, dan Piko mengelola perutean permintaan ke upstream yang benar
Keamanan
- Layanan upstream terhubung ke Piko melalui koneksi outbound-only
- Piko merutekan semua permintaan ke upstream melalui koneksi tersebut
- Karena itu, upstream tidak perlu membuka port untuk menerima permintaan
- Piko mendukung autentikasi layanan upstream sebelum mendaftarkan endpoint
- Karena Piko dapat di-self-host, Piko dapat di-host dalam jaringan yang sama dengan klien proxy sehingga tidak perlu menerima permintaan dari jaringan eksternal
- Misalnya, Anda dapat mengizinkan layanan upstream yang terautentikasi untuk mendaftar dari internet melalui TLS, lalu hanya menyediakan rute internal untuk klien proxy yang berada di jaringan yang sama dengan Piko
6 komentar
Ini berarti layanan dapat diekspos tanpa membuka port publik
Sebagai contoh, anggaplah seorang mahasiswa S1 ilmu komputer bernama A sedang mengerjakan sebuah proyek.
Setelah mengembangkannya dengan giat, saat hari presentasi mulai dekat A kini ingin mendemonstrasikan layanan ini.
Namun, A baru sebatas bisa membuat server dan tidak tahu cara menjalankan server maupun instance apa pun.
Selain itu, karena tinggal di asrama, layanan tersebut tidak bisa diekspos dengan port forwarding.
Di sinilah tunneling muncul.
Saat mengetik
ngork http 8080di laptop yang ada di asrama, sebuah URL acak akan diterbitkan, dan ketika pengguna mengakses URL ini saat demo di ruang kelas, permintaan HTTP akan diteruskan ke program server A melalui server ngrok-klien ngrok, sehingga layanan bisa diekspos tanpa port forwarding terpisah.https://github.com/andydunstall/piko/pull/20
Nama proyeknya ternyata sudah diubah dari Pico menjadi Piko. Sepertinya diubah karena sudah ada editor bernama pico sehingga menimbulkan masalah bentrokan nama.
Melihat jawaban yang tidak tahu editor pico, saya jadi merasa umur saya sudah ketahuan. Sebelum nano, dulu itu pico T_T
Saya mencarinya kemarin, merapikannya, lalu mengunggahnya.. tapi ternyata sudah berubah dalam waktu sesingkat itu huhu. Saya sudah memperbaruinya.