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.