Route e domini

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, questo è il compito di Routes.

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 e creare route.

Il dominio interno al cluster

Il dominio interno del 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.

I percorsi ti consentono di creare URL vanity sul dominio interno del cluster.

Bilanciamento del carico dell'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à 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, nell'URI payroll.mydatacenter.example.com/login:

  • L'host è payroll
  • Il dominio è mydatacenter.example.com
  • Il percorso è /login

Le route 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 la stessa route e il traffico verrà suddiviso tra di loro. Questo è utile se devi supportare deployment blu/verde legacy. Se più app sono associate a percorsi diversi, la priorità è dal percorso più lungo al più breve.

Utilizzo delle route

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

Elenco 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

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 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 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

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

Le route possono essere gestite 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 pertinenti al routing:

  • VirtualService
  • Route
  • Servizio
  • App

Ogni app dispone di un servizio, ovvero un nome astratto assegnato a tutte le istanze in esecuzione della tua app. Il nome del servizio è lo stesso 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.