Configurazione di route e domini

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 il dominio e le route per concedere l'accesso esterno alla tua applicazione.

Routing interno

Le app Kf possono comunicare internamente con altre app nel cluster direttamente utilizzando la rete mesh fornita da Cloud Service Mesh, senza uscire dalla rete del cluster. Per impostazione predefinita, tutto il traffico è criptato tramite 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 è accessibile dall'esterno del cluster.

Bilanciamento del carico dell'app

Il traffico viene instradato da Istio alle istanze integre di un'app utilizzando un criterio round-robin. Al momento, questo criterio non può essere modificato.

Funzionalità delle route

Le route indicano al gateway in entrata del cluster dove distribuire il traffico e cosa fare se non sono disponibili app sull'indirizzo specificato. Per impostazione predefinita, se non è disponibile nessuna app su una route e la route riceve una richiesta, restituisce 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

Le route devono contenere un dominio, ma l'host e il percorso sono facoltativi. Più 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 deployment blu/verde legacy. Se più app sono associate a percorsi diversi, la priorità è dal percorso più lungo a quello 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 route 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 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 restituito 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 una route utilizzando il comando kf map-route.

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

Annullare la mappa di un percorso

Gli sviluppatori possono impedire che la propria app sia accessibile su una route 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 una route, il traffico non verrà più indirizzato a tutte le app in ascolto sulla route.

Gestisci in modo dichiarativo i percorsi nel file manifest dell'app

Le route possono essere gestite 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 scoprire di più sulle proprietà delle route supportate, consulta la documentazione del file manifest.

Routing dei CRD

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 dell'app. Il nome del servizio è lo stesso dell'app. Una route rappresenta un singolo URL esterno. Le route controllano costantemente le modifiche alle app: quando un'app richiede di essere aggiunta a una route, la route aggiorna il proprio elenco di app e quindi VirtualService. Un 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 instradare il traffico.