Cet article décrit le fonctionnement des routes et des domaines dans Kf, et la manière dont les développeurs et les administrateurs configurent les routes et les domaines pour une application déployée sur un cluster Kf.
Vous devez créer un domaine et des routes pour autoriser l'accès externe à votre application.
Routage interne
Les applications Kf peuvent communiquer en interne avec d'autres applications du cluster directement, en utilisant le réseau maillé fourni par Cloud Service Mesh sans quitter le réseau du cluster. Par défaut, tout le trafic est chiffré au moyen d'une authentification TLS mutuelle.
Toutes les applications déployées dans le cluster Kf sont dotées d'un point de terminaison interne configuré par défaut. Vous pouvez utiliser l'adresse app-name.space-name.svc.cluster.local
pour une communication interne entre les applications. Pour utiliser cette adresse interne, aucune étape supplémentaire n'est requise. Le protocole TLS mutuel est activé par défaut pour les routes internes. Notez que cette adresse interne n'est accessible qu'à partir des pods exécutant les applications, et non depuis l'extérieur du cluster.
Équilibrage de charge d'une application
Le trafic est acheminé par Istio vers des instances opérationnelles d'une application à l'aide d'une règle round-robin (à tour de rôle). Actuellement, cette règle ne peut pas être modifiée.
Fonctionnalités des routes
Les routes indiquent à la passerelle d'entrée du cluster où distribuer le trafic et la procédure à suivre si aucune application n'est disponible à l'adresse donnée. Par défaut, si aucune application n'est disponible sur une route et que la route reçoit une requête, elle renvoie un code d'état HTTP 503.
Les routes sont composées de trois parties : l'hôte, le domaine et le chemin d'accès. Par exemple, dans l'URI payroll.mydatacenter.example.com/login
:
- L'hôte est
payroll
- Le domaine est
mydatacenter.example.com
. - Le chemin d'accès est
/login
Les routes doivent contenir un domaine, mais l'hôte et le chemin d'accès sont facultatifs. Plusieurs routes peuvent partager le même hôte et le même domaine si elles spécifient des chemins d'accès différents. Plusieurs applications peuvent partager la même route. Le trafic est réparti entre ces applications. Cette fonctionnalité est utile si vous avez besoin de gérer d'anciens déploiements bleu-vert. Si plusieurs applications sont liées à des chemins d'accès différents, la priorité est définie du plus long au plus court chemin d'accès.
Utiliser des routes
Les sections suivantes décrivent comment gérer des routes à l'aide de la CLI kf
.
Répertorier les routes
Les développeurs peuvent répertorier les routes de l'espace actuel à l'aide de la commande 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
Créer une route
Les développeurs peuvent créer des routes à l'aide de la commande 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
Une fois qu'une route est créée, si aucune application n'est associée à celle-ci, un code d'état HTTP 503 est renvoyé pour toutes les requêtes correspondantes.
Mapper une route sur votre application
Les développeurs peuvent rendre leur application accessible sur une route à l'aide de la commande kf map-route
.
$ kf map-route MYAPP mycluster.example.com --host myapp --path mypath
Annuler le mappage d'une route
Les développeurs peuvent empêcher leur application d'être accessible sur une route à l'aide de la commande kf
unmap-route
.
$ kf unmap-route MYAPP mycluster.example.com --host myapp --path mypath
Supprimer une route
Les développeurs peuvent supprimer une route à l'aide de la commande kf delete-route
.
$ kf delete-route mycluster.example.com --host myapp --path mypath
Si vous supprimez une route, le trafic ne sera plus acheminé vers l'ensemble des applications qui l'écoutent.
Routes déclaratives dans le fichier manifeste d'application
Les routes peuvent être gérées de manière déclarative dans le fichier manifeste de votre application. Si elles n'existent pas encore, elles seront créées.
---
applications:
- name: my-app
# ...
routes:
- route: example.com
- route: www.example.com/path
Pour en savoir plus sur les propriétés de routes acceptées, consultez la documentation relative au fichier manifeste.
Rubriques avancées
Router des objets CRD
Il existe quatre types pertinents pour le routage :
- VirtualService
- Itinéraire
- Service
- Application
Chaque application possède un service, qui est un nom abstrait attribué à toutes les instances de l'application en cours d'exécution. Le nom du service est identique à celui de l'application. Une route représente une seule URL externe. Les routes surveillent en permanence les modifications apportées aux applications. Lorsqu'une application demande à être ajoutée à une route, la route met à jour sa liste d'applications, puis le service virtuel. Un service virtuel représente un domaine unique et fusionne une liste de toutes les routes d'un espace appartenant à ce domaine.
Istio lit la configuration sur VirtualService pour déterminer comment acheminer le trafic.