Comment équilibrer la charge du trafic d'entrée vers une application basée sur UDP

Dernière publication : Oct 02, 2026
Dans un environnement Kubernetes, un objet d'entrée (ingress) permet d'accéder aux services Kubernetes depuis l'extérieur du cluster Kubernetes. Les ressources d'entrée Kubernetes standard supposent que tout le trafic est basé sur HTTP et ne prennent pas en charge les protocoles non basés sur HTTP tels que TCP, UDP et SSL. Par conséquent, les applications non HTTP telles que DNS, FTP ou LDAP ne peuvent pas être exposées à l'aide de l'entrée Kubernetes standard.
NetScaler fournit une solution utilisant des annotations d'entrée pour équilibrer la charge du trafic d'entrée basé sur UDP. Lorsque vous spécifiez ces annotations dans la définition de la ressource d'entrée, NetScaler Ingress Controller configure NetScaler pour équilibrer la charge du trafic d'entrée basé sur UDP.
Vous pouvez utiliser les annotations suivantes dans la définition de votre ressource d'entrée Kubernetes pour équilibrer la charge du trafic d'entrée basé sur UDP :
  • ingress.citrix.com/insecure-service-type : Cette annotation active l'équilibrage de charge L4 avec UDP ou ANY comme protocole pour NetScaler.
  • ingress.citrix.com/insecure-port : Cette annotation configure le port pour le trafic UDP. Elle est utile lorsque l'accès à un micro-service est requis sur un port non standard. Par défaut, le port 80 est configuré.
Pour plus d'informations sur les annotations, consultez annotations.
Vous pouvez également utiliser la solution Kubernetes standard consistant à créer un service de type LoadBalancer avec NetScaler. Vous pouvez en savoir plus sur Service Type LoadBalancer dans NetScaler.
Exemple : Définition d'entrée pour l'entrée basée sur UDP.
kubectl apply -f - <<EOF  
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ingress.citrix.com/frontend-ip: "192.168.1.1" # If you are using IPAM then use ingress.citrix.com/ipam-range: "<IPAM Range Name>"
    ingress.citrix.com/insecure-port: "5084"
    ingress.citrix.com/insecure-service-type: "udp"
  name: udp-ingress
spec:
  defaultBackend:
    service:
      name: frontend
      port:
        name: udp-53  # Service port name defined in the service defination
EOF
Exemple : Définition de service où le nom du port de service est défini comme udp-53 :
kubectl apply -f - <<EOF  
apiVersion: v1
kind: Service
metadata:
  name: bind
  labels:
    app: bind
spec:
  ports:
  - name: udp-53
    port: 53
    targetPort: 53
    protocol: UDP
  selector:
    name: bind
EOF

Surveiller et améliorer les performances de vos applications basées sur UDP

Les développeurs d'applications peuvent surveiller de près la santé des applications basées sur UDP grâce à des moniteurs riches (tels que UDP-ECV) dans NetScaler. Les moniteurs ECV (validation de contenu étendue) aident à vérifier si l'application renvoie le contenu attendu ou non. NetScaler Ingress Controller fournit l'annotation ingress.citrix.com/monitor qui peut être utilisée pour surveiller la santé du service backend. Pour plus d'informations sur les moniteurs intégrés de NetScaler, consultez Moniteurs intégrés.
De plus, les performances de l'application peuvent être améliorées en utilisant des méthodes de persistance telles que Source IP. Vous pouvez utiliser ces fonctionnalités NetScaler via les Annotations intelligentes dans Kubernetes.
L'exemple de ressource d'entrée suivant utilise des annotations intelligentes :
kubectl apply -f - <<EOF  
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ingress.citrix.com/frontend-ip: "192.168.1.1" # If you are using IPAM then use ingress.citrix.com/ipam-range: "<IPAM Range Name>"
    ingress.citrix.com/insecure-port: "80"
    ingress.citrix.com/lbvserver: '{"mongodb-svc":{"lbmethod":"SRCIPDESTIPHASH"}}'
    ingress.citrix.com/monitor: '{"mongodbsvc":{"type":"UDP-ECV"}}'
  name: mongodb
spec:
  rules:
  - host: mongodb.beverages.com
    http:
      paths:
      - backend:
          service:
            name: mongodb-svc
            port:
              number: 80
        path: /
        pathType: Prefix
EOF

Comment exposer des ports HTTP non standard dans le service NetScaler CPX

Parfois, vous devez exposer des ports autres que 80 et 443 dans un service NetScaler CPX pour autoriser le trafic UDP sur d'autres ports. Cette section fournit des informations sur la façon d'exposer d'autres ports HTTP non standard sur le service NetScaler CPX lorsque vous le déployez dans le cluster Kubernetes.

Pour les déploiements de graphiques Helm

Pour exposer des ports HTTP non standard lors du déploiement de NetScaler CPX avec le contrôleur d'entrée à l'aide de graphiques Helm, consultez le guide d'installation des graphiques Helm.
servicePorts:
  - port: 8080
    protocol: UDP
    name: udp0
  - port: 6798
    protocol: UDP
    name: udp1
  - port: 6379
    protocol: UDP
    name: udp3

Pour les déploiements utilisant l'opérateur OpenShift

Pour les déploiements utilisant l'opérateur OpenShift, vous devez modifier la définition YAML pour créer CPX avec le contrôleur d'entrée comme spécifié à l'étape 6 de Déployer le contrôleur d'entrée NetScaler en tant que sidecar avec NetScaler CPX à l'aide de l'opérateur NetScaler et spécifier les ports comme suit sous la section service :
service:
  annotation: {}
  spec:
    type: NodePort  # ClusterIP or LoadBalancer
    ports:
    - port: 6790
      targetPort: 6790
      protocol: UDP
      name: udp1
    - port: 6379
      targetPort: 6379
      protocol: UDP
      name: udp0