Ana içeriğe atla
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 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) veya Sandbox 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. Gateway Runtime Rolleri

Test Environment

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.

Sandbox Environment

Sandbox ortamında etkin olan API Proxy’ler ve Uygulamalar, geliştirme (development) ve test etme sürecinde kullanılır. Bu ortam, production sürecini etkilemeden ve üretim sürecine yakın olarak güvenli test yapabilme imkanı sağlar.Ürünün production environment üzerindeki durumunu taklit ettiği için önemlidir. Mesela, ilgili API Proxy’e poliçe ekleyip production environment üzerinde erişim öncesinde test etmeyi kolaylaştırır. Böylelikle production environment’ın güvenliğini sağlar ve bir geliştiricinin (developer) yanlışlıkla canlıdaki (production) bir uygulamayı değiştirme riskini ortadan kaldırmasına yardımcı olur. Ayrıca uygulamanın çalıştığından emin olarak son kullanıcının erişmesi de sağlanır.
Önemli Farklar:
  • Test environment ve sandbox environment arasındaki farkın ne olduğu düşünülebilir. Ürün (API Proxy ya da Uygulama), geliştirme sürecinde test etmek için test environment, ürün bitmiş ve son kullanıcıya çıkmadan önce gerçek kullanıcıyı simüle etmek için sandbox environment üzerinde etkin hale getirilir
  • API Proxy’nin kullanım amacına göre ilgili roldeki ortama kurulum gerçekleştirir. Aynı API Proxy farklı amaçlar için farklı ortamlar üzerinde etkinleştirilebilir
  • Her bir environment diğerlerinden bağımsız olarak çalışır

Production Environment

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

Apinizer Platformundaki Gateway Runtime kavramı, Kubernetes ortamındaki Namespace kavramına karşılık gelmektedir.
Oluşturulan Gateway Runtime ortamındaki tüm API Trafiğinin ve isteklerin loglanacağı log konnektörleri tanımlarıdır.
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.
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, 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şenAçıklama
http://demo.apinizer.com/Gateway Runtime Erişim Adresi
apigateway/Root Context
myproxyAPI 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.

Örnek Servis Yapılandırması

Gateway pod’larına erişmek için örnek bir servis bilgisi: Eğer Engine Service Port değeri 30080 (default değerdir ve her Gateway Runtime ortamı için farklı olmalıdır) ise, WAF’da veya Nginx sunucunuzdaki DNS tanımına aşağıdaki gibi belirtmek gerekir:
http://kubernetes-worker-node-IP:30080/

Gateway Runtime Oluşturma

