Intégration de l'APISIX Declarative CLI avec API7 Enterprise
March 20, 2024
Qu'est-ce que ADC ?
ADC (APISIX Declarative CLI), introduit par API7.ai, est un outil de configuration déclarative visant à aider les utilisateurs à implémenter des capacités GitOps dans des environnements non-Kubernetes. Les utilisateurs peuvent l'intégrer de manière transparente dans leurs pipelines CI/CD pour gérer le cycle de vie des API, facilitant ainsi les mises à jour et les déploiements.
Dans sa version actuelle, ADC a été intégré à APISIX pour faciliter l'exportation et la synchronisation des ressources APISIX.
Qu'est-ce que API7 Enterprise ?
API7 Enterprise est construit sur APISIX, offrant des capacités de gestion d'API améliorées, y compris le regroupement de passerelles et le versionnement des services, visant à fournir une solution complète de gestion d'API pour les entreprises. Il existe quelques différences par rapport à la gestion d'API basée sur GitOps, car les utilisateurs peuvent gérer facilement les fonctionnalités d'API7 Enterprise via une interface Web UI.
Certains utilisateurs souhaitent vivement adopter le mode GitOps dans API7 Enterprise pour mieux gérer le cycle de vie complet des API. Ils visent à stocker toutes les définitions d'API sous forme de fichiers de configuration déclaratifs et à garantir l'exactitude des déclarations d'API grâce à des mécanismes de revue de code sur les Pull Requests. Ils utilisent également CI dans le référentiel pour prévisualiser les déploiements d'API dans l'environnement de développement avant de les publier dans l'environnement de production.
ADC a établi un cadre pour la gestion des configurations déclaratives et a terminé les tâches de détection des changements et de synchronisation sur les ressources d'API. Par conséquent, il est évident que le support d'ADC dans API7 Enterprise deviendra une direction de développement.
Nouvelles fonctionnalités de la version 0.7 d'ADC
Afin de supporter API7 Enterprise, plusieurs améliorations clés ont été apportées à ADC, comme décrit ci-dessous.
Backend d'API7 Enterprise
Nous avons publié une nouvelle version d'ADC avec un support préliminaire pour son utilisation sur le backend d'API7 Enterprise. Les fonctionnalités principales telles que dump
, diff
et sync
sont désormais disponibles sur le backend d'API7 Enterprise.
Avec ce nouveau support backend, les utilisateurs peuvent directement exporter les ressources d'API depuis APISIX et les synchroniser avec API7 Enterprise, facilitant ainsi la migration des anciennes configurations d'APISIX pour tirer pleinement parti des puissantes fonctionnalités de niveau entreprise fournies par API7 Enterprise.
Groupe de Passerelles
API7 Enterprise offre des capacités de gestion avancées pour plusieurs instances de passerelles. Les utilisateurs peuvent allouer des instances de passerelles à différents groupes de passerelles pour réaliser l'isolation des configurations dans différents environnements. Par exemple, différents clusters de passerelles peuvent être créés pour les environnements de développement et de production, permettant à un service d'être publié séparément dans différents groupes de passerelles pour répondre à des besoins différents. En plus des services, les plugins globaux et les certificats TLS sont également gérés via des groupes de passerelles.
La gestion des groupes de passerelles est une nouvelle fonctionnalité clé d'API7 Enterprise, et ADC fournit un support pour cela. Lors de l'utilisation des commandes principales d'ADC, les utilisateurs peuvent spécifier un indicateur de ligne de commande nommé gateway-group
, qui indique à ADC de récupérer et de synchroniser les ressources spécifiées par l'utilisateur depuis ce groupe de passerelles.
Filtrage des Ressources Basé sur les Labels
Dans les versions précédentes d'ADC, les configurations d'API étaient entièrement extraites et synchronisées depuis l'API Admin. Cependant, même si nous apportions des modifications mineures aux configurations d'API, le système nous obligeait à fournir tous les fichiers de configuration déclaratifs, même si certains d'entre eux n'avaient pas changé. Le fait de ne pas fournir ces fichiers de configuration inchangés conduisait le système à considérer les ressources listées dans l'API Admin mais non fournies en ligne de commande comme supprimées, entraînant leur suppression de l'environnement de production. Cela pouvait compromettre l'état de configuration attendu et affecter le traitement du trafic, ce qui n'est pas souhaitable.
Pour résoudre ce problème, nous fournissons désormais un filtre de ressources basé sur les labels. Ce filtre permet aux utilisateurs de spécifier une ou plusieurs paires clé-valeur de labels qui doivent être respectées par les ressources via un indicateur de ligne de commande nommé label-selector
. Toutes les ressources locales et distantes qui ne répondent pas aux exigences de ce filtre de label seront ignorées, empêchant ainsi efficacement toute perturbation accidentelle des configurations de passerelle.
Perspectives pour les Nouvelles Fonctionnalités
En plus des nouvelles fonctionnalités mentionnées ci-dessus, nous explorons encore de nouveaux domaines pour améliorer la fonctionnalité d'ADC et fournir une plus grande valeur aux utilisateurs. Quelques exemples incluent :
-
Fournir un mécanisme de plugin pour permettre aux utilisateurs de personnaliser les backends de passerelle d'API. Les utilisateurs peuvent exporter des configurations déclaratives d'ADC depuis n'importe quelle passerelle d'API et définir des configurations d'API via ADC pour les déployer sur n'importe quelle passerelle d'API.
-
Offrir des capacités de programmation scriptables pour fournir des hooks permettant aux utilisateurs d'inspecter et de modifier les configurations d'ADC à des étapes spécifiques. Cela aidera à implémenter des vérifications de base de sécurité pour certaines API et à prévenir des scénarios courants d'insécurité.
-
Fournir des convertisseurs de définition d'API autres qu'OpenAPI pour enrichir l'écosystème d'outils d'API qu'ADC peut exploiter.
ADC 0.7 est uniquement disponible pour un usage interne au sein d'API7 Enterprise et n'a pas été publié publiquement. Cette fonctionnalité sera contribuée à la communauté open-source Apache APISIX au deuxième trimestre de cette année.