Dalam arsitektur API gateway modern, kemampuan untuk mengatur plugin secara dinamis merupakan kemajuan penting dalam manajemen lalu lintas dan pemrosesan permintaan. Sistem orkestrasi plugin Apache APISIX mengimplementasikan pendekatan canggih untuk menangani skenario API yang kompleks melalui model eksekusi directed acyclic graph (DAG).
Masih kesulitan menulis Dokumentasi API? Ingin membuat Dokumen API dinamis dan profesional secara otomatis?
Gunakan APIDog untuk menjaga Dokumentasi API Anda tetap terbaru, secara otomatis!
Tidak perlu repot memperbarui dokumentasi setiap kali Anda membuat perubahan pada parameter API, atau memperbarui ke versi API baru, APIDog menjaga semuanya tetap diperbarui, setiap saat!
Tingkatkan efisiensi Pengujian API Anda dengan APIDog!

Orkestrasi Plugin APISIX, Sekilas
Intinya, orkestrasi plugin di APISIX memungkinkan jalur pemrosesan kondisional berdasarkan hasil eksekusi plugin, memungkinkan penanganan permintaan dinamis tanpa memerlukan kode khusus. Sistem ini beroperasi melalui arsitektur terdistribusi yang menjaga pemisahan antara bidang kontrol dan data sambil memastikan kinerja tinggi melalui manajemen status yang dioptimalkan dan pemrosesan dalam memori.

Mesin orkestrasi memproses plugin melalui sistem manajemen status canggih yang mempertahankan konteks eksekusi sambil memungkinkan logika kondisional yang kompleks. Setiap plugin dalam rantai dapat memengaruhi jalur eksekusi plugin berikutnya, menciptakan alur pemrosesan yang dinamis dan responsif. Pendekatan ini memungkinkan skenario seperti:
- Alur autentikasi kondisional berdasarkan atribut permintaan
- Pembatasan laju dinamis berdasarkan hasil autentikasi
- Pencatatan kontekstual berdasarkan hasil pemrosesan permintaan
- Perutean lalu lintas adaptif berdasarkan status eksekusi plugin
Implementasi teknis memanfaatkan beberapa komponen kunci:
- Mesin eksekusi DAG yang mengelola dependensi dan alur plugin
- Sistem manajemen status untuk mempertahankan konteks eksekusi plugin
- Sistem pemrosesan dalam memori yang dioptimalkan untuk operasi berkinerja tinggi
- Sistem konfigurasi terdistribusi menggunakan etcd untuk pembaruan waktu nyata
Arsitektur ini memungkinkan skenario manajemen API yang kompleks sambil mempertahankan kinerja tinggi melalui optimasi yang cermat terhadap manajemen status dan jalur eksekusi plugin. Sistem ini mendukung pemuatan plugin dinamis, integrasi plugin khusus, dan logika kondisional yang kompleks, sambil mempertahankan karakteristik kinerja yang diperlukan untuk penerapan produksi.

Dalam orkestrasi plugin APISIX, "Context" mewakili status bersama yang bertahan selama siklus hidup eksekusi plugin. Konteks ini beroperasi di beberapa fase eksekusi: rewrite
, access
, before_proxy
, header_filter
, body_filter
, dan log
. Misalnya, Konteks Eksekusi mempertahankan:
- Data Permintaan: Header HTTP, body, dan informasi klien
- Status Plugin: Hasil autentikasi dan data permintaan/respons yang dimodifikasi
- Kontrol Alur: Jalur eksekusi saat ini dan hasil plugin
Dengan mengimplementasikan arsitektur ini, APISIX menyediakan sistem yang fleksibel namun kuat untuk menangani persyaratan manajemen API yang kompleks melalui konfigurasi daripada kode, secara signifikan mengurangi kompleksitas operasional sambil mempertahankan keandalan dan kinerja sistem.
Pengaturan Infrastruktur, Hal Pertama yang Harus Dilakukan
Dasar dari penerapan APISIX yang aman dimulai dengan isolasi dan konfigurasi jaringan yang tepat. Pertama, buat jaringan khusus dengan konfigurasi subnet tertentu:
docker network create \
--driver=bridge \
--subnet=172.18.0.0/16 \
--ip-range=172.18.5.0/24 \
--gateway=172.18.5.254 \
apisix
Konfigurasi jaringan ini memastikan isolasi dan komunikasi yang tepat antara komponen APISIX.
Menyebarkan Komponen Inti
Konfigurasi ETCD
ETCD berfungsi sebagai pusat konfigurasi. Sebarkan dengan pengaturan keamanan yang tepat:
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
Konfigurasi ini memastikan persistensi data dan aksesibilitas jaringan yang tepat.
Instalasi Inti APISIX
Sebarkan APISIX dengan pencatatan dan konfigurasi yang komprehensif:
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
Pengaturan ini mencakup pemasangan volume untuk konfigurasi dan log.
Menerapkan Keamanan
Lapisan Autentikasi
APISIX menyediakan autentikasi berbasis kunci yang kuat. Berikut adalah implementasi lengkapnya:
# Create a consumer with authentication
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"
}
}
}'
# Configure route with authentication
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
}
}
}'
Konfigurasi ini membuat lapisan autentikasi aman yang memerlukan kunci API untuk akses.
Implementasi Pembatasan Laju
Lindungi API Anda dari penyalahgunaan dengan pembatasan laju yang canggih:
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
}
}
}'
Konfigurasi ini mengimplementasikan pembatasan laju terdistribusi berbasis Redis.
Strategi Pembatasan Laju Tingkat Lanjut
Untuk pembatasan laju tingkat klaster dengan diferensiasi konsumen:
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
}
}
}'
Konfigurasi ini memungkinkan pembatasan laju yang canggih berdasarkan identitas konsumen dan alamat IP.
Pemantauan Kesehatan dan Metrik
Integrasi Prometheus
Aktifkan pengumpulan metrik yang komprehensif:
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
}
}
}'
Konfigurasi ini memungkinkan pengumpulan metrik terperinci untuk pemantauan dan analisis.
Manajemen Sistem
Inisialisasi Layanan
Setelah instalasi, inisialisasi sistem dengan konfigurasi yang tepat:
# Initialize configuration
sudo apisix init
# Start the service
sudo apisix start
# For systemd-based systems
systemctl start apisix
Perintah ini memastikan inisialisasi sistem dan manajemen layanan yang tepat.
Pembaruan Konfigurasi
Perbarui kunci API admin untuk meningkatkan keamanan:
deployment:
admin:
admin_key:
- name: "admin"
key: newsupersecurekey
role: admin
Konfigurasi ini meningkatkan keamanan API admin.
Kesimpulan
Implementasi komprehensif dari konfigurasi ini menciptakan infrastruktur API gateway yang kuat, aman, dan terukur. Kombinasi autentikasi, pembatasan laju, dan pemantauan memastikan keamanan dan keandalan. Pemeliharaan rutin, termasuk memperbarui kunci admin dan memantau metrik sistem, sangat penting untuk menjaga kesehatan penerapan.
Ingatlah untuk menyesuaikan konfigurasi ini berdasarkan kebutuhan dan persyaratan keamanan spesifik Anda. Sifat modular APISIX memungkinkan perluasan dan penyesuaian yang mudah melalui sistem pluginnya, sehingga cocok untuk skenario manajemen API yang sederhana maupun kompleks.