Gateway Runtime ortamı oluştururken genel tanım bilgilerini içeren görsellere aşağıda yer verilmiştir: Gateway Runtime Oluşturma Gateway Runtime ortamı oluştururken genel tanım bilgilerini içeren alanlar:
AlanAçıklama
Yönetim Türü (Managed Type)Gateway Runtime’ın nasıl yönetileceğini belirler. Apinizer Tarafından Yönetilen (Managed by Apinizer): Apinizer namespace, deployment, service ve tüm gerekli Kubernetes kaynaklarını otomatik olarak oluşturur. Uzak Gateway (Remote Gateway): Gateway pod’unuzun çalıştığından ve erişilebilir olduğundan emin olun. Apinizer sadece bağlantı detaylarını kaydeder, deployment’ı yönetmez.
Tür (Type)Lisans’a ve kullanılan ortama uygun bir değer seçilmesi gerekmektedir. Test veya Üretim (Production) seçilebilir.
İletişim Protokolü Türü (Communication Protocol Type)HTTP, gRPC, HTTP+Websocket iletişim protokollerinden birisi seçilebilir.
Ad (Name)Gateway Runtime ortamının adı. Kubernetes’teki namespace’e karşılık gelmektedir.
Anahtar (Key)Oluşturulan Gateway Runtime ortamı için kullanılan ve ortama özgü kısaltılmış bir anahtardır.
Erişim URL Adresi (Access URL)Gateway Runtime ortamı içinde çalışan API Proxy’lerin dış erişim adresidir.
Açıklama (Description)Yönetim kolaylığı ve önemli notlar için kullanılabilir.
Ortam Yayımlama Erişimi / Proje (Environment Publishing Access / Projects)Gateway Runtime ortamını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.
Node Listesi (Node List)Oluşturulan Gateway Runtime ortamının hangi kubernetes sunucularında çalışacağı seçilir.
Namespace Bağımsızlığı:Gateway pod’ları ve Cache Server pod’ları artık farklı Kubernetes namespace’lerinde çalışabilir. Gateway pod’ları diğer namespace’lerdeki Cache Server’larına Kubernetes service discovery kullanarak erişebilir (örn: http://cache-http-service.apinizer-cache.svc.cluster.local:8090). Bu, daha esnek bir altyapı yönetimi sağlar ve Gateway ve Cache iş yüklerini ayırmanıza olanak tanır.
İletişim Protokolü Türü Seçimi:API Proxylerin hangi Gateway Runtime ortamına deploy edilebileceğini burada seçilen tür belirler:
  • REST ve SOAP API Proxyler → HTTP tipindeki Gateway Runtime ortamına
  • gRPC API Proxyleri → gRPC tipindeki Gateway Runtime ortamına
  • Websocket API Proxyler → HTTP+Websocket tipindeki Gateway Runtime ortamına deploy edilebilir
Proje Seçimi: Proje seçilmesi durumunda sadece o proje içerisinde yer alan API Proxy’lerin bu Gateway Runtime ortamına deploy edilebileceği anlamına gelir.

Yönetim API Erişim Endpoint’leri

Gateway ve Cache iletişimi için birden fazla Yönetim API Erişim Endpoint’i yapılandırabilirsiniz. Her endpoint yapılandırması şunları içerir:
AlanAçıklama
AdAPI endpoint yapılandırması için açıklayıcı bir ad (örn: “Üretim Cluster”, “DR Site”)
Gateway Yönetim API’si Erişim URL’siGateway sunucunuzun health check adresi. Apinizer Yönetim Konsolu, Gateway pod’larına konfigürasyon güncellemeleri için bu adrese bağlanır. Örnek: http://worker-management-api-http-service.prod.svc.cluster.local:8091
Cache Yönetim API’si Erişim URL’siCache Server’ınızın health check adresi. Gateway pod’ları Cache Server’larına bağlanmak için bu URL’yi kullanır. Örnek: http://cache-http-service.apinizer-cache.svc.cluster.local:8090
Çoklu Endpoint’ler:Farklı senaryolar için birden fazla Yönetim API endpoint’i yapılandırabilirsiniz:
  • Çok bölgeli dağıtımlar: Her bölge için ayrı endpoint’ler yapılandırın
  • Yüksek erişilebilirlik: Failover için yedek endpoint’ler kurun
  • Cluster ayrımı: Farklı Kubernetes cluster’ları için farklı endpoint’ler kullanın
Birden fazla endpoint yapılandırıldığında, Ek Değişkenler’deki environmentClusterName değişkeni ile hangi endpoint’in kullanılacağını seçebilirsiniz.
Endpoint Yapılandırması:
  • Her endpoint’te hem Gateway hem de Cache Yönetim API URL’leri yapılandırılmalıdır
  • URL’ler cross-namespace iletişim için Kubernetes service discovery formatını kullanmalıdır
  • Yönetim Konsolu, Gateway pod’ları ve Cache Server pod’ları arasında ağ bağlantısının olduğundan emin olun

API Proxy Trafik Log Konnektörleri

Gateway Runtime ortamındaki 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: API Proxy Trafik Log Konnektörü Gateway Runtime ortamına konnektör ekleme hakkında daha fazla bilgi için bu sayfaya bakın.

Gateway Engine Konfigürasyonu

Gateway engine, Kubernetes ortamındaki Gateway pod’larına karşılık gelmektedir.
  • Gateway engine (apinizer-worker): 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 engine tanımlamalarını içeren görsellere aşağıda yer verilmiştir: Gateway Engine Tanımlamaları
AlanAçıklama
Sayı (Count)Gateway engine sayısı, Kubernetes deployment’taki “replicas” değerine karşılık gelmektedir.
Oluşturulacak Kubernetes Cluster’da oluşacak Pod sayısını belirtir.
CPUPod’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.
Önerilen Değerler:
CPUBellek Boyutu
12GB
24GB
46GB
810GB
  • HTTP Etkin (HTTP Enabled): Varsayılan olarak seçili olarak gelir
  • HTTPS Etkin (HTTPS Enabled): HTTPS kullanılmak istenirse bu seçenek de seçilir, bu durumda şifreleme için gerekli dosyalar yüklenmelidir
  • mTLS: HTTPS protokolü üzerinde çalıştığından sadece HTTPS ayarı açıkken seçilebilir
Keystore ve Truststore: HTTPS protokülü seçildiğinde, keystore ve truststore dosyaları JKS veya PFX formatında yüklenebilir.Servis Portları: 30080-32767 aralığında bir servisin portu girilir. Servis Kubernetes’te NodePort olarak oluşacaktır.Gateway Yönetim API Servisi:
  • API Gateway Yönetimi API erişimi için HTTP hizmeti oluşturun (httpServiceForManagementAPIEnabled): Etkinleştirildiğinde, Gateway Yönetim API erişimi için ayrı bir HTTP servisi oluşturur. Bu servis, Apinizer Yönetim Konsolu’nun Gateway pod’larıyla konfigürasyon güncellemeleri için iletişim kurmasında kullanılır.
  • API Gateway Yönetimi API erişimi için HTTPS hizmeti oluşturun (httpsServiceForManagementAPIEnabled): Etkinleştirildiğinde, Gateway Yönetim API erişimi için ayrı bir HTTPS servisi oluşturur. Keystore ve truststore dosyalarının yüklenmesi gerekir. Yönetim Konsolu ile Gateway pod’ları arasında güvenli iletişim gerektiğinde bu seçeneği kullanın.
Yönetim API Servisleri:Bu servisler, API Proxy trafiği için kullanılan ana HTTP/HTTPS servislerinden ayrıdır. Özellikle şunlar için kullanılır:
  • Yönetim Konsolu’ndan Gateway pod’larına konfigürasyon güncellemeleri
  • Health check’ler ve izleme
  • Yönetim işlemleri
Bu servisler etkinleştirildiğinde, Yönetim API Erişim Endpoint’leri bölümünde ilgili URL’leri yapılandırmalısınız.
Pod içinde çalıştırılacak varsayılan ve opsiyonel değişkenler ve değerleri tanımlanır.Önemli Değişkenler:
DeğişkenHedef OrtamAçıklama
JAVA_OPTSHepsiJVM Heap değerlerini ayarlar
tuneWorkerThreadsHTTP Worker, HTTP+Websocket, Management APISunucunun minimum Worker thread sayısı
(varsayılan: 1024)
tuneWorkerMaxThreadsHTTP Worker, HTTP+Websocket, Management APISunucunun maksimum Worker thread sayısı
(varsayılan: 2048)
tuneBufferSizeHTTP Worker, HTTP+Websocket, Management APIThread’in yazma işlemi için kullanacağı
buffer alanı (varsayılan: 16384 byte)
tuneIoThreadsHTTP Worker, HTTP+Websocket, Management APIIO Thread sayısı (varsayılan: CPU core sayısı)
tuneBacklogHTTP Worker, HTTP+Websocket, Management APIBacklog değeri (varsayılan: 1000)
tuneRoutingConnectionPoolMaxConnectionPerHostHTTP Worker, HTTP+Websocket, Management APIHost başına
maksimum bağlantı sayısı (varsayılan: 1024)
tuneRoutingConnectionPoolMaxConnectionTotalHTTP Worker, HTTP+Websocket, Management APIToplam maksimum
bağlantı sayısı (varsayılan: 2048)
tuneRoutingConnectionPoolMinThreadCountHTTP Worker, HTTP+Websocket, Management APIRouting Connection
Pool minimum thread sayısı
tuneRoutingConnectionPoolMaxThreadCountHTTP Worker, HTTP+Websocket, Management APIRouting Connection
Pool maksimum thread sayısı
tuneElasticsearchClientIoThreadCountHTTP Worker, HTTP+Websocket, Management APIElasticsearch Client IO
Thread sayısı
tuneMaxConcurrentRequestHTTP Worker, HTTP+Websocket, Management APIMaksimum eşzamanlı istek sayısı
(varsayılan: tuneWorkerMaxThreads * tuneIoThreads)
tuneMaxQueueSizeHTTP Worker, HTTP+Websocket, Management APIMaksimum kuyruk boyutu (varsayılan: 0)
tuneCacheConnectionPoolMaxConnectionTotalHTTP Worker, HTTP+Websocket, Management APICache Connection
Pool toplam maksimum bağlantı sayısı (varsayılan: 2048)
tuneApiCallConnectionPoolMaxConnectionPerHostHTTP Worker, HTTP+Websocket, Management APIAPI Call
Connection Pool host başına maksimum bağlantı sayısı (varsayılan: 256)
tuneApiCallConnectionPoolMaxConnectionTotalHTTP Worker, HTTP+Websocket, Management APIAPI Call
Connection Pool toplam maksimum bağlantı sayısı (varsayılan: 4096)
multipartConfigMaxFileSizeHTTP Worker, HTTP+Websocket, Management APIMultipart config maksimum dosya
boyutu (varsayılan: 100MB)
multipartConfigMaxRequestSizeHTTP Worker, HTTP+Websocket, Management APIMultipart config maksimum
istek boyutu (varsayılan: 100MB)
multipartConfigFileSizeThresholdHTTP Worker, HTTP+Websocket, Management APIMultipart config dosya
boyutu eşiği (varsayılan: 100MB)
defaultCharsetHTTP Worker, HTTP+Websocket, Management APIVarsayılan karakter seti (varsayılan: UTF-8)
deploymentTimeoutHTTP Worker, HTTP+Websocket, Management APIDeployment timeout süresi saniye cinsinden
(varsayılan: 30)
tuneReadTimeoutHTTP Worker, HTTP+Websocket, Management APIİstemciden veri okuma timeout’u. Client veri
göndermezse bu süre sonunda bağlantı kapatılır (varsayılan: 30000 ms / 30 saniye)
tuneNoRequestTimeoutHTTP Worker, HTTP+Websocket, Management APIBağlantı kurulduktan sonra request
gelmeme timeout’u. Bağlantı kurulup istek gönderilmezse bu süre sonunda bağlantı kapatılır (varsayılan: 60000 ms
/ 60 saniye)
http2EnabledHTTP Worker, HTTP+Websocket, Management APIHTTP/2 protokolünü etkinleştirir (varsayılan:
false)
environmentClusterNameHTTP Worker, HTTP+Websocket, Management APIOrtam cluster adı
tuneAsyncExecutorCorePoolSizeHTTP Worker, HTTP+Websocket, Management APIAsync executor core pool
boyutu (varsayılan: tuneWorkerThreads)
tuneAsyncExecutorMaxPoolSizeHTTP Worker, HTTP+Websocket, Management APIAsync executor maksimum pool
boyutu (varsayılan: tuneWorkerMaxThreads)
tuneAsyncExecutorQueueCapacityHTTP Worker, HTTP+Websocket, Management APIAsync executor kuyruk
kapasitesi (varsayılan: tuneMaxQueueSize > 0 ? tuneMaxQueueSize : 1000)
METRICS_ENABLEDHTTP Worker, HTTP+Websocket, Management APIMetrik toplama özelliğinin açık olup
olmadığı (varsayılan: false)
logLevelHepsiUygulama loglarının seviyesi (ERROR, WARNING, INFO, DEBUG, TRACE, OFF)
Asenkron İşlemler Thread Pool’u:RestApi Politası ve Script politikası, asenkron işlemler için ManagementConfig’de yapılandırılan merkezi thread pool’u kullanır. Bu, thread yönetimini iyileştirir ve kaynak kullanımını optimize eder. Gateway Runtime ortamlarında gerçekleştirilen asenkron işlemler, bu ayrı thread pool tarafından yönetilir ve optimal performans ve kaynak tahsisi için belirli parametrelerle yapılandırılabilir.Kullanım Senaryoları:
  • Rest API Politikası: Harici servislere yapılan asenkron HTTP çağrıları
  • Script Politikası: Ana istek thread’ini bloklamayan asenkron script çalıştırmaları
  • Loglama İşlemleri: Asenkron log yazma işlemleri
  • Trafik Aynalama: İsteklerin ikincil endpoint’lere asenkron olarak aynalanması
Yapılandırma Kılavuzu:
  • tuneAsyncExecutorCorePoolSize: Pool’da canlı tutulan minimum thread sayısı (varsayılan: tuneWorkerThreads ile aynı)
  • tuneAsyncExecutorMaxPoolSize: Oluşturulabilecek maksimum thread sayısı (varsayılan: tuneWorkerMaxThreads ile aynı)
  • tuneAsyncExecutorQueueCapacity: Yeni thread’ler oluşturulmadan önce kuyrukta bekleyebilecek maksimum görev sayısı (varsayılan: tuneMaxQueueSize > 0 ise bu değer, aksi halde 1000)
Thread Pool Boyutlandırma:Asenkron executor thread pool’u ana worker thread pool’undan ayrıdır. Toplam thread sayısının (worker thread’leri + asenkron executor thread’leri) sisteminizin kapasitesini aşmadığından emin olun. Bu değerleri yapılandırırken CPU core’ları ve belleği göz önünde bulundurun.
CPU’ya Göre Önerilen Thread Değerleri:
CPUtuneWorkerThreadstuneWorkerMaxThreads
15121024
210242048
420484096
840968192
Java Options Uyarısı: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:MinRAMFraction ve -XX:MaxRAMFraction 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.
Eğer Gateway Management API, gateway pod’lar ile HTTPS üzerinden iletişim kuracaksa:
  • API Geçidi Yönetimi API erişimi için HTTPS hizmeti oluşturun seçeneği seçilir
  • Keystore ve truststore dosyaları JKS veya PFX formatında yüklenebilir
  • Gateway Sunucusu Erişim URL’si girilir
Örnek: https://worker-http-service.prod.svc.cluster.local:8443gRPC Tuning Parametreleri:
DeğişkenAçıklamaVarsayılan
tuneGrpcKeepAliveTimegRPC keep-alive zamanı (saniye)120
tuneGrpcKeepAliveTimeoutgRPC keep-alive timeout (saniye)20
tuneGrpcMaxMessageSizegRPC maksimum mesaj boyutu (byte)4194304 (4MB)
tuneGrpcMaxHeaderListSizegRPC maksimum header list boyutu (byte)8192
tuneGrpcMaxConnectionAgegRPC maksimum bağlantı yaşı (saniye)3600
tuneGrpcMaxConnectionAgeGracegRPC maksimum bağlantı yaşı grace period (saniye)30
tuneGrpcMaxConnectionIdlegRPC maksimum bağlantı idle süresi (saniye)300
tuneGrpcMaxInboundMessageSizegRPC maksimum inbound mesaj boyutu (byte)4194304 (4MB)
tuneGrpcMaxInboundMetadataSizegRPC maksimum inbound metadata boyutu (byte)8192
tuneGrpcHandshakeTimeoutgRPC handshake timeout (saniye)20
tuneGrpcPermitKeepAliveTimegRPC permit keep-alive zamanı (saniye)120
tuneGrpcThreadPoolSizegRPC thread pool boyutuCPU sayısı * 2
WebSocket Tuning Parametreleri:
DeğişkenAçıklamaVarsayılan
tuneWebsocketIdleTimeoutWebSocket idle timeout (saniye)60
tuneWebsocketBufferSizeWebSocket buffer boyutu (byte)65536
tuneWebsocketTcpNoDelayWebSocket TCP no delay (true/false)true
CORS Ayarlarının Kullanım Amacı:Bu CORS (Cross-Origin Resource Sharing) parametreleri, token alımı için gelen isteklerde kullanılır. Token alımı için gelen isteklere Management Konsol üzerinden politika eklenmez; bu ayarlar Gateway Runtime ortamı konfigürasyonu ile verilir. Bu parametreler normal API Proxy akışında kullanılmaz, sadece token alımı endpoint’leri için geçerlidir.
CORS (Cross-Origin Resource Sharing) Parametreleri:
DeğişkenAçıklamaVarsayılan
tokenCorsAccessControlAllowOriginAccess-Control-Allow-Origin header değeri-
tokenCorsAccessControlAllowCredentialsAccess-Control-Allow-Credentials header değeri-
tokenCorsAccessControlAllowMethodsAccess-Control-Allow-Methods header değeri-
tokenCorsAccessControlAllowHeadersAccess-Control-Allow-Headers header değeri-
tokenCorsAccessControlOriginOrigin header değeri-
tokenCorsAccessControlRequestMethodAccess-Control-Request-Method header değeri-
tokenCorsAccessControlRequestHeadersAccess-Control-Request-Headers header değeri-
tokenCorsAccessControlExposeHeadersAccess-Control-Expose-Headers header değeri-
tokenCorsAccessControlMaxAgeAccess-Control-Max-Age header değeri (saniye)-
X-Forwarded-For Ayarlarının Kullanım Amacı:Bu X-Forwarded-For parametreleri, token alımı için gelen isteklerde kullanılır. Token alımı için gelen isteklere Management Konsol üzerinden politika eklenmez; bu ayarlar Gateway Runtime ortamı konfigürasyonu ile verilir. Bu parametreler normal API Proxy akışında kullanılmaz, sadece token alımı endpoint’leri için geçerlidir.
X-Forwarded-For Parametreleri:
DeğişkenAçıklamaVarsayılan
tokenXForwardedForIpHeaderX-Forwarded-For IP header adı-
tokenXForwardedForIpOrderX-Forwarded-For IP sıralama (FIRST/LAST)LAST
Ek Değişkenler ile güvenlik yapılandırması yapılabilir:
DeğişkenAçıklamaVarsayılan Değer
jdkTLSVersionsDesteklenecek TLS protokol versiyonlarıTLSv1, TLSv1.1, TLSv1.2, TLSv1.3
jdkTLSDisabledAlgorithmsGüvenlik nedeniyle devre dışı bırakılacak TLS algoritmalarıRC4, DES,
MD5withRSA, DH keySize < 768…
jdkCipherSuitesKullanılacak şifreleme takımlarıJDK varsayılan değeri
Güvenlik Önerileri:
  • TLSv1.2 ve üstü versiyonların kullanılması önerilir
  • GCM modlu şifreleme takımları tercih edilmelidir
  • Zayıf algoritmalar (RC4, DES, 3DES) devre dışı bırakılmalıdır
  • Anahtar boyutları yeterli güvenlik seviyesinde olmalıdır (RSA için en az 2048 bit, EC için en az 224 bit)

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, Gateway pod’larının bu isimleri çözmesi için Host Alias tanımı yapılmalıdır. 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.
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.
Örnek Kullanım:
IP AddressHost Aliases
10.10.10.10alias_name, other_alias_name
Host takma adı ayarlarını içeren görsele aşağıda yer verilmiştir: Host Takma Adı Ayarları

Gateway Runtime Ortamı Yayımlama

1

Yayınlanmamış Gateway Runtime Ortamını Seç

Bir Gateway Runtime ortamı yayımlamak için Yayınlanmamış (Unpublished) butonuna tıklanır.Yayınlanmamış Gateway Runtime Ortamı Seçimi
2

İşlemi Onayla

Gelen pencereden işlemi onaylamak için Yayınla (Publish) butonuna tıklanır ve Gateway Runtime ortamı Kubernetes sunucusuna dağıtılır.Gateway Runtime Ortamı Yayımlama Onayı

Gateway Runtime Ortamı Yeniden Yayınlama

1

Yayınlanmış Gateway Runtime Ortamını Seç

Yayımlanmış durumda olan bir Gateway Runtime ortamının üzerine gelerek Yayınlanmış (Published) butonuna tıklanır.Yayınlanmış Gateway Runtime Ortamı Seçimi
2

Yeniden Yayınla

Gelen pencereden işlemi onaylamak için Yeniden Yayınla (Republish) butonuna tıklanır.Gateway Runtime Ortamı Yeniden Yayımlama Onayı
Gateway Runtime Ortamı Yeniden Yayınla işleminden sonra, Pod’lar da yeniden başlatılır (restart).
Yeniden yayınlama işlemi sırasında birkaç dakikalık kesinti olabilir. Bu işlem, Gateway Engine konfigürasyonu, Host Takma Adları ve diğer ortam ayarlarındaki değişikliklerin etkinleşmesi için gereklidir.

JWT Token Doğrulama Anahtarı

Gateway Runtime ortamı kaydedilmiş 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. Kullanılabilir İşlemler:
  • Redeploy: Mevcut anahtarın değişiklik yapılmadan sunuculara tekrar yüklenmesi
  • Regenerate & Deploy: Yeni anahtar üretilip sunuculara yüklenmesi
  • Upload & Deploy: PEM Encoded Private Key dosyası yüklenerek yeni anahtar üretilmesi
JWT Token Doğrulama Anahtarı

Gateway Runtime Ortamı Silme

Gateway Runtime ortamı seçerek, en altta bulunan Gateway Runtime Ortamı Sil (Remove Environment) tabından Gateway Runtime Ortamı Sil (Remove Environment) diyerek Gateway Runtime ortamı ile ilgili bilgileri veritabanından silinmiş olur. Gateway Runtime Ortamı Silme
Dikkat: Silme işlemi tamamlandığında bu Gateway Runtime ortamında kayıtlı tüm API Proxy’lerin yüklemesi de silinir ve bu Gateway Runtime ortamına daha önceden yüklenmiş olan API Proxy’lere bu Gateway Runtime ortamı üzerinden artık erişilemez.

Metrik Monitörü

Kubernetes üzerindeki Gateway pod’larının durumunu izlemek için Gateway Runtime ortamı listesinden ilgili Gateway Runtime ortamının Podlar (Pods) linkine tıklanır. Podlar ekranını içeren görsele aşağıda yer verilmiştir: Metrik Monitörü
Eğer tüm Gateway Runtime ortamlarının metriklerine erişmek isterseniz Kubernetes İş Yükleri sayfasına tıklayınız.

Diagnostics

Gateway Runtime’ların detaylı sistem metriklerine, JVM bilgilerine, thread durumlarına ve performans verilerine erişebilirsiniz. Diagnostics sayfasına Gateway Runtime ortamı listesinden ilgili Gateway Runtime ortamının Diagnostics butonuna tıklayarak erişebilirsiniz.
Diagnostics özellikleri, kullanımı ve detaylı bilgiler için Environment Diagnostics sayfasına bakın.