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:

CPUThread Sayısı
1512
21024
42048
84096
tuneWorkerMaxThreads

Sunucunun maksimum kaç adet Worker thread ile çalışacağını belirtir. Önerilen değerleri şu şekildedir:

CPUThread Sayısı
11024
22048
44096
88192
tuneBufferSizeByte cinsinden bir threadin yazma işlemi için kullanacağı buffer alan büyüklüğüdür.
tuneIoThreadsIO Thread sayısıdır. Önerilen değerleri işlemci sayısı ile paralel olmasıdır. 
tuneBacklogSunucunun bağlantıları kabul etmeye hazır olması durumunda bekleyen maksimum bağlantı kuyruğu boyutunu belirtir.
tuneRoutingConnectionPoolMaxConnectionPerHostAPI 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:

CPUBağlantısı Sayısı
11024
22048
44096
88192
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;


ParametreAçıklamaÖrnek Değer (byte)
multipartConfigMaxFileSizeDosya yüklemek için izin verilen maksimum boyuttur104857600
multipartConfigMaxRequestSizemulti-part/form-data isteği için izin verilen maksimum boyuttur104857600
multipartConfigFileSizeThresholdDosyanın diske yazılacağı boyut eşiğidir104857600

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ı;

  • API Proxy üzerinden yönetilecekse, API proxy üzerindeki CORS ayarı token için de aktif olur.
  • Credential üzerinden yönetilecekse, worker sunucusuna verilen aşağıdaki parametreler kullanılır.
CORS ParametresiÖrnek Değer
tokenCorsAccessControlAllowOrigin*
tokenCorsAccessControlAllowCredentialstrue
tokenCorsAccessControlAllowMethodsGET, POST, PUT, DELETE, OPTIONS
tokenCorsAccessControlAllowHeaders

Authorization, Content-Type, Cache-Control

tokenCorsAccessControlOrigin

*

tokenCorsAccessControlRequestMethod

GET, POST, PUT, DELETE, OPTIONS

tokenCorsAccessControlRequestHeaders

Authorization, Content-Type, Cache-Control

tokenCorsAccessControlExposeHeaders

Authorization, X-Requested-With

tokenCorsAccessControlMaxAge

3600

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ı;

  • API Proxy üzerinden yönetilecekse, API proxy üzerindeki XFF ayarı token için de aktif olur.
  • Credential üzerinden yönetilecekse, worker sunucusuna verilen aşağıdaki parametreler kullanılır.
XFF ParametresiÖrnek Değer
tokenXForwardedForIpHeader

X-Forwarded-For

tokenXForwardedForIpOrder

first



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.