Kubernetes Üzerinde Apache APISIX Kurulumu (Helm + Etcd + Dashboard)
API Gateway çözümleri arasında Apache APISIX, modern, hafif, eklenti tabanlı ve yüksek performanslı yapısıyla öne çıkıyor. Özellikle microservice mimarilerde, trafik yönetimi, routing, authentication, rate-limit, observability gibi konularda çok güçlü bir altyapı sunuyor.
Bu yazıda, Kubernetes üzerine Helm chart kullanarak APISIX + Etcd kurulumunu, APISIX Dashboard’un eklenmesini ve ardından Route, Upstream, Service örneklerinin nasıl tanımlanacağını adım adım göstereceğim.
🎯 Neler Kuruyoruz?
- APISIX Gateway
- Etcd (APISIX için KV-store)
- APISIX Dashboard
- Custom Route, Upstream ve Service konfigürasyonları
Tüm kurulumları Helm üzerinden gerçekleştireceğiz.
🚀 APISIX Helm Repo Ekleme
Öncelikle APISIX Helm deposunu ekleyelim:
helm repo add apisix https://charts.apiseven.com
Depoyu güncelleyelim:
helm repo update
📦 Namespace Oluşturma
APISIX bileşenlerini izole bir namespace altında çalıştırmak her zaman daha sağlıklı olur:
kubectl create namespace apisix
🧩 APISIX + Etcd Kurulumu
APISIX kurarken bir values.yaml dosyası üzerinden konfigürasyon geçebilirsiniz.
Kurulum komutu:
helm install apisix apisix/apisix -n apisix -f values.yaml
etcd:
enabled: true
replicaCount: 3
service:
type: ClusterIP
image:
registry: docker.io
repository: bitnamilegacy/etcd
tag: latest
admin:
credentials:
admin: d98af9222e22e238acb70f49c33b132
viewer: a1390b2bed223232323232e3439a7e7d05
## -- The APISIX Helm chart supports storing user credentials in a secret.
## The secret needs to contain two keys, admin and viewer, with their respective values set.
#secretName: ""
## -- Name of the admin role key in the secret, overrides the default key name "admin"
#secretAdminKey: ""
## -- Name of the viewer role key in the secret, overrides the default key name "viewer"
#secretViewerKey: ""
gateway:
type: NodePort
http:
enabled: true
servicePort: 9080
nodePort: 30080
https:
enabled: true
servicePort: 9443
nodePort: 30443
Bu işlem sonucunda:
- APISIX Gateway
- Etcd
- APISIX Ingress Controller (eğer aktifse)
- APISIX plugins
gibi bileşenler yüklenir.
📊 APISIX Dashboard Kurulumu
Dashboard, API gateway yönetimini GUI üzerinden yapabilmeniz için idealdir.
helm install apisix-dashboard apisix/apisix-dashboard --namespace apisix -f dashboard-values.yaml
Dashboard kullanıcı bilgisi örneği:
config:
authentication:
users:
- username: admin
password: admin
⚙️ APISIX Üzerinde Route, Upstream ve Service Tanımlama
Aşağıdaki örnekler, Kubernetes üzerinde çalışan bir servis için APISIX üzerinden yönlendirme yapmayı göstermektedir.
🛣️ Route Örneği
Aşağıdaki Route tanımı, /YaMiSoFt.Api/* pattern’ine gelen tüm istekleri APISIX içerisindeki ilgili servise yönlendirir.
{
"uri": "/YaMiSoFt.Api/*",
"name": "api-1",
"methods": [
"GET",
"POST",
"PUT",
"DELETE",
"PATCH",
"HEAD",
"OPTIONS",
"CONNECT",
"TRACE",
"PURGE"
],
"service_id": "584508352566920278",
"status": 1
}
🔁 Upstream Tanımı
Kubernetes servisinizin cluster içindeki adresini APISIX’e Upstream olarak ekliyoruz:
{
"nodes": [
{
"host": "api-1.yamisoft.svc",
"port": 80,
"weight": 1
}
],
"timeout": {
"connect": 6,
"send": 6,
"read": 6
},
"type": "roundrobin",
"scheme": "http",
"pass_host": "pass",
"name": "api-1",
"keepalive_pool": {
"idle_timeout": 60,
"requests": 1000,
"size": 320
}
}
Bu upstream ne sağlar?
- Kubernetes içindeki servise load-balancer mantığı ile istek yönlendirir.
- Keepalive pool değerleri performansı artırır.
- Timeout değerleri API stabilitesini garanti eder.
🔧 Service Tanımı
Route → Service → Upstream zincirinde Service ara katmandır.
Ek olarak plugin ekleyerek istek/cevap manipülasyonu yapılabilir.
{
"name": "api-1",
"upstream_id": "584507455069750358",
"plugins": {
"proxy-rewrite": {
"_meta": {
"disable": false
},
"headers": {
"set": {
"X-Api-Engine": "apisix",
"X-Api-Version": "1"
}
},
"regex_uri": [
"^/YaMiSoFt.Api/(.*)",
"/$1"
]
},
"response-rewrite": {
"headers": {
"remove": [
"Server"
]
}
}
}
}
Bu ne işe yarıyor?
- proxy-rewrite
- İstek URI’sini yeniden yazıyor
Örn:/YaMiSoFt.Api/products→/products - Custom header ekleyerek servisler arasında tracing kolaylaşıyor.
- İstek URI’sini yeniden yazıyor
- response-rewrite
- Backend tarafından dönen Server header’ını kaldırır.
→ Güvenlik açısından tavsiye edilir.
- Backend tarafından dönen Server header’ını kaldırır.
🎉 Sonuç: Production-Ready Modern API Gateway
Bu kurulumla beraber Kubernetes ortamınızda:
✔ APISIX Gateway
✔ Etcd
✔ Dashboard
✔ Route / Upstream / Service
✔ Header rewrite
✔ Regex URI rewrite
tam anlamıyla çalışan bir API Gateway elde etmiş oluyorsunuz.
APISIX, performans, plugin çeşitliliği, routing esnekliği ve dashboard arabirimi ile modern microservice mimarilerinde vazgeçilmez bir bileşen hâline geliyor.