Routen und Domains

In diesem Thema wird beschrieben, wie Routen und Domains in Kf funktionieren und wie Entwickler und Administratoren Routen und Domains für eine auf dem Kf-Cluster bereitgestellte Anwendung konfigurieren.

Sie müssen Domain und Routen erstellen, um externen Zugriff auf Ihre Anwendung zu gewähren.

Internes Routing

Kf-Anwendungen können intern mit anderen Anwendungen im Cluster direkt über das von Cloud Service Mesh bereitgestellte Mesh-Netzwerk kommunizieren, ohne das Clusternetzwerk zu verlassen. Standardmäßig wird der gesamte Traffic mithilfe von gegenseitigem TLS verschlüsselt.

Alle im Kf-Cluster bereitgestellten Anwendungen haben standardmäßig einen internen Endpunkt. Sie können die Adresse app-name.space-name.svc.cluster.local für die interne Kommunikation zwischen Anwendungen verwenden. Zur Verwendung dieser internen Adresse sind keine weiteren Schritte erforderlich. Gegenseitiges TLS ist für interne Routen standardmäßig aktiviert. Beachten Sie, dass diese interne Adresse nur über die Pods zugänglich ist, auf denen die Anwendungen ausgeführt werden, und nicht von außerhalb des Clusters.

App-Lastenausgleich

Der Traffic wird von Istio mithilfe einer Round-Robin-Richtlinie an fehlerfreie Instanzen einer Anwendung weitergeleitet. Derzeit kann diese Richtlinie nicht geändert werden.

Routenfunktionen

Routen steuern das Ingress-Gateway des Clusters, wo Traffic bereitgestellt werden soll und was geschieht, wenn unter der angegebenen Adresse keine Anwendungen verfügbar sind. Wenn auf einer Route keine App verfügbar ist und die Route eine Anfrage erhält, wird standardmäßig ein HTTP 503-Statuscode zurückgegeben.

Routen bestehen aus drei Teilen: Host, Domain und Pfad. Beispiel für den URI payroll.mydatacenter.example.com/login:

  • Der Host ist payroll.
  • Die Domain ist mydatacenter.example.com.
  • Der Pfad ist /login

Routen müssen eine Domain enthalten, aber der Host und der Pfad sind optional. Mehrere Routen können denselben Host und dieselbe Domain verwenden, wenn sie unterschiedliche Pfade angeben. Mehrere Apps können dieselbe Route nutzen und der Traffic wird zwischen ihnen aufgeteilt. Dies ist nützlich, wenn Sie alte Blau/Grün-Bereitstellungen unterstützen müssen. Wenn mehrere Apps an verschiedene Pfade gebunden sind, ist die Priorität vom längsten zum kürzesten Pfad.

Routen verwenden

In den folgenden Abschnitten wird beschrieben, wie die kf-Befehlszeile zum Verwalten von Routen verwendet wird.

Routen auflisten

Entwickler können Routen für den aktuellen Raum mit dem Befehl kf routes auflisten.

$ kf routes
Getting Routes in Space: my-space
Found 2 Routes in Space my-space

HOST    DOMAIN       PATH    APPS
echo    example.com  /       echo
*       example.com  /login  uaa

Route erstellen

Entwickler können Routen mit dem Befehl kf create-route erstellen.

# Create a Route in the targeted Space to match traffic for myapp.example.com/*
$ kf create-route example.com --hostname myapp

# Create a Route in the Space myspace to match traffic for myapp.example.com/*
$ kf create-route -n myspace example.com --hostname myapp

# Create a Route in the targeted Space to match traffic for myapp.example.com/mypath*
$ kf create-route example.com --hostname myapp --path /mypath

# You can also supply the Space name as the first parameter if you have
# scripts that rely on the old cf style API.
$ kf create-route myspace example.com --hostname myapp # myapp.example.com

Wenn nach der Erstellung einer Route keine Apps daran gebunden sind, wird für alle übereinstimmenden Anfragen ein HTTP 503-Statuscode zurückgegeben.

Ordnen Sie Ihrer App eine Route zu

Entwickler können ihre Anwendung mit dem Befehl kf map-route über eine Route zugänglich machen.

$ kf map-route MYAPP mycluster.example.com --host myapp --path mypath

Heben Sie die Zuordnung einer Route auf

Entwickler können ihre App mithilfe des Befehls kf unmap-route aus der Route entfernen.

$ kf unmap-route MYAPP mycluster.example.com --host myapp --path mypath

Route löschen

Entwickler können eine Route mit dem Befehl kf delete-route löschen.

$ kf delete-route mycluster.example.com --host myapp --path mypath

Wenn Sie eine Route löschen, wird der Traffic nicht mehr an alle Anwendungen weitergeleitet, die die Route überwachen.

Deklarative Routen in Ihrem App-Manifest

Routen können deklarativ in Ihrer App-Manifestdatei verwaltet werden. Sie werden erstellt, wenn sie noch nicht vorhanden sind.

---
applications:
- name: my-app
  # ...
  routes:
  - route: example.com
  - route: www.example.com/path

Weitere Informationen zu den unterstützten Routenattributen finden Sie in der Manifestdokumentation.

Themen für Fortgeschrittene

Routing-CRDs

Es gibt vier Typen, die für das Routing relevant sind:

  • VirtualService
  • Route
  • Dienst
  • App

Jede App hat einen Dienst, bei dem es sich um einen abstrakten Namen handelt, der allen ausgeführten Instanzen Ihrer App zugewiesen wird. Der Name des Dienstes ist mit dem Namen der App identisch. Eine Route stellt eine einzelne externe URL dar. Routen überwachen kontinuierlich Änderungen an Anwendungen. Wenn eine Anwendung angefordert wird, dass sie einer Route hinzugefügt wird, aktualisiert die Route die Liste der Apps und dann den VirtualService. Ein VirtualService stellt eine einzelne Domain dar und führt eine Liste aller Routen in einem Space zusammen, die zu dieser Domain gehören.

Istio liest die Konfiguration in VirtualServices, um zu bestimmen, wie der Traffic weitergeleitet wird.