Modern mikro hizmet mimarilerinde, etkili bir API yönetimi büyük önem taşır. Apache APISIX, API’lerin geliştirilmesi, dağıtımı ve yönetimi için geniş bir özellik yelpazesi sunan güçlü bir API geçidi çözümüdür. Bu makalede, Apache APISIX’in mimarisi, özellikleri ve kurulum adımları üzerinde duracağız.
Apache APISIX Nedir?
Apache APISIX, açık kaynaklı bir API geçididir ve API’lerin hızlı bir şekilde yönetilmesini sağlar. Apache Software Foundation tarafından geliştirilen bu çözüm, ölçeklenebilir, esnek ve yüksek performans sunarak çeşitli kullanım senaryolarında API trafiğini yönetmeyi kolaylaştırır.
Ana Özellikler
- Dinamik Yönlendirme: APISIX, yönlendirme kurallarını gerçek zamanlı olarak güncelleme yeteneği sunar. Bu özellik, API’lerin sürekli değiştiği durumlarda oldukça faydalıdır.
- Yük Dengeleme: Gelişmiş yük dengeleme algoritmaları ile API isteklerini birden fazla arka uç sunucusuna dağıtarak sistemin kaynak kullanımını optimize eder.
- Oran Limitleme ve Kotalar: API kullanımlarını kontrol altına almak için oran limitleme ve kota yönetimi sağlar. Bu sayede, belirli bir istemcinin yapabileceği istek sayısını sınırlandırabilirsiniz.
- Güvenlik Özellikleri: APISIX, erişim kontrolü, SSL/TLS sonlandırması ve istek doğrulama gibi güvenlik önlemleri sunarak API’lerinizi korur.
- Eklenti Sistemi: Modüler mimarisi sayesinde kullanıcılar, işlevselliği genişletmek için farklı eklentiler kullanabilir.
Mimari
Apache APISIX, Nginx tabanlı bir mimariye sahiptir. Nginx, gelen istekleri işlemek için proxy katmanı olarak çalışırken, APISIX kontrol düzlemi yapılandırmayı ve dinamik güncellemeleri yönetir. Bu mimari, APISIX’in yüksek performans ve ölçeklenebilirlik sunmasına yardımcı olur.
Kullanım Durumları
- Mikro Hizmet Mimarisi: APISIX, mikro hizmetler arasında API trafiğini yönetmek için kullanılabilir.
- API Yönetimi: API yaşam döngüsü boyunca yönetim ve optimizasyon sağlar.
- Bulut Yerel Ortamlar: Kubernetes gibi platformlarla entegrasyonu sayesinde bulut yerel dağıtımlar için uygundur.
Kurulum
Docker ile Kurulum
- Docker İmajını İndirin:
docker pull apache/apisix
- APISIX Konteynerini Başlatın:
docker run -d --name apisix
-p 9080:9080
-p 9443:9443
apache/apisix
Kubernetes ile Kurulum
- Yeni Bir Proje Oluşturun:
oc new-project apisix
- Helm Repo Güncelleyin:
helm repo update
- APISIX’i Kurun:
helm install apisix apisix/apisix
- Kullanıcı Rolleri Ekleyin:
oc adm policy add-cluster-role-to-user cluster-admin system:serviceaccount:apisix:default
oc adm policy add-scc-to-user restricted-v2 -z default
APISIX Dashboard Kurulumu
- Dashboard’u Kurun:
helm install apisix-dashboard apisix/apisix-dashboard
Konfigürasyon Detayları
MTLs ile APISIX Konfigürasyonu (Opsiyonel)
- MTLs Sertifikaları için PVC Oluşturma:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: apisix-certs
namespace: apisix
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Mi
storageClassName: #SCNAME#
volumeMode: Filesystem
- Yeni PVC’yi APISIX Dağıtım YAML’sına Ekleyin.
- Güvenlik Konfigürasyonunu Güncelleyin.
- Dağıtımı Yeniden Yükleyin ve Sertifikaları Oluşturun:
openssl genrsa -out ca.key 2048
openssl req -new -sha256 -key ca.key -out ca.csr -subj "/CN=ROOTCA"
openssl x509 -req -days 36500 -sha256 -extensions v3_ca -signkey ca.key -in ca.csr -out ca.cer
# Sunucu Sertifikası
openssl genrsa -out server.key 2048
openssl req -new -sha256 -key server.key -out server.csr -subj "/CN=*.eu-de.containers.appdomain.cloud"
openssl x509 -req -days 36500 -sha256 -extensions v3_req -extfile ./ssl-extensions-x509.cnf -CA ca.cer -CAkey ca.key -CAserial ca.srl -CAcreateserial -in server.csr -out server.cer
# İstemci Sertifikası
openssl genrsa -out client.key 2048
openssl req -new -sha256 -key client.key -out client.csr -subj "/CN=CLIENT"
openssl x509 -req -days 36500 -sha256 -extensions v3_req -CA ca.cer -CAkey ca.key -CAserial ca.srl -CAcreateserial -in client.csr -out client.cer
- Tüm Sertifikaları Pod’a Kopyalayın:
oc cp * apisix-7886f56c95-zs667:/certs
- APISIX Konfigürasyonunu Güncelleyin:
admin_listen:
ip: 127.0.0.1
port: 9180
https_admin: true
admin_api_mtls:
admin_ssl_ca_cert: "/data/certs/mtls_ca.crt"
admin_ssl_cert: "/data/certs/mtls_server.crt"
admin_ssl_cert_key: "/data/certs/mtls_server.key"
ssl:
enable: true
- Dağıtımı Yeniden Yükleyin.
Test Yolu Oluşturma
- Test Rotasını Oluşturun:
curl --cacert ca.cer --key client.key --cert client.cer -X PUT 'https://YOURADMINURL/apisix/admin/routes/1'
--header 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'
--header 'Content-Type: application/json'
--data-raw '{
"uri": "/anything",
"plugins": {
"proxy-rewrite": {
"headers": {
"X-Ssl-Client-Fingerprint": "$ssl_client_fingerprint",
"X-Ssl-Client-Serial": "$ssl_client_serial",
"X-Ssl-Client-S-DN": "$ssl_client_s_dn"
}
}
},
"upstream": {
"nodes": {
"httpbin.org": 1
},
"type": "roundrobin"
}
}'
APISIX ile Test Etme
APISIX’i başarıyla kurduktan sonra, API yönlendirmelerini test etmek için aşağıdaki adımları izleyebilirsiniz.
API İsteği Gönderme
Aşağıdaki komutla APISIX’e istek göndererek yapılandırmanızı test edebilirsiniz:
curl -i -X GET 'http://localhost:9080/anything'
Eğer her şey doğru bir şekilde yapılandırılmışsa, yukarıdaki isteğin yanıtı aşağıdaki gibi olmalıdır:
HTTP/1.1 200 OK
Content-Type: application/json
APISIX Dashboard ile Yönetim
APISIX Dashboard, API yönlendirmelerini, eklentilerini ve genel yapılandırmayı yönetmek için bir web arayüzü sağlar. Dashboard’u kullanarak API’lerinizi ve yönlendirmelerinizi kolayca yönetebilirsiniz.
Dashboard’a Erişim
- Dashboard’un IP Adresini Öğrenin: APISIX Dashboard’un IP adresini veya DNS adını öğrenmek için aşağıdaki komutu kullanabilirsiniz:
kubectl get svc -n apisix
- Web Tarayıcınızı Açın: Dashboard’a erişmek için tarayıcınıza aşağıdaki adresi yazın:
http://<DASHBOARD_IP>:<DASHBOARD_PORT>
- Giriş Yapın: Giriş yaparak, API yönlendirmelerini ve diğer yapılandırmaları görüntüleyebilir ve yönetebilirsiniz.
Sonuç
Apache APISIX, modern API yönetimi için güçlü bir çözümdür. Yüksek performansı, ölçeklenebilirliği ve genişletilebilirliği ile mikro hizmet mimarileri için ideal bir API geçidi olarak öne çıkar. Yukarıdaki adımları takip ederek APISIX’i kurabilir ve yapılandırarak API trafiğinizi yönetmeye başlayabilirsiniz.