Rutas y dominios

En este tema, se describe cómo funcionan las rutas y los dominios en Kf, y cómo los desarrolladores y administradores configuran las rutas y los dominios de una app implementada en el clúster de Kf.

Debes crear dominios y rutas para otorgar acceso externo a tu aplicación.

Enrutamiento interno

Las aplicaciones de Kf pueden comunicarse internamente con otras aplicaciones del clúster de forma directa a través de la red en malla que proporciona Cloud Service Mesh sin salir de la red del clúster. De forma predeterminada, todo el tráfico se encripta mediante TLS mutua.

Todas las apps implementadas en el clúster de Kf vienen con un extremo interno configurado de forma predeterminada. Puedes usar la dirección app-name.space-name.svc.cluster.local para la comunicación interna entre apps. Para usar esta dirección interna, no se requieren pasos adicionales. La TLS mutua está habilitada de forma predeterminada para las rutas internas. Ten en cuenta que solo se puede acceder a esta dirección interna desde los Pods que ejecutan las aplicaciones y no se puede desde el exterior del clúster.

Balanceo de cargas de la app

Istio enruta el tráfico a instancias en buen estado de una aplicación a través de una política de round robin. Actualmente, no se puede cambiar esta política.

Capacidades de ruta

Las rutas le indican a la puerta de enlace de entrada del clúster dónde entregar el tráfico y qué hacer si no hay aplicaciones disponibles en la dirección determinada. De forma predeterminada, si no hay una app disponible en una ruta y esta recibe una solicitud, se muestra un código de estado HTTP 503.

Las rutas se componen de tres partes: host, dominio y ruta de acceso. Por ejemplo, en la URI payroll.mydatacenter.example.com/login:

  • El host es payroll.
  • El dominio es mydatacenter.example.com.
  • La ruta de acceso es /login

Las rutas deben contener un dominio, pero el host y la ruta son opcionales. Varias rutas pueden compartir el mismo host y dominio si especifican diferentes rutas. Varias aplicaciones pueden compartir la misma ruta y el tráfico se dividirá entre ellas. Esto es útil si necesitas compatibilidad con implementaciones azul-verde heredadas. Si varias apps están vinculadas a diferentes rutas, la prioridad es de la más larga a la más corta.

Usar rutas

En las siguientes secciones, se describe cómo usar la CLI de kf para administrar rutas.

Enumerar rutas

Los desarrolladores pueden enumerar las rutas del espacio actual con el 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

Crear rutas

Los desarrolladores pueden crear rutas mediante el 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

Después de crear una ruta, si no hay ninguna aplicación vinculada a ella, se muestra un código de estado HTTP 503 en cualquier solicitud coincidente.

Asigna una ruta a tu app

Los desarrolladores pueden hacer que su app sea accesible en una ruta con el comando kf map-route.

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

Anula la asignación de una ruta

Los desarrolladores pueden quitar sus apps de una ruta mediante el comando kf unmap-route.

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

Borra una ruta

Los desarrolladores pueden borrar una ruta mediante el comando kf delete-route.

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

Borrar una ruta evitará que el tráfico se enrute a todas las aplicaciones que escuchan en la ruta.

Rutas declarativas en el manifiesto de tu app

Las rutas se pueden administrar de forma declarativa en el archivo de manifiesto de la app. Se crearán si aún no existen.

---
applications:
- name: my-app
  # ...
  routes:
  - route: example.com
  - route: www.example.com/path

Puedes leer más sobre las propiedades de rutas admitidas en la documentación del manifiesto.

Temas avanzados

Enrutamiento de CRD

Hay cuatro tipos que son relevantes para el enrutamiento:

  • VirtualService
  • Ruta
  • Servicio
  • Aplicación

Cada aplicación tiene un servicio, que es un nombre abstracto dado a todas las instancias en ejecución de tu aplicación. El nombre del servicio es el mismo que el de la aplicación. Una ruta representa una sola URL externa. Las rutas buscan de manera constante los cambios en las apps. Cuando una app solicita que se la agregue a una ruta, Route actualiza su lista de apps y, luego, el VirtualService. Un VirtualService representa un solo dominio y combina una lista de todas las rutas en un espacio que pertenecen a ese dominio.

Istio lee la configuración en VirtualServices para determinar cómo enrutar el tráfico.