Comment équilibrer la charge du trafic d'entrée vers une application basée sur UDP
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