Routes et Domains

Certaines applications sont utiles sans être accessibles en dehors du cluster. Toutefois, la plupart d'entre elles doivent être disponibles en dehors du cluster sur un ou plusieurs points de terminaison HTTP. Dans Kf, la tâche des routes s'en charge.

Par défaut, chaque application est accessible aux autres processus du cluster à l'aide de l'adresse de l'application interne du cluster : app-name.space-name. Vous pouvez utiliser cette adresse lorsque vous déployez une ou plusieurs applications dans un cluster qui doivent communiquer entre elles. Elles permettent au trafic de passer directement d'une application à une autre plutôt que d'avoir besoin de sortir du cluster et d'y rentrer à nouveau. Cela permet de garantir que les communications utilisent le service dans le cluster local, le tout de manière plus sécurisée et plus rapide.

Si votre application doit être accessible en dehors du cluster, vous devrez créer des routes pour celle-ci.

Le domaine interne au cluster

Le domaine interne au cluster de chaque application possède des caractéristiques spéciales.

  • Son utilisation dans vos applications permet le routage Est-Ouest (point à point).
  • Le trafic qui lui est envoyé est équilibré entre les pods d'application en cours d'exécution.
  • Vous pouvez vous connecter à des points de terminaison autres que HTTP à l'aide du domaine interne.

Les routes vous permettent de créer des URL personnalisées sur le domaine interne au 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 inclure un hôte et un domaine, mais le chemin d'accès est facultatif. 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
  • Route
  • 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.