3 conseils pour déployer APISIX dans Kubernetes (Partie 1)
March 14, 2024
L'ère du cloud-native computing a vu l'adoption généralisée de Kubernetes en tant que plateforme d'orchestration de conteneurs, avec Apache APISIX émergeant comme une passerelle API dynamique, haute performance et cloud-native. Le déploiement d'Apache APISIX dans Kubernetes est devenu de plus en plus courant. Cependant, malgré le processus de déploiement relativement simple d'Apache APISIX sur Kubernetes, il existe encore quelques points clés à prendre en compte. Dans cette série d'articles, nous aborderons les sujets suivants :
- Les considérations sur les méthodes de déploiement
- Les vérifications de santé, la journalisation et la surveillance
- La gestion des plugins et configurations personnalisés
Dans cet article, nous nous concentrerons sur le premier point, à savoir les considérations sur les méthodes de déploiement lors du déploiement d'Apache APISIX dans Kubernetes.
Méthodes de déploiement d'APISIX dans Kubernetes
Pour déployer et gérer APISIX de manière fluide dans Kubernetes tout en assurant la stabilité et la fiabilité du système, plusieurs facteurs doivent être pris en compte dans les méthodes de déploiement.
1. Séparation du plan de données et du plan de contrôle
Lors du déploiement dans Kubernetes, il est crucial de séparer le plan de données d'APISIX (les nœuds traitant le trafic réel) de son plan de contrôle (les nœuds gérant les configurations et traitant les appels API). Cette séparation offre plusieurs avantages :
-
Évolutivité élastique : Le plan de données gère le traitement des requêtes réelles, tandis que le plan de contrôle gère la distribution des configurations et des politiques. Avec cette séparation, le système peut évoluer horizontalement de manière indépendante pour les plans de données et de contrôle, ajustant dynamiquement le système en fonction des demandes de charge de travail réelles. Cela facilite l'évolutivité élastique, améliorant ainsi la scalabilité globale du système.
-
Isolation des pannes : La séparation des plans de données et de contrôle permet d'isoler les pannes. Si le plan de contrôle tombe en panne, le plan de données peut continuer à traiter les requêtes, assurant la disponibilité du service, et vice versa. Cette séparation aide à prévenir les pannes ponctuelles qui pourraient affecter l'ensemble du système, améliorant ainsi la tolérance aux pannes et la stabilité.
-
Sécurité renforcée : La séparation des plans de données et de contrôle améliore la sécurité du système. Le plan de contrôle contient généralement des informations sensibles telles que les politiques de contrôle d'accès et les configurations d'authentification, tandis que le plan de données traite les requêtes réelles. En les déployant séparément, la sécurité du plan de contrôle peut être mieux protégée, réduisant les risques d'attaques potentielles.
2. Solution de déploiement persistant avec etcd
Apache APISIX propose différents modes de configuration, tels que le mode standalone et le mode centre de configuration etcd. Si vous optez pour un cluster etcd comme centre de configuration pour Apache APISIX, plusieurs considérations doivent être prises en compte :
-
Utilisation de StatefulSet : Dans Kubernetes, StatefulSet est couramment utilisé pour déployer etcd. StatefulSet fournit des identifiants réseau stables et des déploiements de Pods ordonnés, essentiels pour un système distribué. Chaque nœud etcd peut avoir un identifiant unique et maintenir un stockage persistant pour assurer la sécurité des données.
-
Limites de ressources appropriées : Définissez des limites de ressources appropriées pour les Pods etcd afin de garantir leur bon fonctionnement dans le cluster. Ajustez-les en fonction de la taille du cluster et de la charge de travail pour éviter les pénuries ou le gaspillage de ressources.
-
Configuration du stockage persistant : Pour assurer la persistance et la fiabilité des données, il est recommandé de stocker les données etcd dans un stockage persistant. Les volumes persistants (PV) et les revendications de volumes persistants (PVC) de Kubernetes peuvent être utilisés à cette fin.
-
Activation du chiffrement TLS : Activez le chiffrement TLS dans le cluster etcd pour protéger la transmission des données. Utilisez des certificats et des clés privées pour authentifier le cluster etcd et chiffrer la communication entre les nœuds. Cela peut être réalisé en créant et en utilisant des certificats auto-signés ou des certificats émis par des autorités de certification (CA) de confiance.
-
Activation de l'authentification et de l'autorisation : etcd prend en charge l'authentification basée sur les noms d'utilisateur et les mots de passe, ainsi que l'autorisation basée sur les rôles. Il est conseillé d'activer ces fonctionnalités dans un environnement de production pour s'assurer que seuls les utilisateurs autorisés peuvent accéder et modifier les données dans etcd. Lors de la connexion du plan de contrôle et du plan de données d'Apache APISIX à etcd, il est recommandé d'attribuer des rôles différents, comme accorder des capacités de lecture-écriture au plan de contrôle et des capacités de lecture seule au plan de données.
-
Sauvegardes régulières : Sauvegardez régulièrement les données etcd pour prévenir la perte ou la corruption des données. Utilisez les outils de sauvegarde fournis par etcd et stockez les sauvegardes dans un endroit sécurisé pour une récupération en cas de besoin. Les méthodes de sauvegarde incluent les méthodes de sauvegarde à chaud et à froid. Pour la sécurité des données, il est recommandé d'utiliser la méthode etcd learner pour la sauvegarde à chaud et de la combiner avec des méthodes de sauvegarde à froid par instantané pour maximiser les capacités de récupération des données.
-
Surveillance et alertes : Déployez des outils de surveillance pour surveiller en temps réel l'état de santé du cluster etcd. Prometheus est un outil de surveillance couramment utilisé qui peut être intégré à etcd. Configurez des règles d'alerte pour agir rapidement en cas de problème.
-
Gestion correcte des changements de nœuds : Des ajouts, des suppressions ou des remplacements de nœuds peuvent survenir dans le cluster etcd. Assurez-vous de gérer correctement ces changements pour éviter les incohérences de données et les interruptions de service.
3. Utilisation d'APISIX Ingress Controller au lieu de K8s Ingress Controller
APISIX Ingress Controller est un outil axé sur la gestion des API, offrant des performances élevées et des options de configuration flexibles. Si vous avez besoin de règles de routage plus complexes, de limitation de débit, de disjoncteurs et d'autres fonctionnalités avancées, APISIX Ingress Controller peut être un meilleur choix. Il fournit un système de plugins riche, permettant l'intégration de plugins via APISIX Ingress CRD en utilisant une configuration déclarative pour gérer l'authentification, l'autorisation, la surveillance, la journalisation et d'autres fonctionnalités. Cela enrichit les capacités d'APISIX Ingress Controller et simplifie la configuration.
Si vous avez besoin d'une interface de configuration complète et d'une intégration approfondie avec Kubernetes, envisagez la plateforme de gestion du cycle de vie complet des API API7 Enterprise basée sur Apache APISIX. API7 Enterprise fournit une solution complète pour l'automatisation avancée, la surveillance et le dépannage, offrant un support plus fiable pour les entreprises.
Conclusion
Lors du déploiement d'APISIX dans Kubernetes, plusieurs aspects doivent être pris en compte. Tout d'abord, concentrez-vous sur la séparation du plan de données et du plan de contrôle pour atteindre une évolutivité élastique, une isolation des pannes et une sécurité renforcée. Ensuite, adoptez un schéma de déploiement persistant basé sur etcd pour assurer la persistance et la fiabilité des configurations. Enfin, envisagez d'utiliser un APISIX Ingress Controller plus adapté au lieu du K8s Ingress Controller pour bénéficier de fonctionnalités plus riches et d'une configuration plus simple. Ce n'est qu'en respectant ces meilleures pratiques que la stabilité et la fiabilité du système peuvent être assurées.