- Harici ağa tünelleme yapan bir ters proxy
- Üretim düzeyindeki trafiği işler ve barındırmanın (özellikle Kubernetes üzerinde) kolay olması için tasarlanmıştır
- Müşteri ağlarını, BYOC (Bring Your Own Cloud) hizmetlerini dışa açmak veya IoT cihazlarına bağlanmak için kullanılabilir
- Hata toleransı, ölçeklenebilirlik ve kesintisiz dağıtım için bir düğüm kümesi olarak barındırılabilir
Piko nasıl çalışır
- Upstream servisler Piko'ya bağlanarak endpoint'leri kaydeder
- Piko, yalnızca giden bağlantılar üzerinden kayıtlı upstream servislerine endpoint isteklerini yönlendirir
- Bu, genel port açmadan servisleri dışa açabileceğiniz anlamına gelir
- Gelen HTTP(S) istekleri, hedef endpoint'in kimliğini belirlemek için
Host başlığını veya x-pico-endpoint başlığını kullanır
- Birden fazla upstream servis aynı endpoint'i kaydederse, Piko bu endpoint'e gelen istekleri kayıtlı upstream'ler arasında load balancing ile dağıtır
Piko'nun tasarım hedefleri
Üretim trafiğini işleme
- Piko, test ve geliştirme aracı olarak değil, üretim trafiğini işlemek için tasarlanmıştır
- Piko ile müşteri ağlarına erişebilir, BYOC çözümleri kurabilir ve IoT cihazlarına erişebilirsiniz
- Bunu desteklemek için Piko, hata toleransı, yatay ölçekleme ve kesintisiz dağıtım amacıyla bir düğüm kümesi olarak çalıştırılabilir
- Ayrıca izleme ve hata ayıklama için gözlemlenebilirlik araçları sunar
Barındırma kolaylığı
- Piko, Kubernetes üzerinde kolay barındırılacak şekilde tasarlanmıştır
- Piko kümesi, bir HTTP load balancer veya Kubernetes Gateway arkasında, Kubernetes StatefulSet olarak barındırılabilir
- Upstream servis bağlantıları ve proxy istemci istekleri, kümedeki tüm düğümlere load balancing ile dağıtılabilir; Piko ise istekleri doğru upstream'e yönlendirmeyi yönetir
Güvenlik
- Upstream servisler Piko'ya yalnızca giden bağlantılar üzerinden bağlanır
- Piko, tüm istekleri bu bağlantılar üzerinden upstream'e yönlendirir
- Bu nedenle upstream'in istek almak için port açması gerekmez
- Piko, upstream servislerin endpoint kaydetmeden önce kimlik doğrulaması yapmasını destekler
- Piko self-hosted olarak çalıştırılabildiği için, proxy istemciyle aynı ağda barındırılarak harici ağlardan gelen istekler kabul edilmeyebilir
- Örneğin, kimliği doğrulanmış upstream servislerin internet üzerinden TLS ile kayıt olmasına izin verirken, yalnızca Piko ile aynı ağdaki proxy istemciler için iç rotalar sunabilirsiniz
6 yorum
Bu, ortak bir port açmadan da servisi dışarıya açabileceğiniz anlamına geliyor.
Örneğin bilgisayar mühendisliği lisans öğrencisi A'nın bir proje üzerinde çalıştığını varsayalım.
Büyük emek vererek geliştiren A, sunum günü yaklaşınca artık bu hizmeti demo etmek ister.
Ancak A henüz yeni yeni sunucu kodlamayı biliyordur; herhangi bir sunucuyu ya da instance'ı ayağa kaldırmayı bilmez.
Üstelik yurtta yaşadığı için port forwarding ile hizmetini dışarı açamaz.
İşte bu noktada tunneling devreye girer.
Yurttaki dizüstü bilgisayarda
ngork http 8080yazıldığında rastgele bir URL verilir ve sınıfta demo yapılırken kullanıcı bu URL'ye bağlandığında, HTTP isteği ngrok sunucusu -> ngrok istemcisi -> A'nın sunucu programına iletilir; böylece ek bir port forwarding olmadan da hizmet dışarı açılabilir.https://github.com/andydunstall/piko/pull/20
Proje adı Pico'dan Piko'ya değiştirilmiş. Görünüşe göre
picoadlı bir editör zaten olduğu için ad çakışması sorunu nedeniyle değiştirilmiş.picoeditörünü bilmediğine dair yanıtı görünce kendimi gerçekten eski toprak gibi hissettim.nanodan öncepicovardı, hüzün hüzünDün bulup düzenleyip paylaşmıştım ama bu arada değişmiş hıçkırık Düzelttim.