Citrix ADC Ingress Controller

Service Mesh Lite

Eine Ingress-Lösung (entweder Hardware oder virtualisiert oder containerisiert) führt typischerweise L7-Proxy-Funktionen für Nord-Süd-Verkehr (N-Ss) aus. Die Service Mesh Lite-Architektur verwendet dieselbe Ingress-Lösung, um auch den Ost-West-Verkehr zu verwalten.

In einer Standard-Kubernetes-Bereitstellung durchläuft der Ost-West-Verkehr (E-W) den integrierten Kube-Proxy, der in jedem Knoten bereitgestellt wird. Kube-Proxy ist ein L4-Proxy, der nur TCP/UDP-basierten Lastenausgleich durchführen kann und nicht die Vorteile eines L7-Proxys bieten kann.

Citrix ADC (MPX, VPX oder CPX) kann die Vorteile des L7-Proxys für E-W-Verkehr bieten, z. B.:

  • Gegenseitiges TLS- und SSL-Offload.
  • Inhaltsbasiertes Routing, erlauben oder blockieren Sie Verkehr basierend auf HTTP- und HTTPS-Header-Parametern.
  • Fortschrittliche Load Balancing-Algorithmen (geringste Verbindungen oder geringste Reaktionszeit).
  • Beobachtbarkeit des Ost-West-Verkehrs durch Messung goldener Signale (Fehler, Latenzen, Sättigung, Verkehrsaufkommen). Citrix ADM Service Graph ist eine Beobachtungslösung zum Überwachen und Debuggen von Microservices.

Eine Service Mesh-Architektur (wie Istio oder LinkerD) ist komplex zu verwalten. Die Service Mesh Lite-Architektur ist eine leichtgewichtige Version und der Einstieg ist viel einfacher, um dieselben Anforderungen zu erfüllen.

Um die Ost-West-Kommunikation mit Citrix ADC CPX in einer Service Mesh Lite-Architektur zu konfigurieren, müssen Sie zunächst verstehen, wie der Kube-Proxy für die Verwaltung des Ost-West-Verkehrs konfiguriert ist.

Ost-West-Kommunikation mit Kube-Proxy

Wenn Sie eine Kubernetes-Bereitstellung für einen Microservice erstellen, stellt Kubernetes basierend auf der Anzahl der Replikate eine Reihe von Pods bereit. Um auf diese Pods zuzugreifen, erstellen Sie einen Kubernetes-Dienst, der eine Abstraktion für den Zugriff auf diese Pods bereitstellt. Die Abstraktion wird bereitgestellt, indem dem Dienst eine Cluster-IP-Adresse zugewiesen wird.

Kubernetes DNS wird mit einem Adressdatensatz gefüllt, der den Dienstnamen der Cluster-IP-Adresse zuordnet. Wenn also eine Anwendung beispielsweise auf einen Microservice mit dem Namen coffee zugreifen tea möchte, gibt DNS die Cluster-IP-Adresse des coffee Dienstes an die tea Anwendung zurück. Die tea Anwendung initiiert eine Verbindung, die dann von Kube-Proxy abgefangen wird, um die Last auf eine Reihe von coffee Pods auszugleichen.

Kube-proxy

Ost-West-Kommunikation mit Citrix ADC CPX in der Service Mesh Lite-Architektur

Ziel ist es, den Citrix ADC CPX in den Ost-West-Pfad einzufügen und die Ingress-Regeln zu verwenden, um diesen Datenverkehr zu steuern.

Führen Sie die folgenden Schritte aus, um die Ost-West-Kommunikation mit Citrix ADC CPX zu konfigurieren.

Schritt 1: Ändern Sie die Definition des Kaffeedienstes, sodass sie auf Citrix ADC CPX verweist

Damit Citrix ADC CPX den Ost-West-Verkehr verwalten kann, sollte der FQDN des Microservices (z. B. coffee) auf die Citrix ADC CPX-IP-Adresse anstelle der Cluster-IP des Ziel-Microservice (coffee) verweisen. (Diese Citrix ADC CPX-Bereitstellung kann mit dem Ingress Citrix ADC CPX-Gerät identisch sein.) Wenn nach dieser Änderung ein Pod im Kubernetes-Cluster den FQDN für den Kaffeedienst auflöst, wird die IP-Adresse des Citrix ADC CPX zurückgegeben.

Kaffeeservice ändern

Hinweis:

Wenn Sie Service Mesh Lite bereitstellen, um das Dienstdiagramm in Citrix ADM zur Beobachtbarkeit aufzurufen, sollten Sie das Label citrix-adc: cpx in allen Diensten Ihrer Anwendung hinzufügen, die nach dem Ändern des Dienstes auf die Citrix ADC CPX-IP-Adresse verweisen.

Schritt 2: Erstellen Sie einen Headless-Dienst, der coffee-headless nach Kaffee-Microservice-Pods

Da Sie den coffee Dienst so geändert haben, dass er auf Citrix ADC CPX verweist, müssen Sie einen weiteren Dienst erstellen, der die Bereitstellung von Kaffee-Microservices darstellt.

Das Folgende ist ein Beispiel für eine Headless-Serviceressource:

apiVersion: v1
kind: Service
metadata:
  name: coffee-headless
spec:
#headless Service
  clusterIP: None
  ports:
  - name: coffee-443
    port: 443
    targetPort: 443
  selector:
    name: coffee-deployment
<!--NeedCopy-->

