Contrôleur d'entrée Citrix ADC

Maille de service légère

Une solution d’entrée (matérielle ou virtualisée ou conteneurisée) exécute généralement des fonctions proxy L7 pour le trafic nord-sud (N-S). L’architecture Service Mesh Lite utilise la même solution d’entrée pour gérer également le trafic est-ouest.

Dans un déploiement Kubernetes standard, le trafic est-ouest (E-W) traverse le proxy Kube intégré déployé dans chaque nœud. Kube-proxy est un proxy L4 qui ne peut effectuer que l’équilibrage de charge basé sur TCP/UDP et ne peut pas offrir les avantages d’un proxy L7.

Citrix ADC (MPX, VPX ou CPX) peut fournir les avantages du proxy L7 pour le trafic E-W tels que :

  • Déchargement mutuel TLS et SSL.
  • Routage basé sur le contenu, autorise ou bloque le trafic en fonction des paramètres d’en-tête HTTP et HTTPS.
  • Algorithmes d’équilibrage de charge avancés (moins de connexions ou moins de temps de réponse)
  • Observabilité du trafic est-ouest grâce à la mesure des signaux d’or (erreurs, latences, saturation, volume de trafic). Citrix ADM Service Graph est une solution d’observabilité pour surveiller et déboguer les microservices.

Une architecture de maillage de services (comme Istio ou LinkedRD) est complexe à gérer. L’architecture Service Mesh Lite est une version légère et beaucoup plus simple à démarrer pour répondre aux mêmes exigences.

Pour configurer la communication est-ouest avec Citrix ADC CPX dans une architecture Service Mesh Lite, vous devez d’abord comprendre comment le proxy kube-proxy est configuré pour gérer le trafic est-ouest.

Communication est-ouest avec kube-proxy

Lorsque vous créez un déploiement Kubernetes pour un microservice, Kubernetes déploie un ensemble d’espaces en fonction du nombre de réplicas. Pour accéder à ces espaces, vous créez un service Kubernetes qui fournit une abstraction pour accéder à ces espaces. L’abstraction est fournie en attribuant une adresse IP de cluster au service.

Le DNS Kubernetes est renseigné avec un enregistrement d’adresse qui mappe le nom du service avec l’adresse IP du cluster. Ainsi, lorsqu’une application tea veut accéder à un microservice nommé coffee, DNS renvoie l’adresse IP du cluster du service coffee à l’application tea. L’application tea initie une connexion qui est ensuite interceptée par kube-proxy pour l’équilibrer de charge vers un ensemble de pods coffee.

Kube-proxy

Communication est-ouest avec Citrix ADC CPX dans l’architecture Service Mesh Lite

L’objectif est d’insérer le Citrix ADC CPX dans le chemin est-ouest et d’utiliser les règles d’entrée pour contrôler ce trafic.

Effectuez les étapes suivantes pour configurer la communication est-ouest avec Citrix ADC CPX.

Étape 1 : modifiez la définition du service de café pour pointer vers Citrix ADC CPX

Pour que Citrix ADC CPX puisse gérer le trafic est-ouest, le nom de domaine complet du microservice (par exemple, coffee) doit pointer vers l’adresse IP Citrix ADC CPX au lieu de l’adresse IP du cluster du microservice cible (coffee). (Ce déploiement Citrix ADC CPX peut être identique à l’appareil Citrix ADC CPX d’entrée.) Après cette modification, lorsqu’un espace du cluster Kubernetes résout le nom de domaine complet du service de café, l’adresse IP du Citrix ADC CPX est renvoyée.

Modifier le service de café

Remarque :

Si vous déployez Service Mesh Lite pour afficher le graphique de service dans Citrix ADM à des fins d’observabilité, vous devez ajouter l’étiquette citrix-adc: cpx dans tous les services de votre application qui pointent vers l’adresse IP Citrix ADC CPX après avoir modifié le service.

Étape 2 : Créer un service headless nommé coffee-headless pour les dosettes de microservices de café

Puisque vous avez modifié le coffee service pour pointer vers Citrix ADC CPX, vous devez créer un service supplémentaire qui représente le déploiement du microservice Coffee.

Voici un exemple de ressource de service headless :

apiVersion: v1
kind: Service
metadata:
  name: coffee-headless
spec:
#headless Service
  clusterIP: None
  ports:
  - name: coffee-443
    port: 443
    targetPort: 443
  selector:
    name: coffee-deployment
<!--NeedCopy-->

Étape 3 : Création d’une ressource Ingress avec des règles pour le coffee-headless service

