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.