Contrôleur d'entrée Citrix ADC

Intégration de Citrix ADC CPX avec MetallB en mode couche 2 pour les clusters Kubernetes locaux

Le service de LoadBalancer support de type Kubernetes est fourni par des équilibreurs de charge cloud dans un environnement cloud. Les fournisseurs de services cloud permettent cette prise en charge en créant automatiquement un équilibreur de charge et en attribuant une adresse IP qui est affichée dans le cadre de l’état du service. Tout trafic destiné à l’adresse IP externe est équilibré en charge sur NodeIP et NodePort par l’équilibreur de charge cloud.

Citrix propose différentes options pour prendre en charge les LoadBalancer services de type dans un environnement local, notamment :

  • Utilisation d’un Citrix ADC VPX ou d’un Citrix ADC MPX externe en tant qu’équilibreur de charge de niveau 1 pour équilibrer la charge du trafic entrant vers les services Kubernetes.

Pour plus d’informations sur un tel déploiement, consultez Exposer les services de type LoadBalancer.

  • Exposez les applications exécutées dans un cluster Kubernetes à l’aide du démon Citrix ADC CPX exécuté à l’intérieur du cluster Kubernetes avec un routeur prenant en charge ECMP sur BGP. La charge du routeur ECMP équilibre le trafic vers plusieurs instances Citrix ADC CPX. Les instances Citrix ADC CPX équilibrent la charge des espaces d’application réels. Pour plus d’informations sur un tel déploiement, consultez Publication BGP d’adresses IP externes pour les services LoadBalancer de type et entrées à l’aide de Citrix ADC CPX.

  • Exposez les services Citrix ADC CPX en tant que service IP externe avec une adresse IP externe de nœud. Vous pouvez utiliser cette option si un ADC externe de niveau 1 n’est pas réalisable et qu’un routeur BGP n’existe pas. Dans ce déploiement, Kubernetes achemine le trafic arrivant à spec.externalIP du service Citrix ADC CPX sur les ports de service vers les espaces Citrix ADC CPX. Les ressources d’entrée peuvent être configurées à l’aide du Citrix ingress controller pour effectuer des applications de déchargement et d’équilibrage de charge SSL (Secure Sockets Layer). Toutefois, ce déploiement présente l’inconvénient majeur de ne pas être fiable en cas de défaillance d’un noeud.

  • Utilisez MetallB, qui est une implémentation d’équilibrage de charge pour les clusters Kubernetes bare metal en mode couche 2 avec Citrix ADC CPX pour atteindre la capacité d’entrée.

Cette documentation montre comment vous pouvez tirer parti de MetallB avec Citrix ADC CPX pour atteindre la capacité d’entrée dans des clusters bare metal lorsque les autres solutions ne sont pas réalisables. MetallB en mode couche 2 configure un nœud pour envoyer tout le trafic au service Citrix ADC CPX. MetalB déplace automatiquement l’adresse IP vers un autre nœud en cas de défaillance du nœud. Fournissant ainsi une meilleure fiabilité que le service ExternalIP.

Remarque : MetallB est toujours en version bêta. Consultez la documentation officielle pour connaître la maturité du projet et ses éventuelles limites.

Effectuez les étapes suivantes pour déployer l’intégration Citrix ADC CPX avec MetallB en mode de couche 2 pour les clusters Kubernetes locaux.

  1. Installation et configuration de MetallB
  2. Configurer la configuration MetallB pour la couche 2
  3. Installation du service Citrix ADC CPX

Installation et configuration de MetallB

Tout d’abord, vous devez installer MetalLB en mode couche 2. Pour plus d’informations sur les différents types d’installations pour MetalLB, consultez la documentation MetalLB.

Effectuez les étapes suivantes pour installer MetalLB :

  1. Créez un espace de noms pour déployer MetallB.

    kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/namespace.yaml 
    
  2. Déployez MetalLB à l’aide de la commande suivante.

    kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/metallb.yaml 
    
  3. Effectuez l’étape suivante si vous effectuez l’installation pour la première fois.

    kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)" 
    
  4. Vérifiez l’installation MetalLB et assurez-vous que le haut-parleur et le contrôleur sont en état de fonctionnement à l’aide de la commande suivante :

    kubectl get pods -n metallb-system 
    

