Les passerelles Alibaba Cloud Service Mesh (ASM) sont des proxies Envoy autonomes exécutés à la périphérie de votre maillage, indépendamment des proxies sidecar déployés aux côtés de vos charges de travail. Elles constituent des points d'entrée et de sortie dédiés où vous appliquez des règles de routage, des politiques de sécurité et une configuration d'observabilité, le tout géré via un plan de contrôle unique.
Contrairement à un contrôleur d'entrée Kubernetes standard, les passerelles ASM exposent l'ensemble des capacités de gestion du trafic du service mesh : équilibrage de charge des couches 4 à 7, mTLS, autorisation fine et routage conscient des protocoles. Définissez le comportement de la passerelle via des ressources de passerelle Istio ou l'API Gateway Kubernetes, puis associez des services virtuels pour le routage de couche 7.
ASM propose trois types de passerelles :
| Type de passerelle | Fonction | Cas d'utilisation |
|---|---|---|
| Passerelle d'entrée (Ingress gateway) | Achemine le trafic entrant vers les services au sein du maillage. Opère au niveau de la couche 7 en distribuant les requêtes HTTP vers différents services Kubernetes selon les chemins d'URL, les en-têtes d'hôte ou d'autres attributs de requête. | Exposez des services à Internet ou à un réseau interne via un point d'entrée unique avec équilibrage de charge de couche 7, terminaison TLS et contrôle d'accès. |
| Passerelle de sortie (Egress gateway) | Achemine le trafic sortant des services du maillage vers des endpoints externes par le biais d'un point de sortie centralisé. | Appliquez des politiques de sécurité sur le trafic sortant et gérez de manière centralisée le routage du trafic vers les services externes. |
| Passerelle Istio | Ressource de configuration définissant la manière dont un équilibreur de charge situé à la périphérie du maillage gère les connexions HTTP et TCP entrantes ou sortantes. Associez-y un service virtuel pour le routage de couche 7. | Définissez les paramètres de port, de protocole et de TLS pour un équilibreur de charge, puis attachez des règles de routage via des services virtuels. |
Passerelle d'entrée (Ingress gateway)
Une passerelle d'entrée offre un point d'entrée unifié pour le trafic entrant au niveau de la couche 7. Elle route les requêtes HTTP depuis le même port TCP vers différents services Kubernetes en fonction des chemins d'URL, des en-têtes d'hôte et d'autres attributs de requête.
Déploiement et gestion des passerelles d'entrée
| Fonctionnalité | Description | Référence |
|---|---|---|
| Créer une passerelle d'entrée | Déployez une passerelle d'entrée dans un cluster Kubernetes comme point d'entrée unique pour l'accès Internet ou au réseau interne. Gérez la passerelle via la console ASM. | Créer une passerelle d'entrée |
| Passerelles sans serveur | Déployez des passerelles en mode sans serveur gérées entièrement par ASM. Les passerelles sans serveur absorbent les pics de trafic grâce à la mise à l'échelle automatique, sans dépendre des clusters Container Service for Kubernetes (ACK). Par rapport aux passerelles ASM standard exécutées dans des clusters ACK, les passerelles sans serveur offrent une stabilité accrue, une meilleure élasticité et un coût réduit. | Utiliser les passerelles sans serveur ASM |
| Prise en charge du Network Load Balancer (NLB) | Associez une instance NLB à une passerelle d'entrée pour bénéficier d'un équilibrage de charge de couche 4 avec mise à l'échelle automatique. Par défaut, la définition de ServiceType sur LoadBalancer associe une instance Classic Load Balancer (CLB). |
Associer une instance NLB à une passerelle d'entrée |
Protocoles pris en charge
| Fonctionnalité | Description | Référence |
|---|---|---|
| Routage du trafic (interface graphique) | Créez des règles de destination et des services virtuels via une interface graphique sans rédiger de YAML. | Configurer le routage du trafic pour une passerelle ASM |
| Migration du trafic TCP | Migrez le trafic TCP en toute fluidité pour maintenir la continuité des activités lors de l'optimisation de la topologie réseau, de la mise à l'échelle horizontale des serveurs d'applications ou de la limitation du trafic. | Utiliser ASM pour transférer le trafic TCP |
| gRPC | Accédez aux services gRPC de votre maillage via une passerelle d'entrée avec contrôle d'accès et gouvernance des services. | Utiliser une passerelle d'entrée pour accéder à un service gRPC |
| Transcodage gRPC-JSON | Utilisez ASMGrpcJsonTranscoder pour transcoder les requêtes HTTP contenant des corps JSON en requêtes gRPC, permettant ainsi aux clients HTTP/JSON d'accéder aux services gRPC. | Utiliser ASMGrpcJsonTranscoder pour le transcodage HTTP/JSON vers gRPC |
| WebSocket | Accédez aux services WebSocket via une passerelle d'entrée. WebSocket permet une communication bidirectionnelle complète sur une seule connexion TCP au niveau de la couche application. | Utiliser une passerelle d'entrée pour accéder à un service WebSocket |
Gestion du trafic
| Fonctionnalité | Description | Référence |
|---|---|---|
| Limitation locale du débit | Limitez le trafic au niveau de la passerelle ou du service pour protéger votre système contre les surcharges lors des pics de trafic. | Configurer la limitation locale du débit sur une passerelle d'entrée |
| Limitation globale du débit | Appliquez des limites de débit à des routes spécifiques sur une passerelle d'entrée pour gérer les rafales de trafic, prévenir la surcharge des services et se défendre contre les attaques. | Configurer la limitation globale du débit sur une passerelle d'entrée |
| Disjoncteur (Circuit breaking) | Configurez des disjoncteurs au niveau des routes via des services virtuels et des règles de destination pour une gouvernance du trafic non intrusive. | Utiliser les disjoncteurs au niveau des routes |
| API Gateway | Définissez des règles de routage à l'aide de l'API Gateway Kubernetes, un projet open source de la communauté SIG-NETWORK dédié à un réseautage de services expressif, extensible et orienté rôles. | Utiliser l'API Gateway pour définir une règle de routage |
| Mode contrôleur d'entrée | Utilisez une passerelle ASM comme contrôleur d'entrée Kubernetes pour exposer les services d'un cluster. | Utiliser une passerelle ASM comme contrôleur d'entrée |
| Mise en miroir du trafic | Répliquez le trafic de production vers un cluster de test ou une version de service afin de valider les modifications sans impacter l'environnement de production. | Utiliser la mise en miroir du trafic entre clusters |
| Affinité de session | Routez toutes les requêtes provenant du même utilisateur ou de la même session vers le même serveur backend. Cette fonction est utile pour maintenir l'état des paniers d'achat, des sessions de connexion et des paramètres personnalisés. | Implémenter l'affinité de session dans une passerelle d'entrée ASM |
Gestion des certificats et TLS
Toutes les données transitant entre une passerelle d'entrée et un proxy sidecar circulent dans un tunnel mTLS. Si des proxies sidecar sont injectés dans votre application, configurez la terminaison TLS sur la passerelle d'entrée pour maintenir un chiffrement de bout en bout.
| Fonctionnalité | Description | Référence |
|---|---|---|
| HTTPS avec chargement dynamique des certificats | Activez HTTPS sur une passerelle d'entrée avec des mises à jour de certificats en temps réel. Configurez les clés privées, les certificats serveur et les certificats racine sans redémarrer les passerelles ni monter de volumes secrets. Gérez plusieurs certificats et leurs clés privées pour différents hôtes. | Utiliser une passerelle d'entrée pour activer HTTPS |
| Pass-through TLS | Transférez le trafic chiffré directement vers les services backend sans terminer TLS au niveau de la passerelle. Utilisez cette option lorsque les proxies sidecar ne sont pas injectés ou lorsque d'autres circonstances nécessitent un chiffrement de bout en bout au niveau applicatif. | Activer le pass-through TLS sur une passerelle d'entrée |
| Écouteur HTTPS sur CLB | Créez un écouteur HTTPS en associant un certificat à l'instance CLB d'une passerelle d'entrée. L'écouteur déchiffre les requêtes HTTPS en HTTP et les transfère vers le pod de la passerelle. | Créer un écouteur HTTPS pour l'instance CLB |
| Gestion des certificats | Synchronisez les certificats entre plusieurs clusters au sein d'une instance ASM. Consultez les détails des certificats et configurez des alertes d'expiration. | Utiliser la fonction de gestion des certificats |
| Application des versions TLS | Désactivez les anciennes versions de TLS (1,0 et 1,1) et imposez TLS 1,2 ou ultérieur pour prévenir les attaques de type « man-in-the-middle » et les fuites de données. | Configurer les versions TLS sur une passerelle d'entrée |
| mTLS pour gRPC | Configurez Mutual TLS (mTLS) pour les services gRPC afin d'imposer une authentification mutuelle et un chiffrement de bout en bout. | Utiliser une passerelle d'entrée pour configurer gRPC basé sur mTLS |
| Liaison certificat-domaine | Liez un certificat à un nom de domaine via la console, puis accédez au domaine en HTTPS par le biais de la passerelle d'entrée. | Lier un certificat à un nom de domaine |
| Intégration WAF | Connectez une passerelle d'entrée à une instance Web Application Firewall (WAF) et personnalisez les champs des journaux d'accès pour afficher les en-têtes ajoutés par WAF. | Connecter une passerelle d'entrée à une instance WAF |
| Intégration cert-manager | Utilisez cert-manager pour émettre et gérer les certificats des passerelles ASM, permettant ainsi l'accès HTTPS aux services. | Utiliser cert-manager pour gérer les certificats des passerelles ASM |
Autorisation et contrôle d'accès
| Fonctionnalité | Description | Référence |
|---|---|---|
| Contrôle d'accès basé sur l'IP | Configurez une liste de blocage ou d'autorisation pour autoriser ou refuser les requêtes en fonction des adresses IP source, des noms de domaine, des ports ou des plages d'IP distantes. | Configurer une liste de blocage ou d'autorisation pour une passerelle d'entrée |
| Autorisation personnalisée | Définissez des politiques de contrôle d'accès basées sur les noms de domaine, les chemins et les méthodes HTTP pour restreindre l'accès à des services spécifiques. | Implémenter une autorisation personnalisée |
| Authentification unique (SSO) basée sur OIDC | Configurez l'authentification unique OpenID Connect (OIDC) à l'aide d'Alibaba Cloud IDaaS ou d'autres fournisseurs d'identité conformes à OIDC. Accédez à plusieurs systèmes avec une seule identité, sans modifier vos applications. | Configurer l'authentification unique basée sur OIDC sur une passerelle d'entrée |
| Authentification JWT | Validez les jetons Web JSON (JWT) dans les en-têtes de requête pour authentifier les utilisateurs au niveau de la passerelle. Seules les requêtes accompagnées d'un JWT valide sont transmises aux services backend. | Configurer l'authentification basée sur JWT sur une passerelle d'entrée |
| Authentification JWT de l'utilisateur final | Authentifiez l'origine des requêtes au niveau de la passerelle d'entrée en vérifiant les JWT présents dans les en-têtes de requête. | Configurer l'authentification JWT pour une passerelle d'entrée dans ASM |
| Intégration OPA | Intégrez un moteur Open Policy Agent (OPA) à une passerelle d'entrée afin de définir des politiques d'autorisation fines basées sur les identités utilisateur ou le contenu des requêtes. | Intégrer un moteur OPA à une passerelle d'entrée |
| SSO avec IDaaS | Implémentez l'authentification unique pour toutes les applications d'une instance ASM via Alibaba Cloud IDaaS, sans aucune modification de code. | Intégrer IDaaS à ASM pour l'authentification unique |
| SSO avec Keycloak | Utilisez Keycloak auto-géré comme fournisseur d'identité pour mettre en œuvre l'authentification unique des applications au sein d'une instance ASM. | Intégrer Keycloak à ASM pour l'authentification unique |
| CORS | Configurez des politiques de partage des ressources cross-origin (CORS) dans un service virtuel pour autoriser l'accès interdomaines entre les clients et les services. | Implémenter CORS dans ASM |
| Restriction d'IP avec proxy de couche 7 | Restreignez l'accès aux applications pour des adresses IP spécifiques, qu'un proxy de couche 7 soit présent ou non entre le client et la passerelle ASM. | Restreindre l'accès aux applications pour des adresses IP spécifiques |
Réseau et configuration
| Fonctionnalité | Description | Référence |
|---|---|---|
| Passerelle Istio partagée | Configurez une seule ressource de passerelle Istio pour plusieurs passerelles d'entrée afin de simplifier la configuration. | Configurer une passerelle Istio pour plusieurs passerelles d'entrée |
| Instances CLB multiples | Associez plusieurs instances CLB à une seule passerelle d'entrée pour augmenter la capacité d'équilibrage de charge. | Accéder à une passerelle d'entrée à l'aide de plusieurs instances CLB |
| Extraction de l'IP client | Extrayez l'adresse IP d'origine du client à partir des en-têtes de requête HTTP pour activer des politiques de contrôle d'accès basées sur l'IP. | Obtenir l'adresse IP d'origine d'un client |
| Prise en charge IPv6 | Créez une passerelle d'entrée avec une adresse IPv6 pour une sécurité accrue par rapport à IPv4. | Créer une passerelle d'entrée utilisant une adresse IPv6 |
| Accès CLB depuis les pods | Si les pods du plan de données ne peuvent pas atteindre l'adresse IP CLB d'une passerelle d'entrée, accédez-y plutôt via l'IP du cluster ou le nom de la passerelle. | Résoudre les problèmes d'accès CLB depuis les pods du plan de données |
| Désactivation de HTTP/2 | Désactivez HTTP/2 sur une passerelle d'entrée activée pour HTTPS lorsque les limitations côté client de HTTP/2 ne peuvent pas être résolues par la configuration. | Désactiver HTTP/2 sur une passerelle d'entrée |
Passerelle de sortie (Egress gateway)
Une passerelle de sortie fournit un point de sortie centralisé pour le trafic quittant le maillage. Routez tout le trafic sortant via une passerelle dédiée pour obtenir une visibilité et un contrôle sur les communications externes.
Gérez les passerelles de sortie via la console ASM ou l'API Kubernetes.
| Fonctionnalité | Description | Référence |
|---|---|---|
| Créer une passerelle de sortie | Déployez une passerelle de sortie dans un cluster Kubernetes comme point de sortie centralisé pour le trafic Internet ou du réseau interne. | Créer une passerelle de sortie |
| Router tout le trafic sortant | Configurez une passerelle de sortie pour gérer de manière centralisée tout le trafic sortant à des fins de contrôle de sécurité et de routage. | Configurer une passerelle de sortie pour router tout le trafic sortant |
| Politique de trafic de sortie (CRD) | Définissez des politiques de trafic de sortie à l'aide des champs CustomResourceDefinition (CRD). Nécessite ASM version 1,16,4 ou ultérieure. | Utiliser une politique de trafic de sortie pour gérer le trafic sortant |
Passerelle Istio
Une passerelle Istio est une ressource de configuration qui définit un équilibreur de charge s'exécutant à la périphérie de votre maillage. Elle spécifie les ports, protocoles et paramètres TLS exposés par l'équilibreur de charge. Associez un service virtuel à une passerelle Istio pour ajouter des règles de routage de couche 7.
| Fonctionnalité | Description | Référence |
|---|---|---|
| Gérer les passerelles Istio | Créez, modifiez et supprimez des passerelles Istio dans la console ASM. | Gérer les passerelles Istio |
Haute disponibilité
ASM prend en charge plusieurs stratégies pour maintenir la haute disponibilité des passerelles et minimiser la perte de trafic lors des mises à niveau, de la mise à l'échelle et des pannes.
| Fonctionnalité | Description | Référence |
|---|---|---|
| Configuration de passerelle haute performance | Configurez une passerelle ASM pour offrir des performances élevées et une haute disponibilité. | Configurer une passerelle ASM haute performance et haute disponibilité |
| Planification des pods | Planifiez les pods de passerelle sur des nœuds spécifiques pour les isoler des pods d'application et améliorer la disponibilité. | Planifier les pods d'une passerelle ASM sur un nœud spécifié |
| Déploiement de passerelle sans serveur | Déployez une passerelle ASM sans serveur sur des nœuds virtuels avec Elastic Container Instance pour des charges de travail élastiques ne nécessitant pas de maintenance des nœuds. | Déployer une passerelle ASM sans serveur |
| Anti-affinité des pods | Répartissez les pods de passerelle sur différents nœuds ou zones de disponibilité à l'aide de politiques d'anti-affinité des pods. | Améliorer la disponibilité du service de passerelle d'entrée |
| Arrêt gracieux | Évitez la perte de trafic lors de la réduction de capacité ou des redémarrages progressifs en permettant aux requêtes en cours de se terminer dans une fenêtre de temps configurée. | Activer l'arrêt gracieux |
| Entrée multi-cluster | Déployez des services sur plusieurs clusters et configurez une passerelle d'entrée unifiée pour gérer le trafic vers tous les clusters. | Configurer une passerelle d'entrée unifiée pour plusieurs clusters |
| Mise à niveau canari | Mettez à niveau une passerelle ASM de manière incrémentielle en démarrant une nouvelle version d'un pod de passerelle, en vérifiant le transfert du trafic, puis en finalisant la mise à niveau complète. Effectuez un retour arrière à tout moment en cas de problème. | Effectuer une mise à niveau canari d'une passerelle ASM |
Observabilité
Surveillez le trafic des passerelles via les journaux d'accès et les métriques, avec une intégration native aux services d'observabilité d'Alibaba Cloud.
| Fonctionnalité | Description | Référence |
|---|---|---|
| Journaux d'accès | Générez des journaux d'accès sur la passerelle (affichés sur la sortie standard avec des champs personnalisables) et collectez-les dans Simple Log Service pour le stockage, l'analyse et la visualisation. | Configurer la génération et la collecte des journaux d'accès |
| Métriques | Générez des métriques personnalisables sur la passerelle et collectez-les dans Managed Service for Prometheus pour le stockage, l'analyse et la visualisation. | Configurer la génération et la collecte des métriques |
Traitement des requêtes
| Fonctionnalité | Description | Référence |
|---|---|---|
| En-têtes de réponse HTTP | Ajoutez des en-têtes de réponse HTTP pour les applications web à l'aide d'un filtre Envoy afin d'améliorer la sécurité des applications. | Ajouter des en-têtes de réponse HTTP à l'aide d'un filtre Envoy |
| Compression des données | Activez la compression des données sur une passerelle ASM pour réduire la taille des réponses et améliorer le temps de réponse. | Activer la compression des données pour la passerelle d'entrée |
Migration depuis des passerelles existantes
Si vous utilisez actuellement une passerelle d'entrée Istio auto-gérée ou NGINX Ingress Controller, migrez le trafic vers une passerelle d'entrée ASM pour une gestion centralisée via le plan de contrôle ASM.
| Parcours de migration | Référence |
|---|---|
| Passerelle d'entrée Istio auto-gérée vers ASM | Migrer le trafic depuis une passerelle d'entrée Istio auto-gérée |
| NGINX Ingress Controller vers ASM | Migrer le trafic depuis NGINX Ingress Controller |
| Configurations NGINX vers ASM | Migrer les configurations NGINX courantes |