Apidog

Platform Pengembangan API Kolaboratif All-in-one

Desain API

Dokumentasi API

Debug API

Mocking API

Pengujian Otomatis API

Panduan Singkat untuk Orkestrasi Plugin APISIX & Konfigurasi Gateway

Apache APISIX adalah API gateway cloud-native untuk menyederhanakan manajemen API & microservice. Artikel ini membahas Orkesrasi Plugin & Konfigurasi Gateway APISIX.

Ardianto Nugroho

Ardianto Nugroho

Updated on April 15, 2025

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).

💡
Sebelum kita mulai:

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!
APIDog: Jaga Dokumentasi API Anda Tetap Terbaru, Setiap Saat
button

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.

Orkestrasi plugin di APISIX

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:

  1. Mesin eksekusi DAG yang mengelola dependensi dan alur plugin
  2. Sistem manajemen status untuk mempertahankan konteks eksekusi plugin
  3. Sistem pemrosesan dalam memori yang dioptimalkan untuk operasi berkinerja tinggi
  4. 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.

Komponen teknis dan alur eksekusi sistem orkestrasi plugin APISIX

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.

Cara Menggunakan Lovable AI (Alternatif Cursor untuk Pengembang Web)Tutorial

Cara Menggunakan Lovable AI (Alternatif Cursor untuk Pengembang Web)

Pelajari cara buat web apa pun dgn Lovable. Panduan lengkap, fitur inovatif, & integrasi Apidog (API gratis).

Ardianto Nugroho

April 15, 2025

Cara Menambahkan Kunci API Kustom ke Cursor: Panduan KomprehensifTutorial

Cara Menambahkan Kunci API Kustom ke Cursor: Panduan Komprehensif

Tutorial ini memandu Anda menyiapkan & mengelola API key khusus di Cursor: OpenAI, Anthropic, Google, & Azure.

Ardianto Nugroho

April 11, 2025

Cara Menggunakan NVIDIA Llama Nemotron API untuk Agen AI Tingkat LanjutTutorial

Cara Menggunakan NVIDIA Llama Nemotron API untuk Agen AI Tingkat Lanjut

Pelajari API NVIDIA Llama Nemotron utk buat agen AI canggih.

Ardianto Nugroho

April 11, 2025