ما الجديد في ADC 0.11 و 0.12؟
August 7, 2024
منذ إصدار ADC (API Declarative CLI) الإصدار 0.10 قبل شهرين، كنا نعمل بلا كلل لتقديم تحديثين رئيسيين—الإصدارين 0.11 و0.12، بالإضافة إلى سلسلة من التحديثات التصحيحية المستهدفة. تركز هذه التحديثات بشكل رئيسي على دعم Apache APISIX، وتحسين الميزات الحالية، وإصلاح الأخطاء.
إضافة دعم خلفي لـ Apache APISIX
بدءًا من ADC 0.11، تم تقديم دعم تجريبي للخلفية Apache APISIX.
تم الآن دمج ADC مع واجهة برمجة التطبيقات الإدارية لـ APISIX، مما يتيح تصدير الموارد ومزامنتها بكفاءة. سنواصل تعزيز قابليتها للاستخدام. يتم تمكين خيار الخلفية apisix
بشكل افتراضي في ADC؛ يحتاج المستخدمون فقط إلى تكوين نقطة نهاية واجهة برمجة التطبيقات الإدارية ومفتاح API للاتصال.
الفروق بين ADC وواجهة برمجة التطبيقات الإدارية
يرجى ملاحظة أن ADC لا يهدف إلى التوافق الكامل مع جميع وظائف APISIX، بل يركز على مجموعة أساسية من الميزات وأفضل الممارسات. نعتقد أن الاستثمار في الميزات التي يحتاجها المستخدمون حقًا، بدلاً من السعي الأعمى للتغطية الشاملة، هو الطريق لتطوير ADC.
على الرغم من أن APISIX تقدم درجة عالية من المرونة في التكوين، إلا أن هذه الحرية غالبًا ما تأتي مع تعقيدات الصيانة طويلة الأجل. عندما يتم نقل إدارة التكوين من مشرف إلى آخر، يواجه المشرف الجديد عادةً تحدي فهم أسلوب التكوين الفريد للمشرف السابق، بدلاً من تبني مجموعة من قواعد أفضل الممارسات الناضجة والمعترف بها على نطاق واسع.
على سبيل المثال، على منصة APISIX، يمكن للمستخدمين تكوين مسارات غير مرتبطة مباشرة بخدمات محددة، بل تحديد موارد المصدر مباشرة على مستوى المسار. ومع ذلك، هذه الطريقة غير مدعومة بشكل أصلي من قبل ADC. للتوافق مع المعايير المنطقية وإجراءات التشغيل الموحدة، فإن الطريقة الموصى بها هي تضمين المسارات ضمن خدمة محددة وتعيين عناوين المصدر بدقة ضمن تلك الخدمة.
على سبيل المثال، في خدمة المنتجات، نحدد خدمة تسمى Product Service
ونقوم بتكوين المصدر، وتمكين الإضافات، وتعيين المسارات داخلها. في هذا النموذج، يمكن أن تشارك عدة مسارات نفس تكوين المصدر والإضافات، مما يبسط عملية التكوين بشكل كبير.
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"]
المثال أعلاه هو تنسيق بسيط لتعريف الخدمة. بالإضافة إلى ذلك، يدعم ADC ميزات متقدمة مثل اكتشاف الخدمات، إعدادات المهلة، سياسات إعادة المحاولة، وأولوية المسارات، مما يضمن تكوينًا شاملًا ومرنًا.
نظرًا لأن APISIX تدعم طرق تكوين أكثر ثراءً، قد يواجه ADC تناقضات عند تصدير التكوينات مقارنة بعرض واجهة برمجة التطبيقات الإدارية لـ APISIX، مثل:
- سيتم تجميع المسارات التي لا تستخدم الخدمات في خدمة واحدة لتلبية التسلسل الهرمي للخدمة-المسار.
- سيتم تضمين المصادر المشار إليها بواسطة المعرف في نقطة الاستخدام.
- سيتم استبدال موارد قوالب الإضافات بخدمات تحتوي على مسارات.
لذلك، يحتاج المستخدمون إلى مراجعة ملفات تعريف ADC التي يتم إنشاؤها أثناء عملية التصدير بعناية للتأكد من أنها لا تزال تلبي النية الأصلية.
لماذا يُوصى بـ ADC؟
عند استخدام لوحة تحكم APISIX، يحتاج المستخدمون غالبًا إلى تنفيذ عمليات متكررة في النماذج، مما قد يكون مرهقًا وعرضة للأخطاء. في المقابل، يتضمن استخدام ADC للتكوين التصريحي ببساطة كتابة ملفات YAML وتنفيذ عمليات المزامنة. سيقوم ADC تلقائيًا بتحويل التكوينات إلى استدعاءات لواجهة برمجة التطبيقات الإدارية، مما يتيح النشر والإدارة السريعة.
وبالتالي، يمكن أن يساعد ADC في تبسيط عملية الإدارة والنشر، ويمكن أن يحقق بسهولة سيناريوهات GitOps. يتضمن ذلك إدارة ملفات تعريف YAML عبر مستودع Git واستخدام سير عمل PR وأدوات CI لتحديث التكوينات تلقائيًا. هذا يقلل بشكل كبير من كمية العمليات اليدوية المطلوبة، ويتجنب المشكلات الموجودة في لوحة تحكم APISIX، ويقلل من تعقيد كتابة النصوص البرمجية لاستدعاء واجهة برمجة التطبيقات الإدارية.
بالنسبة للمشاريع الجديدة، نوصي بشدة ببناء تكوينات البوابة بدءًا من ADC. بالنسبة للمشاريع الحالية، يمكن تحقيق الهجرة التدريجية إلى إدارة ADC عن طريق تصدير التكوينات وتعديلها بشكل معتدل.
تحسين خلفية API7 Enterprise
متضمن في الإصدارين 0.11/0.12
في الإصدارين 0.11 و0.12، قمنا بتنفيذ عدة تحسينات لخلفية API7 لتعزيز تجربة المطورين. ADC متوافق تمامًا مع هذه التحسينات، مما يعني أن المطورين يحتاجون فقط إلى تحديث إصدار ADC للاستفادة من هذه التحسينات دون أي تعديلات على ملفات التعريف الحالية.
تحسين فحوصات تعريف ADC
متضمن في الإصدار 0.12
لقد قمنا بتحسين وإصلاح قواعد المخطط لفحوصات تعريف ADC بشكل شامل لمساعدة المطورين على اكتشاف وتجنب المشكلات المحتملة في التكوين مسبقًا.
JSON Schema
علاوة على ذلك، ندعم الآن تصدير قواعد التحقق كـ JSON Schema لمساعدة المحررين الذين يستخدمون IDEs. سيستفيد المستخدمون من تلميحات التركيب والفحوصات الفورية في ملفاتهم، مما يحسن بشكل كبير كفاءة وجودة الترميز.
بالنسبة للمطورين الذين يفضلون Visual Studio Code، يمكن تمكين ميزة YAML وإضافة التعليق التالي في أعلى الملف لتفعيل هذه الميزة:
# yaml-language-server: $schema=https://raw.githubusercontent.com/api7/adc/main/schema.json
الخاتمة
كما ذكرنا سابقًا في مدوناتنا، سيتم في النهاية إتاحة ADC كمصدر مفتوح. بعد ستة أشهر من التطوير الداخلي وتكرارات متعددة، تم إعادة هيكلة ADC بالكامل إلى قاعدة كود تعتمد على TypeScript، مع التخلي تمامًا عن الكود الأصلي المكتوب بلغة Go. هذا يجعلها أسهل في التعلم والتطوير.
مع الإصدار العام لـ ADC الإصدار 0.12، ندعو المطورين من جميع أنحاء العالم للمشاركة في تطويره وتحسينه. قاعدة الكود متاحة الآن على https://github.com/api7/adc، ونحن نتطلع إلى مساهماتكم.