39 puan yazan xguru 2024-05-16 | 6 yorum | WhatsApp'ta paylaş
  • 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

 
halfenif 2024-05-17

Bu, ortak bir port açmadan da servisi dışarıya açabileceğiniz anlamına geliyor.

Bunun ne anlama geldiğini==örnekleri merak ediyorum.

 
secret3056 2024-05-17

Ö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 8080 yazı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.

 
lastorder 2024-05-16

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

Proje adı Pico'dan Piko'ya değiştirilmiş. Görünüşe göre pico adlı bir editör zaten olduğu için ad çakışması sorunu nedeniyle değiştirilmiş.

 
dontdieych 2024-05-18

pico editörünü bilmediğine dair yanıtı görünce kendimi gerçekten eski toprak gibi hissettim. nanodan önce pico vardı, hüzün hüzün

 
xguru 2024-05-16

Dün bulup düzenleyip paylaşmıştım ama bu arada değişmiş hıçkırık Düzelttim.