Ağ Geçidi Ortamları (Gateways Environments)
Ortam (Environment), bir kuruluştaki API Proxy'leri (API Proxy) için bir çalışma zamanı yürütme bağlamıdır (Runtime Execution Context).
Bu bölümde, ortam oluşturma ve ilgili işlemler anlatılmaktadır.
Sistem Genel Ayarlar ekranı üzerinden, Kubernetes Namespace ve Resource'ları Apinizer ile yönetilsin seçeneği Aktif olarak işaretlendiğinde gelmektedir.
Ortam Oluşturma
Ortam oluştururken genel tanım bilgilerini içeren görsellere aşağıda yer verilmiştir:
Ortam genel bilgilerini içeren alanlar aşağıdaki tabloda görülmektedir.
Alan | Açıklama |
---|---|
Tür (Type) | Test lisanstan düşülmemesi için tür olarak Test veya Üretim (Production) seçilebilir. |
Ad (Name) | Ortamın adı. |
Anahtar (Key) | Oluşturulan ortam için kullanılan ve ortama özgü kısaltılmış bir anahtardır. |
Node Listesi (Node List) | Oluşturulan ortamın hangi kubernetes worker sunucularında çalışacağı seçilir. |
Proje (Project) | Ortamın kullanılabileceği projeleri buradan seçebilir ya da tüm projelerde kullanılabilmesi için seçimi boş bırakılabilir. Eğer bir veya birden çok proje seçimi yapılırsa, yeni oluşturulan projelerde de kullanılmak için onların da eklenmesi gerekmektedir. Varsayılan değer olarak seçimsiz gelir. Proje seçilmesi durumunda sadece o proje içerisinde yer alan API Proxyler'in bu ortama deploy edilebileceği anlamına gelir. |
Erişim URL Adresi () | Ortam içinde çalışan API Proxy'lerin dış erişim adresidir. Bir önceki bölümde Ortam Erişim Adresi başlığında detaylı olarak açıklanmıştır. |
Açıklama (Description) | Yönetim kolaylığı ve önemli notlar için kullanılabilir. |
Gateway Sunucusu Erişim URL'si (Gateway Server Access URL) | Apinizer Yönetim konsolunda yapılan konfigürasyonların Gateway Pod'larına yüklenebilmesi için gerekli olan nodeport veya ingress tipindeki servis erişim adresi buraya girilir. Örnek: http://worker-http-service.prod.svc.cluster.local:8091 Eğer HTTPS Etkin (HTTPS Enabled) seçeneği seçilirse buradaki adrese de dikkat edilmelidir Örnek: https://worker-https-service.prod.svc.cluster.local:8443 |
Cache Sunucusu Erişim URL'si (Cache Server Access URL) | Apinizer Yönetim konsolunda yapılan konfigürasyonların Cache Pod'larına yüklenebilmesi için veya Gateway Pod'larının cache podlarına erişebilmesi için gerekli olan nodeport veya ingress tipindeki servis erişim adresi buraya girilir. Örnek: http://cache-http-service.prod.svc.cluster.local:8090 |
API Proxy Trafik Log Konnektörleri
Ortamdaki tüm API Proxy Trafiğinin ve uzantılarının loglanacağı log konnektörleri buradan tanımlanır.
API Proxy Trafik Log Konnektörü tanımlamalarını içeren görsele aşağıda yer verilmiştir:
Ortama konnektör ekleme hakkında daha fazla bilgi için lütfen bu sayfaya bakın.
Gateway Engine ve Cache Sunucu Ayarları
Gateway engine ve Cache sunucusu, Kubernetes ortamındaki pod'lara karşılık gelmektedir.
Gateway engine'in Apinizer Platformu'ndaki adı apinizer-worker'dır. Apinizer Platforum'un çekirdek (core) modülüdür, tüm API isteklerinin BackendAPI'ye yönlendirilmesinden sorumludur ve Policy Enforcement Point olarak çalışır.
Cache sunucusu Apinizer Platformu'ndaki adı apinizer-cache'dir. Apinizer'da gerek duyulan Cache değerlerinin tutulduğu ortamdır.
Gateway engine ve Cache sunucu tanımlamalarını içeren görsellere aşağıda yer verilmiştir:
Gateway engine bölümündeki konfigürasyon için kullanılan alanlar aşağıdaki tabloda görülmektedir.
Alan | Açıklama |
---|---|
Sayısı (Count) | Gateway engine sayısı, Kubernetes Cluster'daki replicaSet ile eş değerdir. |
CPU | Pod'un kullanacağı maksimum CPU core sayısı bilgisidir. |
Bellek (Memory) | Pod'un kullanacağı maksimum bellek değeridir. |
Bellek Birimi (Memory Unit) | Bellek için gerekli olan değerin birimi seçilir; MB, GB. |
Protocol Ayarları (Protocol Settings) | HTTP Etkin (HTTP Enabled) seçeneği varsayılan olarak seçili olarak gelir. Eğer HTTPS kullanılmak istenirse HTTPS Etkin (HTTPS Enabled) seçeneği de seçilir, bu durumda şifreleme için gerekli dosyalar yüklenmelidir. mTLS ayarı HTTPS protokolü üzerinde çalıştığından sadece HTTPS ayarı açıkken seçilebilir ve sunucunun istemciden kimlik doğrulamasını istemesine olanak tanır, ancak bağlantıyı kurmak için bunu kesin bir gereklilik olarak zorlamaz. Eğer mTLS yetkilendirmesinin yapılması zorunlu olarak istenecekse mTLS politikası kullanılmalıdır. |
Keystore (Keystore) | HTTPS protokülü seçildiğinde, keystore dosyaları JKS veya PFX formatında yüklenebilir. |
Truststore (Truststore) | HTTPS protokülü seçildiğinde, truststore dosyaları JKS veya PFX formatında yüklenebilir. |
Keystore Şifresi (Keystore Password) | Keystore dosyasına ait şifre girilir. |
Truststore Şifresi (Truststore Password) | Truststore dosyasına ait şifre girilir. |
HTTPS Engine Servis Portu (Https Engine Service Port) | 30080-32767 aralığında bir servisin portu girilir. |
HTTP Engine Servis Portu (Http Engine Service Port) | Uygulama içinde çalışan servislere erişmek için gerekli port bilgisidir. |
Ek Değişkenler (Additional Variables)
Pod içinde çalıştırılacak varsayılan ve opsiyonel değişkenler ve değerleri tanımlanır.
Varsayılan değişkenler silinemez, sadece değerleri düzenlenebilir ya da yenileri eklenebilir.
Değişken Adı | Açıklaması | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
JAVA_OPTS | -XX: MaxRAMPercentage: JVM Heap değerlerini konteyner içinde çalıştığından konteynere verilen belleğin %75'ini kullanacak şekilde ayarlar http.maxConnections: Bu ortamdan açılabilecek maksimum http bağlantı sayısını ayarlar. | ||||||||||||||||||||
tuneWorkerThreads | Sunucunun minumum kaç adet Worker thread ile çalışacağını belirtir. Önerilen değerleri şu şekildedir:
| ||||||||||||||||||||
tuneWorkerMaxThreads | Sunucunun maksimum kaç adet Worker thread ile çalışacağını belirtir. Önerilen değerleri şu şekildedir:
| ||||||||||||||||||||
tuneBufferSize | Byte cinsinden bir threadin yazma işlemi için kullanacağı buffer alan büyüklüğüdür. | ||||||||||||||||||||
tuneIoThreads | IO Thread sayısıdır. Önerilen değerleri işlemci sayısı ile paralel olmasıdır. | ||||||||||||||||||||
tuneBacklog | Sunucunun bağlantıları kabul etmeye hazır olması durumunda bekleyen maksimum bağlantı kuyruğu boyutunu belirtir. | ||||||||||||||||||||
tuneRoutingConnectionPoolMaxConnectionPerHost | API Proxylerin backend bağlantılarında bir host başına kullanılabilecek maksimum bağlantı havuzu değeridir. | ||||||||||||||||||||
tuneRoutingConnectionPoolMaxConnectionTotal | API Proxylerin backend bağlantıları için kullanılacak maksimum bağlantı havuzu değeridir. Önerilen değerleri şu şekildedir:
| ||||||||||||||||||||
defaultCharset | Bu alan eklenmediğinde varsayılan olarak UTF-8 karakter seti kullanılır; bu alan, request ve response işlemlerinde kullanılan karakter setini belirtir. | ||||||||||||||||||||
logLevel | Ortamların başlarken uygulama loglarının bu parametre ile öntanımlı olarak başlatılmasını sağlar. ERROR, WARNING, INFO, DEBUG, TRACE ve OFF değerlerini alabilir. | ||||||||||||||||||||
multi-part / Dosya Yükleme Parametreleri | Dosya yüklemeleri için multi-part HTTP isteklerine ait ayarları konfigüre etmek için aşağıdaki anahtar parametreler kullanılmalıdır;
Tüm anahtar kavramların boyut değeri byte cinsindendir, yani 1024*1024*100, 100 MB'dir. | ||||||||||||||||||||
Token Servisi CORS Parametreleri | Apinizer üzerinden JWT veya OAuth2 Token almak için bir javascript uygulaması bağlandığında, Apinizer token servisinden CORS değerlerinin dönmesi ihtiyacı duyulur. JWT veya OAuth2 Token ayarları;
| ||||||||||||||||||||
Token Servisi X-Forwarded-For Parametreleri | Apinizer üzerinden JWT veya OAuth2 Token almak için bir istek yapıldığında istemcinin IP'sinin alınması gereklidir. JWT veya OAuth2 Token ayarları;
|
Cache sunucu konfigürasyonu için kullanılan alanlar aşağıdaki tabloda görülmektedir.
Alan | Açıklama |
---|---|
Cache Sayısı | Cache sayısı, Kubernetes Cluster'daki replicaSet ile eş değerdir. |
CPU | Pod'un kullanacağı maksimum CPU core sayısı bilgisidir. |
Bellek (Memory) | Pod'un kullanacağı maksimum bellek değeridir. |
Bellek Birimi (Memory Unit) | Bellek için gerekli olan değerin birimi seçilir; MB, GB. |
Ek Değişkenler (Additional Variables) | Pod içinde çalıştırılacak varsayılan ve opsiyonel değişkenler ve değerleri tanımlanır. Varsayılan değişkenler silinemez, sadece değerleri düzenlenebilir. Cache'in kubernetes üzerinden diğer cache pod'larına erişebilmesi için CACHE_SERVICE_NAME değeri eklenmelidir.
Cache'de günlük kota bilgileri de tutulmaktadır. Günlük kota bilgileri UTC timezone'a göre sıfırlanır. Eğer günlük değişen kotanın başlangıç zamanını kendi yerel saatinize göre sıfırlanmasını istiyorsanız ek değişkenlere CACHE_QUOTA_TIMEZONE değerini ekleyebilirsiniz. Buraya eklenen değerin "+03:00" şeklinde yazılması gereklidir.
Cache podlarının ilk açılışta veritabanındaki değerleri tek seferde yüklemeye çalışması istenmiyorsa CACHE_LAZY_MODE değeri lazy olarak eklenebilir. Bu durumda öncelik pod'un açılmasına verilir ve değerler pod açıldıktan sonra da yüklenmeye devam edebilir. Veritabanında yüksek miktarda kayıt varsa bu değerin girilmesi önerilir.
|
Ek değişkenler alanındaki Java Options ayarını yapılandırırken aşağıdaki uyarı dikkate alınmalıdır;
-Xmx ve -Xms ayarlarının otomatik yığın (heap) boyutlandırmasını devre dışı bıraktığını lütfen unutmayınız.
Apinizer, JVM Yığın (Heap) değerlerini konteyner içinde çalıştığından konteynere verilen belleğin %75'ini kullanacak şekilde ayarlar.
UseContainerSupport varsayılan olarak aktif gelmektedir.
Eski bayraklar (flag) -XX: {Min | Max} RAMFraction artık kullanımdan kaldırıldı. 0.0 ve 100.0 arasında bir değer alan ve varsayılan olarak 25.0 olan yeni bir -XX: MaxRAMPercentage bayrağı (flag) vardır. Bu nedenle, 1 GB bellek sınırı varsa, JVM yığını (heap) varsayılan olarak ~ 250 MB ile sınırlıdır.
Detaylı bilgi için tıklayınız.
Host Takma Adlarını Ayarlama
Host Takma Adı (Host Alias) nedir? Neden ihtiyaç duyulur?
Ağda bulunan IP adresleri bazen host isimleri arkasına konulabilir, bunlar eğer nameserver ya da host dosyasına tanımlanmamışsa ya da bir şekilde Apinizer'ın bunları çözmesi sağlanamamışsa, worker podların bu isimleri çözmesi için Host Alias tanımı yapılmalıdır.
Burada yapılan değişikliklerin etkinleşmesi için republish işlemi gerekmektedir. Versiyon güncellemesine nazaran bu işlemde bir kaç dakikalık kesinti olacağına dikkat edilmelidir.
Kubernetes üzerinde host adları ya da bunlara karşılık gelen IP adreslerine, takma host isimleri verilebilir. Bu ayar, deployment.yaml dosyası içinde tanımlanır.
Host takma adı ayarlarını içeren görsele aşağıda yer verilmiştir:
Ortamı Yayımlama
Bir ortamı yayımlamak için Yayınlanmamış (Unpublished) butonuna tıklanır.
Gelen pencereden işlemi onaylamak için Yayınla (Publish) butonuna tıklanır ve ortam kubernetes sunucusuna dağıtılır (deploy).
Ortamı Yeniden Yayınlama
Yayımlanmış durumda olan bir ortamın üzerine gelerek Yayınlanmış (Published) butonuna tıklanır.
Gelen pencereden işlemi onaylamak için Yeniden Yayınla (Republish) butonuna tıklanır.
Ortamı Yeniden Yayınla işleminden sonra, Pod'lar da yeniden başlatılır (restart).
JWT Token Doğrulama Anahtarı
Ortam kayıt edilmiş ise JWT Token Doğrulama Anahtarı üretilmiştir. Bu token, kimlik doğrulama politikaları için Apinizer Token Servisi üzerinden token üretmede yer alan private key'in değeridir. Eğer kullanıcı kendi token'ını üretmek isterse buradaki private key'den faydalanmalıdır.
Bu bilgilere erişmek için JWT Token Doğrulama Anahtarı (JWT Token Validation Keys) tabına gidilir.
Redeploy tuşuna tıklayarak mevcut anahtarın değişiklik yapılmadan sunuculara tekrar yüklenmesi sağlanabilir.
Regenerate & Deploy tuşuna tıklayarak yeni anahtar üretilip sunuculara yüklenmesi sağlanabilir.
Upload & Deploy tuşuna tıklayarak PEM Encoded Private Key dosyası yüklenebilir ve bu anahtara göre yeni anahtar üretilmesi ve kullanılması sağlanabilir.
Ortam (Environment) Silme
Ortamı seçerek, en altta bulunan Ortamı Sil (Remove Environment) tabından Ortamı Sil (Remove Environment) diyerek ortam ile ilgili bilgileri veritabanından silinmiş olur.
Silme işlemi tamamlandığında bu ortamda kayıtlı tüm API Proxylerin yüklemesi de silinir ve bu ortama daha önceden yüklenmiş olan API Proxy'lere bu ortam üzerinden artık erişilemez.
Önbellek Monitörü
API Proxy ekranının Genel Bilgi sekmesinde Cache bölümündeki ayarlar ile istek, önbelleğe alınarak, Backend API'ye gitmeden yanıtlanabilir. Aynı zamanda kota ve darboğaz (quota ve throttle) politikaları da cache pod'u üzerinden yönetilmektedir.
Ortam bazlı olarak önbellek işlemlerini izlemek, detaylarını görmek ve silmek için ortamın Önbellek (Cache) linkinden bu sayfaya gidilir.
Önbellek Monitörünü içeren görsele aşağıda yer verilmiştir:
Metrik Monitörü
Kubernetes üzerindeki Worker ve Cache podların durumunu izlemek için ortam listesinden ilgili ortamın Podlar (Pods) linkine tıklanır.
Podlar ekranını içeren görsele aşağıda yer verilmiştir:
Eğer tüm ortamların metriklerine erişmek isterseniz buraya tıklayınız.