Einige Apps sind nützlich, ohne von außerhalb des Clusters zugänglich zu sein, die meisten müssen jedoch außerhalb des Clusters auf einem oder mehreren HTTP-Endpunkten verfügbar sein. In Kf ist dies der Job von Routes.
Standardmäßig ist jede Anwendung mithilfe der internen Clusteradresse der Anwendung für andere Prozesse im Cluster zugänglich. app-name.space-name
. Sie können diese Adresse verwenden, wenn Sie eine oder mehrere Anwendungen in einem Cluster bereitstellen, die miteinander kommunizieren müssen. Damit können Traffic direkt von einer Anwendung zu einer anderen geleitet werden, nicht aus dem Cluster und wieder zurück. Dies macht die Kommunikation sicherer, schneller und garantiert die Verwendung des Dienstes im lokalen Cluster.
Wenn Ihre Anwendung von außerhalb des Clusters zugänglich sein muss, müssen Sie Routen dafür erstellen.
Die clusterinterne Domain
Die clusterinterne Domain für jede Anwendung weist einige besondere Merkmale auf.
- Die Verwendung in Ihren Apps ermöglicht Ost-West -Routing (Punkt-zu-Punkt).
- An den Traffic gesendeter Traffic wird zwischen den ausgeführten App-Pods per Load-Balancing verteilt.
- Sie können über die interne Domain eine Verbindung zu Nicht-HTTP-Endpunkten herstellen.
Mit Routen können Sie Vanity-URLs zusätzlich zur clusterinternen Domain erstellen.
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 einen Host und eine Domain enthalten, der Pfad ist jedoch 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.