Apa yang Baru di ADC 0.8, 0.9, & 0.10?

Zeping Bai

Zeping Bai

May 31, 2024

Products

Pendahuluan

ADC (APISIX Declarative CLI) adalah alat konfigurasi deklaratif yang diperkenalkan oleh API7.ai, menyediakan perangkat yang nyaman bagi pengguna untuk mengimplementasikan GitOps. Pengguna dapat dengan mudah mengintegrasikannya ke dalam pipeline CI/CD mereka untuk mengelola siklus hidup API secara penuh, menyelesaikan peningkatan dan rilis API. Setelah rilis versi 0.7, ADC merilis tiga versi baru: 0.8, 0.9, dan 0.10, dengan optimasi dan pembaruan dalam hal fungsionalitas, kinerja, dan pengalaman pengguna.

Fitur Baru ADC

Peningkatan pada Detektor Perubahan Sumber Daya: Differ

Modifikasi ini diperkenalkan dalam versi 0.8 dan 0.9.

Kami telah memperkenalkan versi baru dari detektor perubahan sumber daya Differ, v3, yang memiliki peningkatan signifikan dalam fungsionalitas dan kualitas kode.

  1. Differ baru memperkenalkan mekanisme penggabungan nilai default untuk sumber daya lokal, memastikan bahwa nilai default dari sisi server tidak mengganggu pemeriksaan perubahan sumber daya ADC.

    Ketika klien mengirim permintaan untuk membuat sumber daya di API7 atau APISIX Admin API, server melakukan validasi Schema pada permintaan yang diajukan. Selama proses ini, beberapa bidang yang memiliki nilai default yang ditandai dalam Schema tetapi tidak dikirim oleh klien akan secara otomatis ditambahkan ke sumber daya yang diajukan. Akibatnya, ketika kita membaca sumber daya dari API lagi, itu akan berbeda dari pengajuan awal.

    Versi ADC sebelumnya akan mencantumkan sumber daya ini sebagai "dimodifikasi" dan mengirim permintaan API pembaruan ke Admin API. Perilaku ini memperkenalkan beberapa ketidakpastian untuk ADC, dan masalah ini telah diselesaikan melalui Differ.

  2. Mekanisme penggabungan nilai default telah diimplementasikan di backend API7, memastikan bahwa perbedaan sumber daya hanya dianggap sebagai modifikasi ketika pengguna telah mengubah konfigurasi YAML lokal.

  3. Memperbaiki granularitas deteksi Differ: ADC saat ini melakukan pemeriksaan perubahan sumber daya secara terpisah pada dimensi tubuh sumber daya dan plugin, membantu mengurangi anomali dalam pemeriksaan.

  4. Mengoptimalkan kualitas kode, menyederhanakan kode yang berlebihan untuk meningkatkan keterbacaan, dan memperbaiki beberapa bug.

Filter Sumber Daya

Kami telah menambahkan dua mekanisme penyaringan sumber daya berdasarkan label sumber daya dan jenis sumber daya. Mereka dapat digunakan untuk mengecualikan sumber daya yang tidak diperlukan selama operasi pengambilan, pemeriksaan perbedaan, dan sinkronisasi.

Filter Label Sumber Daya

Fitur ini diperkenalkan dalam versi 0.8.

Filter ini melakukan penyaringan berdasarkan bidang label dari sumber daya. Pengguna dapat mengaktifkan filter dengan menggunakan parameter --label-selector key=value pada baris perintah. Ini mendukung konfigurasi beberapa kondisi filter, dan hanya sumber daya jarak jauh yang secara bersamaan memenuhi aturan ini yang akan dianggap ada, sementara sumber daya lokal akan secara otomatis ditambahkan dengan label ini.

Ini memastikan bahwa kita melakukan pemeriksaan dan sinkronisasi sumber daya dalam lingkup kecil, membantu membagi tugas yang dieksekusi dalam pipeline CI/CD dan mencegah sinkronisasi yang tidak disengaja merusak sumber daya yang tidak perlu dimodifikasi.

Filter Jenis Sumber Daya

Fitur ini diperkenalkan dalam versi 0.9.

Kami menambahkan dua parameter baris perintah baru: --include-resource-type <type> dan --exclude-resource-type <type>, yang dapat dikonfigurasi beberapa kali, tetapi parameter include dan exclude saling eksklusif.

Dengan dua parameter ini, kita dapat menyaring jenis sumber daya tertentu dari operasi saat ini. Misalnya, menggunakan include-resource-type dapat digunakan untuk mengatur daftar putih dan memilih jenis sumber daya yang akan dimasukkan dalam operasi; sementara exclude-resource-type akan menentukan jenis sumber daya yang akan dikecualikan dari operasi.

Ini membantu kita lebih baik menangani sumber daya yang tidak perlu sering diubah, seperti metadata plugin dan aturan global plugin.

Peningkatan Baris Perintah

Peningkatan ini diperkenalkan dalam versi 0.9.

Konfigurasi Sertifikat TLS

Kami telah menambahkan serangkaian parameter terkait TLS ke baris perintah, seperti:

  • --ca-cert-file untuk menentukan file sertifikat CA server
  • --tls-skip-verify untuk menonaktifkan verifikasi sertifikat server TLS
  • --tls-client-cert-file dan --tls-client-key-file untuk menentukan file sertifikat klien mTLS

Parameter ini membantu ADC membangun koneksi terenkripsi yang aman dan mencegah serangan man-in-the-middle.

