Citrix ADC Ingress Controller

Lastenausgleich für eingehenden Datenverkehr zu TCP- oder UDP-basierten Anwendungen

In einer Kubernetes-Umgebung ist ein Ingress ein Objekt, das den Zugriff auf die Kubernetes-Dienste von außerhalb des Kubernetes-Clusters ermöglicht. Standard-Kubernetes Ingress-Ressourcen gehen davon aus, dass der gesamte Datenverkehr HTTP-basiert ist und nicht auf Nicht-HTTP-basierte Protokolle wie TCP, TCP-SSL und UDP ausgerichtet ist. Daher können Sie kritische Anwendungen, die auf Layer-7-Protokollen wie DNS, FTP oder LDAP basieren, nicht mithilfe des standardmäßigen Kubernetes Ingress verfügbar machen.

Citrix bietet eine Lösung mit Ingress-Anmerkungen zum Lastenausgleich von TCP- oder UDP-basiertem Ingress-Datenverkehr. Wenn Sie diese Anmerkungen in der Ingress-Ressourcendefinition angeben, konfiguriert der Citrix Ingress Controller den Citrix ADC für den Lastenausgleich von TCP- oder UDP-basiertem Ingress-Datenverkehr.

Sie können die folgenden Anmerkungen in Ihrer Kubernetes Ingress-Ressourcendefinition verwenden, um den TCP- oder UDP-basierten Ingress-Datenverkehr zu belasten:

  • ingress.citrix.com/insecure-service-type: Die Anmerkung ermöglicht den L4-Lastausgleich mit TCP, UDP oder ANY als Protokoll für Citrix ADC.
  • ingress.citrix.com/insecure-port: Die Anmerkung konfiguriert den TCP-Port. Die Anmerkung ist hilfreich, wenn Micro-Service-Zugriff an einem nicht standardmäßigen Port erforderlich ist. Standardmäßig ist Port 80 konfiguriert.

Weitere Informationen zu Anmerkungen finden Sie auf der Seite Anmerkungen .

Sie können auch die Standard-Kubernetes-Lösung zum Erstellen eines service von type LoadBalancer mit Citrix ADC verwenden. Weitere Informationen zum Service Type LoadBalancer finden Sie in Citrix ADC.

Beispiel: Ingress-Definition für TCP-basierten Ingress.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ingress.citrix.com/insecure-port: "6379"
    ingress.citrix.com/insecure-service-type: "tcp"
    kubernetes.io/ingress.class: "guestbook"
  name: redis-master-ingress
spec:
  defaultBackend:
    service:
      name: redis-master-pods
      port:
        number: 6379
<!--NeedCopy-->

Beispiel: Ingress-Definition für UDP-basierten Ingress. Im Folgenden finden Sie ein Beispiel für Citrix Ingress Controller Version 1.1.1:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    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
<!--NeedCopy-->

Im Folgenden finden Sie ein Beispiel für eine Dienstdefinition, bei der der Dienstportname wie folgt definiert ist udp-53:

apiVersion: v1
kind: Service
metadata:
  name: bind
  labels:
    app: bind
spec:
  ports:
  - name: udp-53
    port: 53
    targetPort: 53
    protocol: UDP
  selector:
    name: bind
<!--NeedCopy-->

Beispiel: Ingress-Definition für UDP-basierten Ingress. Im Folgenden finden Sie ein Beispiel für Citrix Ingress Controller Version 1.5.25:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ingress.citrix.com/insecure-port: "5084"
    ingress.citrix.com/insecure-service-type: "udp"
  name: udp-ingress
spec:
  defaultBackend:
    service:
      name: frontend
      port:
        number: 53
<!--NeedCopy-->

Lastenausgleich Ingress-Datenverkehr basierend auf TCP über SSL

Citrix Ingress Controller bietet eine 'ingress.citrix.com/secure-service-type: ssl_tcp Anmerkung, die Sie verwenden können, um eingehenden Datenverkehr basierend auf TCP über SSL zu verteilen.

Beispiel: Ingress-Definition für TCP über SSL-basierten Ingress.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ingress.citrix.com/secure-service-type: "ssl_tcp"
    ingress.citrix.com/secure_backend: '{"frontendcolddrinks":"True"}'
    kubernetes.io/ingress.class: "colddrink"
  name: colddrinks-ingress
spec:
  defaultBackend:
    service:
      name: frontend-colddrinks
      port:
        number: 443
  tls:
  - secretName: "colddrink-secret"
<!--NeedCopy-->

Überwachen und verbessern Sie die Leistung Ihrer TCP- oder UDP-basierten Anwendungen

Anwendungsentwickler können den Zustand von TCP- oder UDP-basierten Anwendungen über umfangreiche Monitore (wie TCP-ECV, UDP-ECV) in Citrix ADC genau überwachen. Die ECV-Monitore (Extended Content Validation) helfen bei der Überprüfung, ob die Anwendung erwarteten Inhalt zurückgibt oder nicht.

Außerdem kann die Anwendungsleistung verbessert werden, indem Persistenzmethoden wie verwendet werden Source IP. Sie können diese Citrix ADC-Funktionen über Smart Annotations in Kubernetes verwenden. Das Folgende ist ein Beispiel:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ingress.citrix.com/csvserver: '{"l2conn":"on"}'
    ingress.citrix.com/frontend-ip: "192.168.1.1"
    ingress.citrix.com/insecure-port: "80"
    ingress.citrix.com/lbvserver: '{"mongodb-svc":{"lbmethod":"SRCIPDESTIPHASH"}}'
    ingress.citrix.com/monitor: '{"mongodbsvc":{"type":"tcp-ecv"}}'
  name: mongodb
spec:
  rules:
  - host: mongodb.beverages.com
    http:
      paths:
      - backend:
          service:
            name: mongodb-svc
            port:
              number: 80
        path: /
        pathType: Prefix
<!--NeedCopy-->

Weitere Informationen zu den verschiedenen Bereitstellungsoptionen, die vom Citrix Ingress Controller unterstützt werden, finden Sie unter Bereitstellungstopologien.

Weitere Informationen zum Bereitstellen des Citrix Ingress Controller:

Lastenausgleich für eingehenden Datenverkehr zu TCP- oder UDP-basierten Anwendungen