À partir de NCP 2.5.1, vous pouvez créer des CRD (CustomResourceDefinitions) pour surveiller l'utilisation des équilibreurs de charge NSX et créer des équilibreurs de charge NSX de couche 7 pour gérer les charges d'entrée que l'équilibreur de charge par défaut ne peut pas traiter. Ces CRD ne sont pas destinées à la mise à l'échelle des équilibreurs de charge de couche 4 créés pour les services Kubernetes LoadBalancer.

Les CRD sont :
  • NSXLoadBalancerMonitor : cette CRD est utilisée pour rapporter les statistiques d'utilisation des équilibreurs de charge NSX.
  • LoadBalancer : cette CRD est utilisée pour créer de nouveaux équilibreurs de charge NSX. La définition de cette ressource se trouve dans le fichier NCP YAML. Il s'agit d'une ressource au niveau du cluster qui n'est pas liée à un espace de noms particulier.

Pour activer cette fonctionnalité, dans le fichier NCP YAML, l'option enable_lb_crd dans la section k8s doit être définie sur True et l'option policy_nsxapi doit être définie sur False. Par conséquent, vous devez utiliser l'interface utilisateur et l'API de Manager pour configurer les ressources NSX-T.

Pour créer un nouvel équilibreur de charge NSX, appliquez un fichier YAML qui définit un CRD LoadBalancer. Par exemple,
apiVersion: vmware.com/v1alpha1
kind: LoadBalancer
metadata:
    name: cluster1-lbs0
spec:
    httpConfig: {}

Ce fichier YAML créera un équilibreur de charge NSX de petite taille, ainsi qu'une paire de serveurs virtuels de couche 7 sans persistance, SSL ou les paramètres X-Forward. L'adresse IP du serveur virtuel est allouée à partir du pool externe par défaut configuré pour les équilibreurs de charge. Les ports par défaut sont 80 et 443.

Pour vérifier l'état de création du CRD LoadBalancer, exécutez la commande suivante :
kubectl get lb <name of the LoadBalancer> -o yaml
Le résultat devrait ressembler à ce qui suit :
status:
 conditions:
 - status: "True"
   type: Ready
 httpVirtualIP: <realized virtual IP>

Ce résultat indique que la création a réussi. Si la création a échoué, status sera "False" et aucune adresse IP virtuelle ne sera disponible.

Vous pouvez également personnaliser les paramètres de l'équilibreur de charge NSX et des serveurs virtuels. Pour configurer l'adresse IP et le port du serveur virtuel :
spec:
    httpConfig:
        virtualIP: <ip address, default to auto-allocate>
        port: <port number, default to 80>
Pour spécifier l'affinité de session et le mode X-forwarded :
spec:
    httpConfig:
         xForwardedFor: <INSERT or REPLACE, default to None>
         affinity:
             type: <source_ip or cookie, default to None>
             timeout: <timeout number, default to 10800>
Pour configurer les paramètres TLS :
spec:
    httpConfig:
        tls:
            port: <tls port number, default to 443>
            secretName: <name of secret, default to None>
            secretNamespace: <namespace of secret, default to None>
Notez que même si vous définissez les ports HTTP et HTTPS sur des valeurs autres que par défaut, l'imprimante entrante affichera toujours les valeurs de port par défaut (80 et 443) lors de l'affichage de l'état d'entrée en raison d'une limitation Kubernetes. Vous devez toujours utiliser les ports configurés pour accéder à l'entrée. Par exemple,
curl -I -HHost:tea.example.com http://$INGRESS_IP:$CRD_LB_HTTP_PORT/tea

Vous pouvez créer le secret avant ou après la création du LoadBalancer. Pour mettre à jour le certificat, supprimez d'abord les secretName et secretNamespace de la spécification LoadBalancer, mettez à jour les données du secret, puis rattachez le même secret à l'aide de la configuration ci-dessus. La création d'un nouveau secret et la mise à jour des secretName et secretNamespace fonctionneront également. Notez que le partage des mêmes données secrètes entre différents équilibreurs de charge CRD n'est pas pris en charge. Vous devez configurer des équilibreurs de charge CRD avec des certificats différents.

Pour afficher l'état et les statistiques des équilibreurs de charge NSX, exécutez la commande suivante :
kubectl get lbm
Tous les NSXLoadBlancerMonitors vont ainsi être répertoriés, un pour chaque équilibreur de charge NSX. Les informations suivantes s'affichent :
  • Utilisation : nombre de charges de travail sur l'équilibreur de charge NSX.
  • Trafic : statistiques agrégées de chaque serveur virtuel.
  • Santé : ce champ comporte deux dimensions :
    • servicePressureIndex : indique les performances de l'équilibreur de charge. Deux valeurs sont fournies : score et gravité.
    • infraPressureIndex : indique les performances des composants de l'infrastructure sous-jacente. Dans NCP 2.5.1, cette valeur n'est pas toujours exacte.
    • Le champ metrics donne une idée des paramètres pris en compte lorsque le score de santé est calculé.

Lorsque le servicePressureIndex d'un équilibreur de charge est HIGH, vous pouvez migrer la charge de travail d'entrée vers d'autres équilibreurs de charge, qui doivent être l'équilibreur de charge ou les équilibreurs de charge par défaut créés à l'aide du CRD LoadBalancer.

Pour placer une entrée sur un équilibreur de charge dédié, ajoutez une annotation à la spécification d'entrée. Par exemple,
 annotations:
   nsx/loadbalancer: <name of the LoadBalancer CRD>

Si l'annotation est manquante ou définie sur null, l'entrée est placée sur l'équilibreur de charge NSX par défaut.