Citrix ADC Ingress Controller

Ingress-Konfigurationen

Kubernetes Ingress bietet Ihnen die Möglichkeit, Anfragen basierend auf dem Anforderungshost oder -pfad an Dienste weiterzuleiten und eine Reihe von Diensten in einem einzigen Einstiegspunkt zu zentralisieren.

Citrix Ingress Controller ist um den Kubernetes Ingress herum aufgebaut und konfiguriert automatisch einen oder mehrere Citrix ADC basierend auf der Ingress-Ressourcenkonfiguration.

Hostname basiertes Routing

Das folgende Beispiel für eine Ingress-Definition zeigt, wie ein Ingress eingerichtet wird, um den Datenverkehr basierend auf dem Hostnamen weiterzuleiten:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: virtual-host-ingress
  namespace: default
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - backend:
          service:
            name: service1
            port:
              number: 80
        pathType: Prefix
        path: /
  - host: bar.foo.com
    http:
      paths:
      - backend:
          service:
            name: service2
            port:
              number: 80
        pathType: Prefix
        path: /
<!--NeedCopy-->

Nachdem die Ingress-Beispieldefinition bereitgestellt wurde, wird die gesamte HTTP-Anforderung mit einem Host-Header von Citrix ADC auf Lastenausgleich durchgeführt service1. Und die HTTP-Anforderung mit einem Host-Header ist Load Balancer von Citrix ADC zu service2.

Pfad basiertes Routing

Das folgende Beispiel für eine Ingress-Definition zeigt, wie ein Ingress eingerichtet wird, um den Datenverkehr basierend auf dem URL-Pfad weiterzuleiten:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: path-ingress
  namespace: default
spec:
  rules:
  - host: test.example.com
    http:
      paths:
      - backend:
          service:
            name: service1
            port:
              number: 80
        path: /foo
        pathType: Prefix
      - backend:
          service:
            name: service2
            port:
              number: 80
        path: /
        pathType: Prefix
<!--NeedCopy-->

Nachdem die Ingress-Beispieldefinition bereitgestellt wurde, werden alle HTTP-Anforderungen mit Host test.example.com und URL-Pfad mit Präfix /foo, Citrix ADC die Anforderung an service1 und alle anderen Anforderungen werden an weitergeleitet service2.

Citrix Ingress Controller folgt der Richtlinie für die erste Übereinstimmung, um Pfade auszuwerten Für einen effektiven Abgleich ordnet der Citrix Ingress Controller die Pfade basierend auf der absteigenden Reihenfolge der Pfadlänge an. Es ordnet auch die Pfade, die zu denselben Hosts gehören, über mehrere eingehende Ressourcen hinweg an.

Platzhalter-Host-Routing

Das folgende Beispiel für die Ingress-Definition zeigt, wie ein Ingress mit einem Platzhalter-Host eingerichtet wird.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: wildcard-ingress
  namespace: default
spec:
  rules:
  - host: '*.example.com'
    http:
      paths:
      - backend:
          service:
            name: service1
            port:
              number: 80
        path: /
        pathType: Prefix
<!--NeedCopy-->

Nachdem die Ingress-Beispieldefinition bereitgestellt wurde, werden HTTP-Anforderungen an alle Subdomänen von example.comservice1 von Citrix ADC weitergeleitet.

Hinweis:

Regeln mit Nicht-Wildcard-Hosts erhalten eine höhere Priorität als Platzhalterhosts. Bei verschiedenen Platzhalterhosts sind Regeln in absteigender Reihenfolge der Länge der Hosts angeordnet.

Exakte Pfadübereinstimmung

Inresses, die zu ApiVersion networking.k8s.io/v1 gehören, können PathType: Exact verwenden, um den Pfad für die genaue Übereinstimmung zu berücksichtigen.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: Path-exact-Ingress
  namespace: default
spec:
  rules:
  - host: test.example.com
    http:
      paths:
      - backend:
          service:
            name: service1
            port:
              name: 80
        path: /exact
        pathType: Exact
<!--NeedCopy-->

(Veraltet ab Kubernetes 1.22+) Standardmäßig werden Pfade für Inresses , die zu extension/v1beta1 gehören, als Prefix-Ausdrücke behandelt. Durch die Verwendung der Anmerkung ingress.citrix.com/path-match-method: "exact" in der Ingress-Definition wird der Citrix Ingress Controller definiert, um den Pfad für die genaue Übereinstimmung zu berücksichtigen.

Das folgende Beispiel für eine Ingress-Definition zeigt, wie Ingress für den exakten Pfadabgleich eingerichtet wird:

apiVersion: extension/v1beta1
kind: Ingress
metadata:
  name: path-exact-ingress
  namespace: default
  annotations:
    ingress.citrix.com/path-match-method: "exact"
spec:
  rules:
  - host:test.example.com
    http:
      paths:
      - path: /exact
        backend:
          serviceName: service1
          servicePort: 80
<!--NeedCopy-->

Nachdem die Ingress-Beispieldefinition bereitgestellt wurde, werden HTTP-Anforderungen mit Pfad /exact von Citrix ADC an, service1 aber nicht an weitergeleitet /exact/somepath.

Nicht-Hostnamen-Routing

Das folgende Beispiel zeigt das pfadbasierte Routing für den Standardverkehr, der nicht mit Host-basierten Routen übereinstimmt. Diese Eingangsregel gilt für den gesamten eingehenden HTTP-Verkehr über die angegebene IP-Adresse.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: default-path-ingress
  namespace: default
spec:
  rules:
  - http:
      paths:
      - backend:
          service:
            name: service1
            port:
              number: 80
        path: /foo
        pathType: Prefix
      - backend:
          service:
            name: service2
            port:
              number: 80
        path: /
        pathType: Prefix
<!--NeedCopy-->

Der gesamte eingehende Datenverkehr, der nicht den Eingangsregeln mit dem Hostnamen entspricht, wird hier für die Pfade für das Routing abgeglichen.

Standard-Backend

Das Standard-Backend ist ein Dienst, der den gesamten Datenverkehr verarbeitet, der keiner der Ingress-Regeln entspricht.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: default-ingress
  namespace: default
spec:
  defaultBackend:
    service:
      name: testsvc
      port:
        number: 80

<!--NeedCopy-->

Hinweis:

Ein globales Standard-Backend kann angegeben werden, wenn Citrix ADC CPX den Datenverkehr ausgleicht. Sie können ein Standard-Backend pro frontend-ip:port Kombination erstellen, falls Citrix ADC VPX oder MPX das Eingangsgerät ist.

Ingress-Konfigurationen