Selamlar arkadaşlar bu yazımda sizlere APISIX Route ve Upstream örneği vereceğim. Bu ortamımızda Ubuntu üzerinde bulunan Python HTTP Server üzerine APISIX ile yönlendirme yapacağız.
– Route Nedir?
Route’lar tanımlanan kurallara göre Clientların Requestleri ile eşleşirler, eklentileri yükleyip çalıştırır ve isteği belirtilen Upstream’e iletirler.
Bir Route 3 bölümden oluşur :
1 – Eşleştirme kuralları (uri,host ve remote address)
2 – Eklenti yapılandırması (current-limit, rate-limit)
3 – Upstream bilgisi
Route’lar içerisinde tüm akışı yazabilirsiniz. Bu demek oluyor ki bir Route girdisi Upstream ve Service bilgisini içerebilir. Ancak bu şekilde yapmanız durumunda herhangi bir değişiklik yaptığınızda tüm Route’ları gözden geçirmeniz gerekir ve buda yapımızı karmaşıklaştırabilir. Size Offical Web sitesinde bulunan bir Route örneğini ve başarılı bir şekilde oluşturulduğunu gösteren sonuç çıktısını paylaşmak istiyorum.
Yukarıda görmüş olduğunuz kodlar Offical Web Sitesinden alınmış ve uygulanmıştır. Örneği görmek için buraya tıklayabilirsiniz.
– Upstream Nedir?
Upstream’ler Route’ların yönlendirileceği Node IP’leri ve Portlarını belirtmek için kullanılırlar. Bu sayede karmaşık yapıda olan birden fazla Route’u aynı Upstream’e yönlendirmek için her birinde teker teker Upstream alanı girmek zorunda kalmazsınız ve yapınızın okunabilirliği artar.
Aynı şekilde Siteden alınmış bir Upstream örneği :
Bu şekilde Upstream’ler oluşturabilirsiniz. Route ve Upstream oluştururken ilk satırdaki http:// kodunun sonunda bulunan ve yukarıdaki örnekte 1 yazan alanı değiştirerek Route ve Upstream id’lerini değiştirebilirsiniz.
Buna benzer örnekleri sitesinde daha ayrıntılı bulabilirsiniz. Sayfasına gitmek istiyorsanız buraya basabilirsiniz.
NOT : ID’leri aynı bırakırsanız overwrite yapacaktır ve eski Route’unuzu silecektir.
– Servis Nedir?
Bir Service oluşturduğunuzda içerisine Plugin ve Upstream koyarsınız. Bu sayede API’leriniz için karmaşık yapıyı azaltabileceğiniz alan oluşturacaksınız.
Yine Offical Web Site’sindeki örnekle açıklama yapayım. 200 id’sine sahip bir Servis oluşturdum. Daha sonra bunları 100 ve 101 id’sine sahip Route içerisinde tanımlayarak kodumuzu karmaşıklıktan uzaklaştırdık. Örneği görebilmeniz için buraya tıklayabilir ve kontrol edebilirsiniz.
Şimdi Gelelim Kendi Örneğimize :
İlk olarak bir Upstream oluşturuyorum :
> curl http://192.168.1.150:9180/apisix/admin/upstreams/1 -H 'X-API-KEY: sistemdostutest' -X PUT -d '
{
"type": "roundrobin",
"key": "remote_addr",
"nodes": {
"192.168.1.151:8000": 1
}
}'
Nodes alanında girdiğim IP ve Port bilgisi yönlendirilecek olan sunucu.
Route oluşturuyorum :
> curl http://192.168.1.150:9180/apisix/admin/routes/1 -H 'X-API-KEY: sistemdostutest' -X PUT -d '
{
"uri": "*",
"upstream_id": 1
}'
Uri olarak * ile her şey anlamı verdik, Upstream 1 ile de oluşturduğumuz Upstream’e yönlendirdik.
Oluşturduğumuz Linki Test Ediyorum :
> curl -i -X GET "http://192.168.1.150:9080/"
Komutu yardımıyla test edebilirsiniz ve 200 OK yazısını görüyorsanız testiniz başarılıdır. Test işlemlerini 9080 portundan yapmalısınız. Bu port üzerinden APISIX yayın yapmaktadır.
Aynı şekilde tarayıcıdan ipleri girip test ettiğinizde de yukarıdaki gibi başarılı olduğunu göreceksiniz.
Bir yazımın daha sonuna geldik arkadaşlar. Umarım bu konu sizin için yararlı olmuştur ve Lab’ı da yapabilmişsinizdir. Bana destek vermek isterseniz SistemDostu Youtube kanalımı ziyaret edebilir ve abone olabilirsiniz. Yorum ve görüşlerinizi ise yorumlar alanından bırakabilirsiniz.