Apa yang Baru di ADC 0.11 & 0.12?
August 7, 2024
Sejak rilis ADC (API Declarative CLI) versi 0.10 dua bulan yang lalu, kami telah bekerja tanpa henti untuk menghadirkan dua pembaruan besar—versi 0.11 dan 0.12, bersama dengan serangkaian pembaruan patch yang ditargetkan. Pembaruan ini terutama berfokus pada dukungan untuk Apache APISIX, peningkatan fitur yang ada, dan perbaikan bug.
Menambahkan Dukungan Backend untuk Apache APISIX
Mulai dari ADC 0.11, dukungan eksperimental untuk backend Apache APISIX telah diperkenalkan.
ADC sekarang terintegrasi dengan APISIX Admin API, memungkinkan ekspor dan sinkronisasi sumber daya yang efisien. Kami akan terus meningkatkan kegunaannya. Opsi backend apisix diaktifkan secara default di ADC; pengguna hanya perlu mengkonfigurasi endpoint Admin API dan kunci API untuk terhubung.
Perbedaan Antara ADC dan Admin API
Harap dicatat bahwa ADC tidak bertujuan untuk sepenuhnya selaras dengan semua fungsionalitas APISIX, melainkan berfokus pada serangkaian fitur inti dan praktik terbaik. Kami percaya bahwa berinvestasi dalam fitur yang benar-benar dibutuhkan pengguna, daripada mengejar cakupan yang komprehensif secara membabi buta, adalah jalan untuk pengembangan ADC.
Meskipun APISIX menawarkan fleksibilitas konfigurasi yang tinggi, kebebasan ini sering kali datang dengan kompleksitas pemeliharaan jangka panjang. Ketika manajemen konfigurasi dialihkan dari satu pengelola ke pengelola lain, pengelola baru biasanya menghadapi tantangan untuk memahami pendekatan dan gaya konfigurasi unik dari pengelola sebelumnya, alih-alih langsung mengadopsi seperangkat aturan praktik terbaik yang matang dan diakui secara luas.
Misalnya, di platform APISIX, pengguna dapat mengkonfigurasi rute yang tidak terikat langsung ke layanan tertentu, tetapi malah menentukan sumber daya upstream langsung di tingkat rute. Namun, metode ini tidak didukung secara native oleh ADC. Untuk selaras dengan norma logis dan prosedur operasi standar, pendekatan yang direkomendasikan adalah memasukkan rute dalam layanan tertentu dan mengatur alamat upstream secara tepat dalam layanan tersebut.
Sebagai contoh, dalam layanan produk, kami mendefinisikan layanan bernama Product Service dan mengkonfigurasi upstream, mengaktifkan plugin, serta menetapkan rute di dalamnya. Dalam model ini, beberapa rute dapat berbagi konfigurasi upstream dan plugin yang sama, yang sangat menyederhanakan proses konfigurasi.
services: - name: Product Service upstream: type: roundrobin nodes: - host: product.ecommerce.svc.cluster.local port: 443 weight: 100 scheme: https plugins: key-auth: {} routes: - name: List Products uris: - /products methods: ["GET"] - name: Get Product uris: - /product/* methods: ["GET"]
Contoh di atas adalah format minimal untuk definisi layanan. Selain ini, ADC juga mendukung fitur canggih seperti penemuan layanan, pengaturan timeout, kebijakan percobaan ulang, dan prioritas rute, memastikan konfigurasi yang komprehensif dan fleksibel.
Mengingat APISIX mendukung metode konfigurasi yang lebih kaya, ADC mungkin mengalami ketidaksesuaian saat mengekspor konfigurasi dibandingkan dengan tampilan Admin API APISIX, seperti:
- Rute yang tidak menggunakan layanan akan dikelompokkan ke dalam layanan untuk memenuhi hierarki layanan-rute.
- Upstream yang dirujuk oleh ID akan di-inline pada titik penggunaan.
- Sumber daya template plugin akan digantikan oleh layanan yang berisi rute.
Oleh karena itu, pengguna perlu meninjau dengan cermat file definisi ADC yang dihasilkan selama proses ekspor untuk memastikan mereka masih memenuhi maksud aslinya.
Mengapa ADC Direkomendasikan?
Saat menggunakan APISIX Dashboard, pengguna sering kali perlu melakukan operasi berulang dalam formulir, yang bisa merepotkan dan rentan terhadap kesalahan. Sebaliknya, menggunakan ADC untuk konfigurasi deklaratif hanya melibatkan penulisan file YAML dan menjalankan operasi sinkronisasi. ADC akan secara otomatis mengubah konfigurasi menjadi panggilan Admin API, memungkinkan penyebaran dan manajemen yang cepat.
Dengan demikian, ADC dapat membantu menyederhanakan proses manajemen dan penyebaran, dan dapat dengan mudah mencapai skenario GitOps. Ini melibatkan pengelolaan file definisi YAML melalui repositori Git dan menggunakan alur kerja PR serta alat CI untuk memperbarui konfigurasi secara otomatis. Ini secara signifikan mengurangi jumlah operasi manual yang diperlukan, menghindari masalah yang ada di APISIX Dashboard, dan mengurangi kompleksitas penulisan skrip untuk memanggil Admin API.
Untuk proyek baru, kami sangat merekomendasikan membangun konfigurasi gateway dimulai dengan ADC. Untuk proyek yang sudah ada, migrasi bertahap ke manajemen ADC dapat dicapai dengan mengekspor dan memodifikasi konfigurasi secara moderat.
Optimasi Backend API7 Enterprise
Termasuk dalam versi 0.11/0.12
Dalam versi 0.11 dan 0.12, kami telah menerapkan beberapa optimasi untuk backend API7 untuk meningkatkan pengalaman pengembang. ADC sepenuhnya kompatibel dengan peningkatan ini, artinya pengembang hanya perlu menjaga versi ADC mereka tetap mutakhir untuk mendapatkan manfaat dari peningkatan ini tanpa modifikasi pada file definisi yang ada.
Mengoptimalkan Pemeriksaan Definisi ADC
Termasuk dalam versi 0.12
Kami telah mengoptimalkan dan memperbaiki aturan skema untuk pemeriksaan definisi ADC secara komprehensif untuk membantu pengembang mendeteksi dan menghindari potensi masalah konfigurasi secara efektif sebelumnya.
JSON Schema
Selain itu, kami sekarang mendukung ekspor aturan validasi sebagai JSON Schema untuk membantu editor menggunakan IDE. Pengguna akan mendapatkan manfaat dari petunjuk sintaksis dan pemeriksaan real-time dalam file mereka, yang secara signifikan meningkatkan efisiensi dan kualitas pengkodean.
Untuk pengembang yang lebih suka Visual Studio Code, mengaktifkan plugin YAML dan menambahkan komentar berikut di bagian atas file akan mengaktifkan fitur ini:
# yaml-language-server: $schema=https://raw.githubusercontent.com/api7/adc/main/schema.json
Kesimpulan
Seperti yang telah disebutkan sebelumnya di blog kami, ADC pada akhirnya akan diopen-source. Setelah enam bulan pengembangan internal dan beberapa iterasi, ADC telah sepenuhnya direstrukturisasi menjadi basis kode berbasis TypeScript, sepenuhnya meninggalkan kode Go asli. Ini membuatnya lebih mudah untuk dipelajari dan dikembangkan.
Dengan rilis publik ADC versi 0.12, kami mengundang pengembang di seluruh dunia untuk berpartisipasi dalam pengembangan dan peningkatannya. Basis kode sekarang terbuka di https://github.com/api7/adc, dan kami menantikan kontribusi Anda.
