Modern API ağ geçidi mimarilerinde, eklentileri dinamik olarak düzenleme yeteneği, trafik yönetimi ve istek işleme alanında kritik bir ilerlemeyi temsil eder. Apache APISIX'in eklenti düzenleme sistemi, yönlendirilmiş döngüsüz bir grafik (DAG) yürütme modeli aracılığıyla karmaşık API senaryolarını ele almak için sofistike bir yaklaşım uygular.
Hala API Dokümantasyonu yazmakta zorlanıyor musunuz? Profesyonel, dinamik API Dokümanlarını otomatik olarak oluşturmak mı istiyorsunuz?
API Dokümantasyonunuzu otomatik olarak güncel tutmak için APIDog'u kullanın!
API parametresinde bir değişiklik yaptığınızda veya yeni bir API sürümüne güncellediğinizde, dokümantasyonunuzu güncellemekle asla uğraşmayın, APIDog her şeyi her zaman güncel tutar!
APIDog ile API Test verimliliğinizi artırın!

APISIX'in Eklenti Düzenlemesi, Hızlı Bir Bakış
Temelinde, APISIX'teki eklenti düzenlemesi, eklenti yürütme sonuçlarına bağlı olarak koşullu işleme yolları sağlar ve özel kod gerektirmeden dinamik istek işlemesine olanak tanır. Bu sistem, kontrol ve veri düzlemleri arasında ayrımı korurken, optimize edilmiş durum yönetimi ve bellek içi işleme yoluyla yüksek performans sağlayan dağıtılmış bir mimari aracılığıyla çalışır.

Düzenleme motoru, karmaşık koşullu mantığı etkinleştirirken yürütme bağlamını koruyan sofistike bir durum yönetimi sistemi aracılığıyla eklentileri işler. Zincirdeki her eklenti, sonraki eklentilerin yürütme yolunu etkileyebilir ve dinamik ve duyarlı bir işleme akışı oluşturabilir. Bu yaklaşım, aşağıdaki gibi senaryoları mümkün kılar:
- İstek özniteliklerine dayalı koşullu kimlik doğrulama akışları
- Kimlik doğrulama sonuçlarına dayalı dinamik hız sınırlaması
- İstek işleme sonuçlarına dayalı bağlamsal günlük kaydı
- Eklenti yürütme durumlarına dayalı uyarlanabilir trafik yönlendirmesi
Teknik uygulama, birkaç temel bileşenden yararlanır:
- Eklenti bağımlılıklarını ve akışını yöneten bir DAG yürütme motoru
- Eklenti yürütme bağlamını korumak için bir durum yönetimi sistemi
- Yüksek performanslı işlem için optimize edilmiş bir bellek içi işleme sistemi
- Gerçek zamanlı güncellemeler için etcd kullanan dağıtılmış bir yapılandırma sistemi
Bu mimari, durum yönetiminin ve eklenti yürütme yollarının dikkatli bir şekilde optimize edilmesi yoluyla yüksek performansı korurken karmaşık API yönetimi senaryolarını mümkün kılar. Sistem, dinamik eklenti yüklemeyi, özel eklenti entegrasyonunu ve karmaşık koşullu mantığı desteklerken, üretim dağıtımları için gereken performans özelliklerini korur.