Schritt 3: Erstellen einer Ingress-Ressource mit Regeln für den coffee-headless Service

Mit den Änderungen in den vorherigen Schritten können Sie jetzt ein Ingress-Objekt erstellen, das den Citrix ADC CPX konfiguriert, um den Ost-West-Verkehr zu den Kaffee-Microservice-Pods zu steuern.

Im Folgenden finden Sie ein Beispiel für eine Ingress-Ressource:

Beispiel

Mit der üblichen Ingress-Load-Balancing-Methode mit diesen Änderungen kann Citrix ADC CPX jetzt den Ost-West-Verkehr ausgleichen. Die folgenden Diagramme zeigen, wie die Citrix ADC CPX Service Mesh Lite-Architektur L7-Proxying für die Ost-West-Kommunikation zwischen tea und coffee Microservices mithilfe der Ingress-Regeln bereitstellt:

Beispiel

Ost-West-Kommunikation mit Citrix ADC MPX oder VPX in Service Mesh Lite-Architektur

Citrix ADC MPX oder VPX, die als Ingress fungieren, können auch die Ost-West-Microservice-Kommunikation auf ähnliche Weise, wie im vorherigen Abschnitt erwähnt, mit geringfügigen Änderungen ausgleichen. Das folgende Verfahren zeigt, wie Sie dasselbe erreichen können.

Schritt 1: Erstellen Sie einen externen Dienst, der den Coffee-Host-Namen in die Citrix ADC MPX/VPX-IP-Adresse auflöst

Es gibt zwei Möglichkeiten, dies zu tun. Sie können einen externen Dienst hinzufügen, der einen Hostnamen zuordnet, oder indem Sie eine IP-Adresse verwenden.

Zuordnung nach einem Hostnamen (CNAME)

  • Erstellen Sie einen Domänennamen für die IP-Adresse des Ingress-Endpunkts (IP-Adresse des virtuellen Servers von Content Switching) in Citrix ADC MPX oder VPX (z. B. myadc–instance1.us-east-1.mydomain.com) und aktualisieren Sie ihn auf Ihrem DNS-Server.
  • Erstellen Sie einen Kubernetes-Dienst für coffee mit externalName as myadc–instance1.us-east-1.mydomain.com.
  • Wenn jetzt ein Pod nach dem coffee Microservice sucht, wird a CNAME(myadc–instance1.us-east-1.mydomain.com) zurückgegeben.
kind: Service
apiVersion: v1
metadata:
name: coffee
spec:
type: ExternalName
externalName: myadc–instance1.us-east-1.mydomain.com
<!--NeedCopy-->

Zuordnen eines Hostnamens zu einer IP-Adresse

Wenn Sie möchten, coffee dass Ihre Anwendung den Hostnamen verwendet, der an die virtuelle IP-Adresse umleitet, die in Citrix ADC MPX oder VPX gehostet wird, können Sie Folgendes erstellen:

---
kind: "Service"
apiVersion: "v1"
metadata:
  name: "coffee"
spec:
  ports:
    -
      name: "coffee"
      protocol: "TCP"
      port: 80
---
kind: "Endpoints"
apiVersion: "v1"
metadata:
  name: "coffee"
subsets:
  -
    addresses:
      -
        ip: "1.1.1.1" # Ingress IP in MPX
    ports:
      -
        port: 80
        name: "coffee"
<!--NeedCopy-->

Schritt 2: Erstellen eines Headless-Dienstes für Microservice-Pods

Da Sie den Kaffeedienst so geändert haben, dass er auf Citrix ADC MPX verweist, müssen Sie einen weiteren Dienst erstellen, der die Bereitstellung von Kaffee-Microservices darstellt.

Schritt 3: Erstellen einer Ingress-Ressource

Erstellen Sie mithilfe der ingress.citrix.com/frontend-ip Anmerkung eine Ingress-Ressource, wobei der Wert mit der IP-Adresse des Ingress-Endpunkts in Citrix ADC MPX oder VPX übereinstimmt.

Jetzt können Sie ein Ingress-Objekt erstellen, das den Citrix ADC MPX oder VPX konfiguriert, um den Ost-West-Verkehr zu den Kaffee-Microservice-Pods zu steuern.

Im Folgenden finden Sie ein Beispiel für eine Ingress-Ressource:

Beispiel

Unter Verwendung der üblichen Ingress-Load-Balancing-Methode mit diesen Änderungen kann Citrix ADC MPX jetzt den Ost-West-Verkehr ausgleichen. Das folgende Diagramm zeigt einen Citrix ADC MPX oder VPX, der mithilfe der Ingress-Regeln als N-S- und E-W-Proxy konfiguriert ist.

Beispiel

Automatisierte Bereitstellung von Anwendungen in Service Mesh Lite

Um eine Anwendung in einer Service Mesh Lite-Architektur bereitzustellen, müssen Sie mehrere Aufgaben manuell ausführen. Wenn Sie jedoch mehrere Anwendungen bereitstellen möchten, die aus mehreren Microservices bestehen, haben Sie eine einfachere Möglichkeit, die Dienste in einer Service Mesh-Lite-Architektur bereitzustellen. Citrix bietet Ihnen eine automatisierte Möglichkeit, bereitstellungsbereite YAMLs zu generieren.

Dieses Dokument enthält Informationen zum Generieren aller erforderlichen YAMLs für die Service Mesh Lite-Bereitstellung aus Ihren vorhandenen YAMLs mithilfe des von Citrix bereitgestellten Skripts.