Questa pagina descrive il funzionamento di route e domini in Kf e in che modo sviluppatori e amministratori configurano route e domini per un'app di cui è stato eseguito il deployment su un cluster Kf.
Devi creare un dominio e route per concedere l'accesso esterno alla tua applicazione.
Routing interno
Le app Kf possono comunicare internamente con altre app del cluster direttamente utilizzando la rete mesh fornita da Cloud Service Mesh senza uscire dalla rete del cluster. Per impostazione predefinita, tutto il traffico viene criptato utilizzando TLS reciproco.
Tutte le app di cui è stato eseguito il deployment nel cluster Kf sono dotate di un endpoint interno configurato per impostazione predefinita. Puoi utilizzare l'indirizzo app-name.space-name.svc.cluster.local
per le comunicazioni interne tra le app. Per utilizzare questo indirizzo interno non sono necessari passaggi aggiuntivi. Il TLS reciproco è abilitato per impostazione predefinita per le route interne. Tieni presente che questo indirizzo interno è accessibile solo dai pod che eseguono le app e non dall'esterno del cluster.
Bilanciamento del carico delle app
Il traffico viene indirizzato da Istio alle istanze di un'app in stato integro utilizzando un criterio di round robin. Al momento, questo criterio non può essere modificato.
Funzionalità di route
Le route indicano al gateway in entrata del cluster dove distribuire il traffico e cosa fare se non sono disponibili app all'indirizzo specificato. Per impostazione predefinita, se non è disponibile alcuna app in un route e il route riceve una richiesta, viene restituito un codice di stato HTTP 503.
Le route sono composte da tre parti: host, dominio e percorso. Ad esempio, nel
l'URI payroll.mydatacenter.example.com/login
:
- L'host è
payroll
- Il dominio è
mydatacenter.example.com
- Il percorso è
/login
Le route devono contenere un dominio, ma l'host e il percorso sono facoltativi. Più di uno Le route possono condividere lo stesso host e lo stesso 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.
Gestisci percorsi
Le sezioni seguenti descrivono come utilizzare l'interfaccia a riga di comando kf
per gestire le route.
Elenca route
Gli sviluppatori possono elencare le rotte per lo spazio corrente utilizzando il comando 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
Crea una route
Gli sviluppatori possono creare percorsi 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 aver creato una route, se non sono associate app, viene restituito un codice di stato HTTP 503 per 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 mappa 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
Elimina una route
Gli sviluppatori possono eliminare una Route utilizzando il comando kf delete-route
.
$ kf delete-route mycluster.example.com --host myapp --path mypath
Se elimini un percorso, il traffico non verrà più indirizzato a tutte le app in ascolto. la route.
Gestire le route in modo dichiarativo 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.
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 rilevano costantemente i cambiamenti nelle app, richiede di essere aggiunte a una route, la route aggiorna il proprio elenco di app e 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.