Ortam Kavramı
Ortam, Kubernetes bağlamında Namespace ifadesine karşılık gelir. Kubernetes kümeleri büyük miktarda bağlantısız iş yüklerini eş zamanlı olarak yönetebilir. Kubernetes, küme içindeki nesnelerin karmaşasını gidermek için Namespace adı verilen bir kavramdan faydalanır.Namespace’ler nesnelerin birbirleriyle gruplanmasına ve bu grupların bir birim olarak filtrelenip kontrol edilmesine olanak sağlar. Böylece özelleştirilmiş erişim kontrol politikalarını uygulamak ya da bir test ortamı için tüm birimleri birbirlerinden ayırmak için gruplamalar yapmak gibi amaçlarla kullanılabilir.
Ortam Özellikleri
İzolasyon
Her ortam diğer ortamlardan tamamen izole edilmiştir. Bir ortamdaki API Proxy’ler diğer ortamlardaki API Proxy’lerle doğrudan iletişim kuramaz.
Kaynak Tahsisi
Her ortamın kendisine ayrılmış CPU ve RAM gibi kaynakları vardır. Bu kaynaklar diğer ortamlarla paylaşılmaz.
Erişim Adresi
Her ortamın kendisine ait bir erişim adresi (URL) vardır. Bu adres üzerinden ortamdaki API Proxy’lere erişilebilir.
Ayarlar
Her ortamın kendisine özgü ayarları vardır. Bu ayarlar diğer ortamlardan bağımsızdır.
Ortam Yapısı
Aşağıdaki diyagram, ortamın ne içerdiğini high-level olarak gösterir:Neden Birden Fazla Ortam Kullanılır?
İki temel nedenle birden çok ortam kullanılması tavsiye edilmektedir:1. Yaşam Döngüsü Yönetimi
Geliştirme (Development), Test, Sandbox ve Üretim (Production) gibi farklı amaca yönelik ortamlar oluşturarak API yaşam döngüsünü yönetmek.Development
Geliştirme ortamı. Yeni özelliklerin geliştirildiği ve test edildiği ortam.
Test
Test ortamı. Geliştirilen özelliklerin kapsamlı testlerinin yapıldığı ortam. Donanımdaki kaynakların yeterliliğini ölçmek için de kullanılır.
Sandbox
Sandbox ortamı. Ürün bitmiş ve son kullanıcıya çıkmadan önce gerçek kullanıcıyı simüle etmek için kullanılır. Production sürecini etkilemeden ve üretim sürecine yakın olarak güvenli test yapabilme imkanı sağlar.
Production
Üretim ortamı. Canlı sistemin çalıştığı ortam. Son kullanıcıların kullanımı için tasarlanmıştır ve istemcilerin yükünü taşıyabilecek şekilde yapılandırılır.
2. Kaynak İzolasyonu
Çok kaynak tüketen API’leri gruplandırarak izole çalışmalarını sağlamak, böylece diğer API’lerin performansının kötü etkilenmesine engel olmak.Örneğin, yüksek trafikli API’ler bir ortamda, düşük trafikli API’ler başka bir ortamda çalıştırılabilir. Bu sayede kaynak kullanımı optimize edilir.
Ortam Bileşenleri
Bir ortamda aşağıdaki bileşenler bulunur:Namespace
Namespace
Apinizer Platformu’ndaki ortam kavramı, Kubernetes ortamındaki Namespace kavramına karşılık gelmektedir. Her ortam Kubernetes’te bir Namespace olarak oluşturulur.
Worker Pod'ları (Gateway Engine)
Worker Pod'ları (Gateway Engine)
API Proxy’lerin çalıştığı pod’lar. Apinizer Platformu’nun çekirdek (core) modülüdür, tüm API isteklerinin Backend API’ye yönlendirilmesinden sorumludur ve Policy Enforcement Point olarak çalışır.
Cache Pod'ları
Cache Pod'ları
Dağıtılmış önbellek pod’ları. Apinizer’da gerek duyulan cache değerlerinin tutulduğu ortamdır.
Integration Pod'ları
Integration Pod'ları
API Integrator görevlerinin çalıştığı pod’lar. Entegrasyon işlemlerini yönetir.
Service (Servis)
Service (Servis)
Environment Service (Ortam servisi), Environment Deployment’da yer alan Apinizer Worker pod’una erişebilmek için oluşturulur. Servis, tüm podlara gelen istekleri karşılayan katmandır. Konum olarak podların önünde yer alır. Varsayılan olarak NodePort kullanılmakta ve bunun haricindeki servis tipleri Apinizer tarafından desteklenmemektedir.
API Traffic Log Connectors
API Traffic Log Connectors
Oluşturulan ortamdaki tüm API Trafiğinin ve isteklerin loglanacağı log sunucularına (örneğin Elasticsearch kümesi) bağlantı sağlayan konnektörlerdir.
Access URL (Erişim Adresi)
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.Ortam Türleri ve Protokoller
Ortam Türleri
Bir ortam oluştururken Test veya Üretim (Production) türlerinden biri seçilir. Bu tür, lisans yönetimi ve kaynak tahsisi açısından önemlidir.İletişim Protokolü Türleri
Ortam oluştururken aşağıdaki iletişim protokollerinden biri seçilebilir:- HTTP: Standart HTTP protokolü
- gRPC: Yüksek performanslı RPC protokolü
- HTTP+WebSocket: HTTP ve WebSocket protokollerinin birlikte kullanımı
Ortam Erişim Adresi
Bir API Proxy’e, dağıtıldığı ortamın erişim adresi üzerinden erişilebilir.Erişim Adresi Yapısı
Bir API Proxy’nin erişim adresi şu şekildedir:| Bileşen | Açıklama |
|---|---|
http://demo.apinizer.com/ | Ortam Erişim Adresi |
apigateway/ | Root Context |
myproxy | API Proxy Relative Path |
Erişim Adresi Yapılandırması
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 ortamlar Kubernetes’te bir namespace’e karşılık gelmektedir. Namespace içinde çalışan Apinizer Worker’larına erişim için Apinizer tarafından otomatik bir NodePort tipinde Kubernetes servisi oluşturulmaktadır.Ortam Yönetimi
Ortam Oluşturma
Yeni bir ortam oluştururken şu bilgiler tanımlanır:- **Tür **: Test veya Üretim (Production)
- İletişim Protokolü Türü: HTTP, gRPC veya HTTP+WebSocket
- **Ortam Adı **: Ortamı tanımlayan benzersiz isim (Kubernetes’teki namespace’e karşılık gelir)
- Anahtar (Key): Ortama özgü kısaltılmış bir anahtar
- Node Listesi: Ortamın hangi Kubernetes sunucularında çalışacağı
- Proje (Project): Ortamın kullanılabileceği projeler (boş bırakılırsa tüm projelerde kullanılabilir)
- Erişim URL Adresi (Access URL): Ortam içinde çalışan API Proxy’lerin dış erişim adresi
- Gateway Sunucusu Erişim URL’si: 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
- Kaynak Limitleri: CPU ve RAM limitleri
- Ayarlar: Ortama özgü konfigürasyonlar
- Açıklama: Yönetim kolaylığı ve önemli notlar için kullanılabilir
Detaylı ortam oluşturma ve yönetimi için Gateway Runtime’ları sayfasına bakabilirsiniz.
API Proxy Yükleme
API Proxy’ler, bir veya birden fazla ortam üzerine yüklenebilir. Aynı API Proxy farklı ortamlarda farklı versiyonlarıyla çalışabilir.Proje ve Ortam İlişkisi
Projeler ve ortamlar farklı kavramlardır:- Proje: Mantıksal organizasyon birimi (hangi API’ler birlikte çalışır?)
- Ortam: Fiziksel/kaynak birimi (API’ler nerede çalışır?)
Ortam ve Kubernetes Namespace İlişkisi
Apinizer Platformu ile oluşturulan tüm ortamlar Kubernetes altyapısında çalışmaktadır. Her ortam, Kubernetes’te bir Namespace’e karşılık gelir:- Ortamlar arası izolasyon sağlanır
- Kaynak kullanımı kontrol edilir
- Erişim kontrolü yapılabilir
- Ölçeklendirme yönetilebilir