APISIX'in eklenti düzenlemesinde, "Bağlam", eklenti yürütme yaşam döngüsü boyunca devam eden paylaşılan bir durumu temsil eder. Bu bağlam, birden fazla yürütme aşamasında çalışır: rewrite
, access
, before_proxy
, header_filter
, body_filter
ve log
. Örneğin, Yürütme Bağlamı şunları korur:
- İstek Verileri: HTTP başlıkları, gövde ve istemci bilgileri
- Eklenti Durumları: Kimlik doğrulama sonuçları ve değiştirilmiş istek/yanıt verileri
- Akış Kontrolü: Geçerli yürütme yolu ve eklenti sonuçları
Bu mimariyi uygulayarak, APISIX, kod yerine yapılandırma yoluyla karmaşık API yönetimi gereksinimlerini ele almak için esnek ancak güçlü bir sistem sağlar, operasyonel karmaşıklığı önemli ölçüde azaltırken sistem güvenilirliğini ve performansını korur.
Altyapı Kurulumu, İlk İşler
Güvenli bir APISIX dağıtımının temeli, uygun ağ izolasyonu ve yapılandırmasıyla başlar. İlk olarak, belirli alt ağ yapılandırmalarıyla özel bir ağ oluşturun:
docker network create \
--driver=bridge \
--subnet=172.18.0.0/16 \
--ip-range=172.18.5.0/24 \
--gateway=172.18.5.254 \
apisix
Bu ağ yapılandırması, APISIX bileşenleri arasında uygun izolasyonu ve iletişimi sağlar.
Temel Bileşenleri Dağıtın
ETCD Yapılandırması
ETCD, yapılandırma merkezi olarak hizmet verir. Uygun güvenlik ayarlarıyla dağıtın:
docker run -it --name etcd-server \
-v $(pwd)/example/etcd_conf/etcd.conf.yml:/opt/bitnami/etcd/conf/etcd.conf.yml \
-p 2379:2379 \
-p 2380:2380 \
--network apisix \
--ip 172.18.5.10 \
--env ALLOW_NONE_AUTHENTICATION=yes bitnami/etcd:3.4.9
Bu yapılandırma, uygun veri kalıcılığını ve ağ erişilebilirliğini sağlar.
APISIX Çekirdek Kurulumu
Kapsamlı günlük kaydı ve yapılandırmayla APISIX'i dağıtın:
docker run --name test-api-gateway \
-v $(pwd)/example/apisix_conf/config.yaml:/usr/local/apisix/conf/config.yaml \
-v $(pwd)/example/apisix_log:/usr/local/apisix/logs \
-p 9080:9080 \
-p 9091:9091 \
-p 9443:9443 \
--network apisix \
--ip 172.18.5.11 \
-d apache/apisix
Bu kurulum, yapılandırma ve günlükler için birim bağlamaları içerir.
Güvenliği Uygulayın
Kimlik Doğrulama Katmanı
APISIX, güçlü anahtar tabanlı kimlik doğrulaması sağlar. İşte eksiksiz bir uygulama:
# Kimlik doğrulaması ile bir tüketici oluşturun
curl http://127.0.0.1:9180/apisix/admin/consumers -H "X-API-KEY: $admin_key" -X PUT -d '
{
"username": "jack",
"plugins": {
"key-auth": {
"key": "auth-one"
}
}
}'
# Kimlik doğrulaması ile rotayı yapılandırın
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H "X-API-KEY: $admin_key" -X PUT -d '
{
"methods": ["GET"],
"uri": "/index.html",
"plugins": {
"key-auth": {}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
}
}'
Bu yapılandırma, erişim için API anahtarları gerektiren güvenli bir kimlik doğrulama katmanı oluşturur.
Hız Sınırlama Uygulaması
API'lerinizi kötüye kullanımdan korumak için gelişmiş hız sınırlaması kullanın:
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H "X-API-KEY: $admin_key" -X PUT -d '
{
"uri": "/index.html",
"plugins": {
"limit-count": {
"count": 2,
"time_window": 60,
"rejected_code": 503,
"key": "remote_addr",
"policy": "redis",
"redis_host": "127.0.0.1",
"redis_port": 6379,
"redis_password": "password",
"redis_database": 1,
"redis_timeout": 1001
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
}
}'
Bu yapılandırma, Redis tabanlı dağıtılmış hız sınırlaması uygular.
Gelişmiş Hız Sınırlama Stratejileri
Tüketici farklılaştırması ile küme düzeyinde hız sınırlaması için:
curl -i http://127.0.0.1:9180/apisix/admin/routes/1 \
-H "X-API-KEY: $admin_key" -X PUT -d '
{
"uri": "/index.html",
"plugins": {
"limit-count": {
"count": 2,
"time_window": 60,
"rejected_code": 503,
"key_type": "var_combination",
"key": "$consumer_name $remote_addr"
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:9001": 1
}
}
}'
Bu yapılandırma, hem tüketici kimliğine hem de IP adresine dayalı gelişmiş hız sınırlamasına olanak tanır.
Sağlık İzleme ve Ölçümler
Prometheus Entegrasyonu
Kapsamlı ölçüm toplamasını etkinleştirin:
curl -i http://127.0.0.1:9180/apisix/admin/routes/1 \
-H "X-API-KEY: $admin_key" -X PUT -d '
{
"uri": "/metrics",
"plugins": {
"prometheus": {
"prefer_name": true,
"metrics": {
"http_status": true,
"latency": true,
"bandwidth": true
}
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"prometheus:9090": 1
}
}
}'
Bu yapılandırma, izleme ve analiz için ayrıntılı ölçüm toplamasını etkinleştirir.
Sistem Yönetimi
Hizmet Başlatma
Kurulumdan sonra, sistemi uygun yapılandırmalarla başlatın:
# Yapılandırmayı başlat
sudo apisix init
# Hizmeti başlat
sudo apisix start
# systemd tabanlı sistemler için
systemctl start apisix
Bu komutlar, uygun sistem başlatma ve hizmet yönetimini sağlar.
Yapılandırma Güncellemeleri
Gelişmiş güvenlik için yönetici API anahtarını güncelleyin:
deployment:
admin:
admin_key:
- name: "admin"
key: newsupersecurekey
role: admin
Bu yapılandırma, yönetici API'sinin güvenliğini artırır.
Sonuç
Bu yapılandırmaların kapsamlı bir şekilde uygulanması, sağlam, güvenli ve ölçeklenebilir bir API ağ geçidi altyapısı oluşturur. Kimlik doğrulama, hız sınırlama ve izlemenin birleşimi hem güvenliği hem de güvenilirliği sağlar. Yönetici anahtarlarını güncelleme ve sistem ölçümlerini izleme dahil olmak üzere düzenli bakım, dağıtımın sağlığını korumak için çok önemlidir.
Bu yapılandırmaları, özel gereksinimlerinize ve güvenlik ihtiyaçlarınıza göre ayarlamayı unutmayın. APISIX'in modüler yapısı, eklenti sistemi aracılığıyla kolay genişleme ve özelleştirmeye olanak tanır ve hem basit hem de karmaşık API yönetimi senaryoları için uygun hale getirir.