Avec les modifications apportées aux étapes précédentes, vous êtes maintenant prêt à créer un objet Ingress qui configure le Citrix ADC CPX pour contrôler le trafic est-ouest vers les pods de microservices de café.

Voici un exemple de ressource Ingress :

Échantillon

En utilisant la méthodologie habituelle d’équilibrage de charge d’entrée avec ces modifications, Citrix ADC CPX peut désormais équilibrer la charge du trafic est-ouest. Les diagrammes suivants montrent comment l’architecture Citrix ADC CPX Service Mesh Lite fournit un proxy L7 pour la communication est-ouest entre tea et les coffee microservices à l’aide des règles d’entrée :

Échantillon

Communication est-ouest avec Citrix ADC MPX ou VPX dans une architecture Service Mesh Lite

Citrix ADC MPX ou VPX agissant en tant qu’entrée peut également équilibrer la charge de la communication de microservices est-ouest de la même manière que mentionné dans la section précédente avec de légères modifications. La procédure suivante montre comment y parvenir.

Étape 1 : Créer un service externe en résolvant le nom d’hôte du café en adresse IP Citrix ADC MPX/VPX

Il y a deux manières de procéder. Vous pouvez ajouter un service externe mappant un nom d’hôte ou en utilisant une adresse IP.

Mappage par nom d’hôte (CNAME)

  • Créez un nom de domaine pour l’adresse IP du point de terminaison d’entrée (adresse IP du serveur virtuel de commutation de contenu) dans Citrix ADC MPX ou VPX (par exemple, myadc–instance1.us-east-1.mydomain.com) et mettez-le à jour sur votre serveur DNS.
  • Créez un service Kubernetes pour coffee with externalName as myadc–instance1.us-east-1.mydomain.com.
  • Désormais, lorsqu’un pod recherche le coffee microservice, a CNAME(myadc–instance1.us-east-1.mydomain.com) est renvoyé.
kind: Service
apiVersion: v1
metadata:
name: coffee
spec:
type: ExternalName
externalName: myadc–instance1.us-east-1.mydomain.com
<!--NeedCopy-->

Mappage d’un nom d’hôte à une adresse IP

Lorsque vous souhaitez que votre application utilise le nom d’hôte coffee qui sera redirigé vers l’adresse IP virtuelle hébergée dans Citrix ADC MPX ou VPX, vous pouvez créer les éléments suivants :

---
kind: "Service"
apiVersion: "v1"
metadata:
  name: "coffee"
spec:
  ports:
    -
      name: "coffee"
      protocol: "TCP"
      port: 80
---
kind: "Endpoints"
apiVersion: "v1"
metadata:
  name: "coffee"
subsets:
  -
    addresses:
      -
        ip: "1.1.1.1" # Ingress IP in MPX
    ports:
      -
        port: 80
        name: "coffee"
<!--NeedCopy-->

Étape 2 : Création d’un service headless pour les pods de microservices

Puisque vous avez modifié le service Coffee pour pointer vers Citrix ADC MPX, vous devez créer un service supplémentaire qui représente le déploiement du microservice Coffee.

Étape 3 : Création d’une ressource Ingress

Créez une ressource Ingress à l’aide de l’annotation ingress.citrix.com/frontend-ip où la valeur correspond à l’adresse IP du point de terminaison d’entrée dans Citrix ADC MPX ou VPX.

Vous pouvez désormais créer un objet Ingress qui configure Citrix ADC MPX ou VPX pour contrôler le trafic est-ouest vers les capsules de microservices de café.

Voici un exemple de ressource d’entrée :

Échantillon

En utilisant la méthodologie habituelle d’équilibrage de charge d’entrée avec ces modifications, Citrix ADC MPX peut désormais équilibrer la charge du trafic est-ouest. Le schéma suivant montre un Citrix ADC MPX ou VPX configuré en tant que proxy N-S et E-W à l’aide des règles d’entrée.

Échantillon

Déploiement automatisé des applications dans Service Mesh Lite

Pour déployer une application dans une architecture Service Mesh Lite, vous devez effectuer plusieurs tâches manuellement. Toutefois, lorsque vous souhaitez déployer plusieurs applications composées de plusieurs microservices, vous disposez d’un moyen plus simple de déployer les services dans une architecture Service Mesh Lite. Citrix vous fournit un moyen automatisé de générer des YAML prêts à être déployés.

Ce document fournit des informations sur la façon de générer tous les YAML nécessaires au déploiement de Service Mesh Lite à partir de vos YAML existants à l’aide du script fourni par Citrix.

Maille de service légère