Gateway Runtime'ları
Gateway Altyapısı, Apinizer platformunda API Proxy'lerin çalışacağı Gateway Runtime ortamlarını oluşturmak ve yönetmek, Kubernetes kaynaklarını yönetmek, Gateway Engine yapılandırması yapmak, SSL/TLS sertifikaları yapılandırmak ve API trafik log konnektörlerini yönetmek için gerekli tüm araçları sunar.
Modül Bileşenleri
Gateway Altyapısı modülü aşağıdaki sayfalar üzerinden yönetilir:
Gateway Runtime ortamları oluşturma, Gateway Engine yapılandırması, ortam yayımlama ve metrik izleme.
Dağıtık Cache Server'ları oluşturma ve yapılandırma. Cache Server'ları Gateway pod'larından bağımsız namespace'lerde çalışabilir.
Apinizer Platformu ortamlarının genel ayarları, deployment ve pod yönetimi, monitör ve ayarlar.
Gateway Runtime ortamlarına log konnektörleri ekleme ve API trafik loglarının nereye yazılacağını yapılandırma.
Apinizer modüllerini (Manager, Gateway, Portal) SSL/TLS sertifikaları ile güvenli şekilde başlatma ve HTTPS bağlantıları sağlama.
Gateway Runtime Nedir?
Gateway Runtime (Ortam), bir kuruluştaki API Proxy'leri için bir çalışma zamanı yürütme bağlamıdır (Runtime Execution Context). Bir veya birden fazla API Proxy'e erişilebilmesi için Gateway Runtime ortamına dağıtılması gerekir. Bir API Proxy tek bir Gateway Runtime ortamına veya birden çok ortama dağıtılabilir.
Sistem Genel Ayarlar ekranı üzerinden, Kubernetes Namespace ve Resource'lar Apinizer ile yönetilsin seçeneği Aktif olarak işaretlendiğinde gelmektedir.
Bir Gateway Runtime ortamı, Gateway'leri çalıştırmak için sistem kaynağı olarak yalıtılmış, izole bir alan sağlar. Apinizer platformunda birden çok Gateway Runtime ortamı oluşturulmasına izin verir.
Gateway Runtime yönetimi iki şekilde gerçekleştirilir:
- Apinizer Tarafından Yönetilen (Managed by Apinizer): Gateway Runtime'ları için gereken tüm Kubernetes tanımları API Manager ekranı üzerinden oluşturulur ve yönetilir
- Uzak Gateway (Remote Gateway): API Manager ekranında mevcut Kubernetes tanımlarının sadece standart verileri kaydedilir
Gateway Runtime'ları ve Cache Server'ları ayrı ayrı yönetilmektedir. Cache Server oluşturma ve yönetimi için Dağıtık Cache sayfasına bakabilirsiniz.
:::
Gateway Runtime Rolleri
Bir Gateway Runtime ortamı, Üretim (Production), Geliştirme/Test (Development/Test) olarak farklı rollerde oluşturulabilir.
Burada dikkat edilmesi gereken nokta, istemcinin API Proxy'e erişebilmesi için en az bir Gateway Runtime ortamına dağıtılmış olması gerekir.
Test environment'da etkin olan API Proxy'ler veya Uygulamalar'ı test etmek amaçlı kullanılır. Donanımdaki kaynakların yeterliliğini ölçmek için de test yapılabilir.
Eğer test ortamından uzak bir ürün geliştirme yapılırsa ilerleme konusunda sorunlar yaşatabilir.
Production ortamında etkin olan API Proxy'ler veya Uygulamalar'a son kullanıcıların kullanımı için kullanılır. Bu ortam istemcilerin yükünü taşıyabilecek şekilde tasarlanmıştır.
Gateway Runtime Mimarisi
Gateway Runtime ortamı, birçok API'nin birden çok ekibe veya projeye yayıldığı ortamlarda kullanılmak üzere tasarlanmıştır. Apinizer'daki Gateway Runtime kavramı birebir Kubernetes'deki namespace'e denk gelmektedir.
Apinizer'da oluşturduğunuz ve dağıttığınız Gateway Runtime ortamı Kubernetes'de bir namespace olarak oluşturulmaktadır. Bir Gateway Runtime ortamı içinde namespace, deployment (dağıtım), pod, replica set, service ve access URL (erişim adresi) bileşenleri bulunur.
Apinizer Platformu ile oluşturulan tüm Gateway Runtime ortamları da Kubernetes kümesinin içinde yer alır.
Kubernetes Namespace Kavramı:
Kubernetes kümeleri büyük miktarda bağlantısız iş yüklerini eş zamanlı olarak yönetebilir. Kubernetes, küme içindeki objelerin karmaşasını gidermek için namespace denilen bir kavram kullanır.
Namespace'ler objelerin birbirleriyle gruplanmasına ve bu grupların bir birim gibi filtrelenip kontrol edilmesine imkan sağlar. İster özelleştirilmiş erişim kontrol politikalarını uygulamak, ister bir test ortamı için tüm birimleri ayırmak için kullanılsın, namespace'ler objeleri bir grup olarak yönetmek için güçlü ve esnek bir yapıdır.
Namespace'ler küme içindeki obje isimleri için bir faaliyet alanı sağlar. Bir namespace içindeki isimler özgün olmalı iken, farklı namespace'lerde aynı isim kullanılabilir.
Detaylı bilgi için Kubernetes Dokümantasyonu.
Gateway Runtime Bileşenleri
Namespace
Apinizer Platformundaki Gateway Runtime kavramı, Kubernetes ortamındaki Namespace kavramına karşılık gelmektedir.
Log Konnektörleri
Oluşturulan Gateway Runtime ortamındaki tüm API Trafiğinin ve isteklerin loglanacağı log konnektörleri tanımlarıdır.
Deployment (Dağıtım)
Gateway Runtime olarak deployment tanımlanır:
- Gateway Runtime (Worker Server): Apinizer Platform'un çekirdek (core) modülüdür, tüm API isteklerinin BackendAPI'ye yönlendirilmesinden sorumludur ve Policy Enforcement Point olarak çalışır. Gateway Runtime'ları artık Cache Server'larından bağımsız olarak yönetilir ve farklı namespace'lerde çalışabilir.
Service (Servis)
Gateway Runtime Service (Gateway Runtime servisi), Gateway Runtime Deployment'da yer alan Gateway pod'una erişebilmek için oluşturulur. Servis, tüm pod'lara gelen istekleri karşılayan katmandır. Konum olarak pod'ların önünde yer alır.
Servis bilgisi her Gateway Runtime ortamı oluşturulduğunda tanımlanır. Fakat küme içindeki tüm Gateway pod'larının bir servis ile yönetilmesi önemlidir. Ayrıca Apinizer Platformu'nda servis portları da özgün olmalıdır. Varsayılan olarak NodePort kullanılmakta ve bunun haricindeki servis tipleri Apinizer tarafından desteklenmemektedir.
Access URL (Erişim Adresi)
Access URL, Proxy'nin dış erişim adresidir. https:// <your-IP-address> şeklinde belirtilir. Dışarıdan erişim adres bilgisi kullanılarak Proxy'lere mesaj
gönderilebilir.
Gateway Runtime Erişim Adresi
Bir API Proxy'e, dağıtıldığı Gateway Runtime ortamının erişim adresi üzerinden erişilebilir.
Erişim Adresi Yapısı
Bir API Proxy'nin erişimi adresi şöyle olsun:
http://demo.apinizer.com/apigateway/myproxy
| Bileşen | Açıklama |
|---|---|
http://demo.apinizer.com/ | Gateway Runtime Erişim Adresi |
apigateway/ | Root Context |
myproxy | API Proxy Relative Path |
Erişim Adresi Yapılandırması
Gateway Runtime ortamı için tanımlanacak erişim adresi genelde, WAF veya Nginx gibi bir load balancer'da tanımlanan DNS adresidir. Apinizer'da tanımlanan Gateway Runtime ortamları Kubernetes'de bir namespace'e karşılık gelmektedir. Namespace içinde çalışan Gateway pod'larına erişim için Apinizer tarafından otomatik bir NodePort tipinde Kubernetes servisi oluşturulmaktadır. Gateway Runtime ortamı oluştururken Engine Service Port'a girilen değer ile bir servis oluşturulmaktadır.