Ces étapes déploient MetallB sur votre cluster, sous l’espace de noms metallb-system.

Le fichier YAML de déploiement MetalLB contient les composants suivants :

  • Le déploiement du système/contrôleur metallb-system/controller : Ce composant est le contrôleur à l’échelle du cluster qui gère les attributions d’adresses IP.

  • Le démon metallb-system/speaker. Ce composant communique en utilisant les protocoles de votre choix pour rendre les services accessibles.

  • Les comptes de service pour le contrôleur et le haut-parleur, ainsi que les autorisations RBAC dont les composants ont besoin pour fonctionner.

Configuration MetallB pour la couche 2

Une fois MetalLB installé, vous devez configurer MetalLB pour le mode de couche 2. MetallB prend une plage d’adresses IP à allouer au type de services LoadBalancer en tant qu’adresse IP externe. Dans ce déploiement, un service Citrix ADC CPX agit en tant que frontal pour toutes les autres applications. Par conséquent, une seule adresse IP suffit.

Créez un ConfigMap pour MetallB à l’aide de la commande suivante où metallb-config.yaml est le fichier YAML avec la configuration MetalLB.

kubectl create –f metallb-config.yaml 

Voici un exemple de configuration MetalLB pour le mode layer2. Dans cet exemple, 192.168.1.240-192.168.1.240 est spécifié comme plage d’adresses IP.


apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.1.240-192.168.1.240
<!--NeedCopy-->

Installation du service Citrix ADC CPX

Une fois que l’équilibrage de charge métallique est correctement installé, vous pouvez installer le déploiement Citrix ADC CPX et un service de type LoadBalancer.

Pour installer Citrix ADC CPX, vous pouvez utiliser le fichier YAML ou des graphiques Helm.

Pour installer Citrix ADC CPX à l’aide du fichier YAML, effectuez les opérations suivantes :

  1. Téléchargez les manifestes de déploiement Citrix ADC CPX.

    wget https://github.com/citrix/citrix-k8s-ingress-controller/blob/master/deployment/baremetal/citrix-k8s-cpx-ingress.yml 
    
  2. Modifiez le YAML du déploiement Citrix ADC CPX :

    • Définissez le nombre de répliques selon vos besoins. Pour une haute disponibilité, il est préférable de disposer de plusieurs réplicas.
    • Remplacez le type de service par LoadBalancer.
  3. Appliquez le fichier YAML édité à l’aide de la commande Kubectl.

    kubectl apply –f citrix-k8s-cpx-ingress.yaml 
    
  4. Affichez le service à l’aide de la commande suivante :

    kubectl get svc cpx-service -output yaml
    

    Vous pouvez constater que MetallB attribue une adresse IP externe au service Citrix ADC CPX comme suit :


apiVersion: v1
kind: Service
metadata:
  name: cpx-service
  namespace: default
spec:
  clusterIP: 10.107.136.241
  externalTrafficPolicy: Cluster
  healthCheckNodePort: 31916
  ports:
  - name: http
    nodePort: 31528
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    nodePort: 31137
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: cpx-ingress
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: 192.168.1.240

<!--NeedCopy-->

Déployer un exemple d’application

Effectuez les étapes suivantes pour déployer un exemple d’application et vérifier le déploiement.

  1. Créez un exemple de déploiement à l’aide du fichier sample-deployment.yaml .

    kubectl create –f sample-deployment.yaml
    
  2. Exposez l’application avec un service à l’aide du fichier sample-service.yaml .

    kubectl create –f sample-service.yaml  
    
  3. Une fois le service créé, vous pouvez ajouter une ressource d’entrée à l’aide du fichier sample-ingress.yaml.

    kubectl create –f sample-ingress.yaml  
    

Vous pouvez tester l’entrée en accédant à l’application à l’aide d’une adresse IP cpx-service externe comme suit :

   curl -v http://192.168.1.240 -H ‘host: testdomain.com’ 

Références supplémentaires

Pour plus d’informations sur la configuration et le dépannage de MetalLB, consultez les liens suivants :

Intégration de Citrix ADC CPX avec MetallB en mode couche 2 pour les clusters Kubernetes locaux