Alcune app sono utili anche se non sono accessibili dall'esterno del cluster, ma la maggior parte deve essere disponibile al di fuori del cluster su uno o più endpoint HTTP. In Kf, è compito delle route.
Per impostazione predefinita, ogni app è accessibile ad altri processi nel cluster utilizzando l'indirizzo dell'app interno del cluster: app-name.space-name
. Puoi usare questo indirizzo
quando esegui il deployment di una o più app in un cluster che devono comunicare con
un'altra; consentono al traffico di passare direttamente da un'app all'altra anziché
dal cluster e viceversa. In questo modo, le comunicazioni sono più sicure e rapide e l'utilizzo del servizio nel cluster locale è garantito.
Se la tua app deve essere accessibile dall'esterno del cluster, dovrai creare percorsi per essa.
Il dominio interno del cluster
Il dominio interno al cluster per ogni app ha alcune caratteristiche speciali.
- La sua adozione nelle tue app consente il routing da est a ovest (point to point).
- Il traffico inviato viene bilanciato tra il carico dei pod di app in esecuzione.
- Puoi connetterti a endpoint non HTTP utilizzando il dominio interno.
Le route ti consentono di creare vanity URL sopra il dominio interno del cluster.
Bilanciamento del carico delle app
Il traffico viene instradato da Istio alle istanze integre di un'app utilizzando un round robin . Al momento, questo criterio non può essere modificato.
Funzionalità delle route
Le route indicano al gateway di ingresso del cluster dove inviare il traffico e cosa fare se non sono disponibili app all'indirizzo specificato. Per impostazione predefinita, se nessuna app è disponibile su una route e quest'ultima riceve una richiesta viene restituito un codice di stato HTTP 503.
Le route sono composte da tre parti: host, dominio e percorso. Ad esempio, nell'URI payroll.mydatacenter.example.com/login
:
- L'host è
payroll
- Il dominio è
mydatacenter.example.com
- Il percorso è
/login
I percorsi devono contenere un host e un dominio, ma il percorso è facoltativo. Più route possono condividere lo stesso host e dominio se specificano percorsi diversi. Più app possono condividere lo stesso percorso e il traffico verrà suddiviso tra loro. Questo è utile se devi supportare i deployment blu/verde precedenti. Se più app sono associate a percorsi diversi, la priorità è la più lunga la via più breve.
Utilizzo delle route
Le sezioni seguenti descrivono come utilizzare l'interfaccia a riga di comando kf
per gestire le route.
Elenco route
Gli sviluppatori possono elencare le route per lo spazio corrente utilizzando l'kf routes
.
$ 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
Creazione route
Gli sviluppatori possono creare route utilizzando il comando kf create-route
.
# 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
Dopo la creazione di una route, se non è associata nessuna app, viene visualizzato un codice di stato HTTP 503 per tutte le richieste corrispondenti.
Mappa un percorso verso l'app
Gli sviluppatori possono rendere accessibile la propria app su un percorso utilizzando l'kf map-route
.
$ kf map-route MYAPP mycluster.example.com --host myapp --path mypath
Annullare la mappatura di un percorso
Gli sviluppatori possono rimuovere l'accesso alla propria app in un percorso utilizzando il comando kf
unmap-route
.
$ kf unmap-route MYAPP mycluster.example.com --host myapp --path mypath
Eliminare una route
Gli sviluppatori possono eliminare una Route utilizzando il comando kf delete-route
.
$ kf delete-route mycluster.example.com --host myapp --path mypath
L'eliminazione di un percorso interrompe il routing del traffico verso tutte le app in ascolto sul percorso.
Route dichiarativi nel file manifest dell'app
I percorsi possono essere gestiti in modo dichiarativo nel file manifest dell'app. Saranno vengono creati se non esistono ancora.
---
applications:
- name: my-app
# ...
routes:
- route: example.com
- route: www.example.com/path
Per saperne di più sulle proprietà route supportate, consulta la documentazione del manifest.
Argomenti avanzati
CRD di routing
Esistono quattro tipi di percorsi pertinenti:
- VirtualService
- Route
- Servizio
- App
Ogni app ha un servizio, ovvero un nome astratto assegnato a tutte le istanze in esecuzione della tua app. Il nome del servizio corrisponde a quello dell'app. Una route rappresenta un singolo URL esterno. I percorsi monitorano costantemente le modifiche alle app. Quando un'app richiede di essere aggiunta a un percorso, il percorso aggiorna il proprio elenco di app e poi il VirtualService. Un servizio VirtualService rappresenta un singolo dominio e unisce un elenco di tutte le route in uno spazio che appartengono a quel dominio.
Istio legge la configurazione sui servizi virtuali per determinare come eseguire il routing per via del traffico.