Kontrol Waktu Habis

Kami telah menambahkan parameter --timeout <duration> untuk mengontrol durasi waktu habis panggilan API, mendukung sintaks seperti 1m30s. Ketika panggilan Admin API memakan waktu terlalu lama atau macet, mekanisme waktu habis akan berlaku untuk mencegahnya menunggu tanpa batas.

Mode Debug

Fitur ini diperkenalkan dalam versi 0.9.

Ketika ADC melakukan operasi sumber daya secara internal, ia perlu memanggil banyak API. Terkadang kita mungkin perlu memeriksa panggilan API ini untuk menganalisis apakah mereka dikirim dengan benar atau untuk memverifikasi bahwa respons server memenuhi harapan. Meskipun penangkapan paket dapat digunakan untuk mencapai ini, operasinya tidak nyaman, dan ada kesulitan signifikan ketika TLS diaktifkan.

Oleh karena itu, kami telah menambahkan mode debug bawaan ke ADC, yang dapat diaktifkan menggunakan parameter --verbose <integer>. Ketika parameter ini diatur ke 2, ADC akan mencetak bagian permintaan dan respons dari setiap panggilan API internal untuk membantu debugging.

Parameter ini juga dapat digunakan untuk menyembunyikan log. Ketika parameter ini diatur ke 0, ADC akan menyembunyikan semua log umum kecuali kesalahan.

Memperkuat Pemrosesan Sumber Daya Jarak Jauh

Fitur ini diperkenalkan dalam versi 0.9.

Karena ADC bukan satu-satunya cara untuk mengonfigurasi layanan, rute, dll., pengguna juga dapat menggunakan dasbor Enterprise API7 untuk mencapai ini melalui operasi sederhana. Ini telah menyebabkan masalah: operasi di dasbor akan menggunakan ID sumber daya yang dihasilkan secara acak, sementara ADC menggunakan nama sumber daya dalam konfigurasi YAML untuk menghasilkan ID sumber daya tetap untuk lokasi sumber daya yang tepat.

Ini berarti bahwa jika pengguna membuat sumber daya di dasbor, ADC tidak akan dapat menemukannya berdasarkan ID sumber daya. ADC tidak dapat memodifikasi atau menghapus sumber daya yang dibuat di dasbor, tetapi sumber daya ini masih akan muncul dalam deteksi perubahan, tetapi tidak dapat dioperasikan dengan benar.

Oleh karena itu, kami telah mengoptimalkan logika terkait backend API7 ADC. Jika jarak jauh dan lokal keduanya mengandung sumber daya dengan nama yang sama, tetapi ID tidak dapat dicocokkan, ADC dapat dengan benar menghapus sumber daya jarak jauh dan membuat yang baru berdasarkan konfigurasi lokal, dalam hal ini ID akan dihasilkan oleh ADC berdasarkan nama sumber daya dan dapat digunakan untuk pencarian sumber daya selanjutnya. Pengguna dasbor API7 tidak akan terpengaruh, dan sumber daya yang dibuat oleh ADC masih dapat dilihat di dasbor.

Mendukung Bidang Ekstensi ADC dalam Konverter OpenAPI

Fitur ini diperkenalkan dalam versi 0.10.

Untuk membangun pipeline yang koheren dari OpenAPI ke ADC ke API7, konverter OpenAPI perlu menyuntikkan bidang yang diperlukan ke dalam file konfigurasi ADC YAML berdasarkan kebutuhan kami.

Misalnya, untuk memodifikasi bidang pass_host dalam upstream layanan, sebelumnya kita hanya dapat secara manual menggunakan konverter untuk mengonversi OpenAPI ke file konfigurasi ADC, secara manual memodifikasi bidang pass_host, dan kemudian mengajukan file yang dimodifikasi ke repositori Git untuk pipeline CI/CD mengeksekusi sinkronisasi ADC. Proses ini tidak koheren dan membutuhkan banyak intervensi manual.

Sekarang, melalui seri ekstensi x-adc yang diperkenalkan, pengguna hanya perlu menulis bidang ekstensi di lokasi tertentu dalam dokumen OpenAPI, dan ADC akan dengan benar menulis bidang ini dalam file konfigurasi yang dihasilkan. Dengan ekstensi ini, pengguna dapat langsung memodifikasi konten apa pun dalam konfigurasi ADC pada OpenAPI, seperti menambahkan label, menambahkan plugin, dan mengganti konfigurasi default layanan/upstream/rute.

Akibatnya, dengan hanya mempertahankan satu file OpenAPI, pipeline OpenAPI-ADC-API7 dapat diimplementasikan secara satu atap, sangat menyederhanakan alur kerja GitOps untuk konfigurasi gateway API.

Kesimpulan

Alat konfigurasi deklaratif ADC yang diluncurkan oleh API7.ai dapat membantu perusahaan mewujudkan manajemen GitOps dari gateway API. Dalam versi baru 0.8, 0.9, dan 0.10, alat ini telah dioptimalkan dan ditingkatkan secara fungsional, menambahkan fitur seperti pemantauan dan penyaringan perubahan sumber daya. Fitur baru ini memberikan dorongan baru untuk manajemen siklus hidup API secara penuh.

Kemampuan baru ini memungkinkan ADC untuk lebih memenuhi kebutuhan perusahaan untuk manajemen GitOps gateway API, meningkatkan efisiensi dan fleksibilitas manajemen API.

Tags: