Route e domini

Questo argomento descrive il funzionamento di route e domini in Kf e come sviluppatori e amministratori configurano route e domini per un'app di cui è stato eseguito il deployment nel 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. L'autenticazione TLS reciproca è abilitata 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, queste norme non possono essere modificate.

Funzionalità di route

Le route indicano al gateway in entrata del cluster dove inviare il traffico e cosa fare se non sono disponibili app all'indirizzo specificato. Per impostazione predefinita, se non è disponibile alcuna app in un percorso e il percorso riceve una richiesta, viene restituito un codice di stato HTTP 503.

I route sono composti 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 dominio, ma l'host e il percorso sono facoltativi. Più route possono condividere lo stesso host e dominio se specificano percorsi diversi. Più app possono condividere la stessa route e il traffico verrà suddiviso tra di loro. Questo è utile se devi supportare i deployment blu/verde precedenti. Se più app sono associate a percorsi diversi, la priorità è dal percorso più lungo al percorso più breve.

Utilizzo delle route

Le sezioni seguenti descrivono come utilizzare la CLI kf per gestire le route.

Elenco route

Gli sviluppatori possono elencare i percorsi 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

Creazione 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 tutte le richieste corrispondenti.

Mappare un percorso alla tua app

Gli sviluppatori possono rendere la propria app accessibile in un percorso utilizzando il comando 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 un percorso utilizzando il comando kf delete-route.

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

L'eliminazione di un percorso interromperà 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. Verranno 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 pertinenti al routing:

  • 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 VirtualService rappresenta un singolo dominio e unisce un elenco di tutti i percorsi in uno spazio che appartengono a quel dominio.

Istio legge la configurazione su VirtualServices per determinare come indirizzare il traffico.