Routes et Domains

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.