En esta página se describe cómo funcionan las rutas y los dominios en Kf, y cómo configuran los desarrolladores y administradores las rutas y los dominios de una aplicación implementada en un clúster de Kf.
Debes crear un dominio y rutas para dar acceso externo a tu aplicación.
Rutas internas
Las aplicaciones de Kf pueden comunicarse internamente con otras aplicaciones del clúster directamente mediante la red de malla proporcionada por Cloud Service Mesh sin salir de la red del clúster. De forma predeterminada, todo el tráfico se cifra mediante TLS mutuo.
Todas las aplicaciones implementadas en el clúster de Kf incluyen un endpoint interno configurado de forma predeterminada. Puedes usar la dirección app-name.space-name.svc.cluster.local
para la comunicación interna entre aplicaciones. Para usar esta dirección interna, no es necesario que hagas nada más. El protocolo TLS mutuo está habilitado de forma predeterminada en 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 desde fuera del clúster.
Balanceo de carga de aplicaciones
Istio dirige el tráfico a las instancias en buen estado de una aplicación mediante una política de asignación cíclica. Actualmente, esta política no se puede cambiar.
Funciones de ruta
Las rutas indican a la pasarela de entrada del clúster dónde debe enviar el tráfico y qué debe hacer si no hay aplicaciones disponibles en la dirección indicada. De forma predeterminada, si no hay ninguna aplicación disponible en una ruta y la ruta recibe una solicitud, devuelve un código de estado HTTP 503.
Las rutas se componen de tres partes: host, dominio y ruta. Por ejemplo, en el URI payroll.mydatacenter.example.com/login
:
- El anfitrión es
payroll
- El dominio es
mydatacenter.example.com
- La ruta 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 rutas diferentes. Varias aplicaciones pueden compartir la misma ruta y el tráfico se dividirá entre ellas. Esto resulta útil si necesitas admitir implementaciones antiguas de azul/verde. Si hay varias aplicaciones vinculadas a diferentes rutas, la prioridad se asigna de la ruta más larga a la más corta.
Gestionar rutas
En las siguientes secciones se describe cómo usar la CLI de kf
para gestionar las rutas.
Mostrar lista de rutas
Los desarrolladores pueden consultar las rutas del espacio actual mediante 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 una ruta
Los desarrolladores pueden crear rutas con 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
Una vez creada una ruta, si no hay aplicaciones vinculadas a ella, se devuelve un código de estado HTTP 503 para las solicitudes coincidentes.
Asignar una ruta a tu aplicación
Los desarrolladores pueden hacer que su aplicación sea accesible en una ruta mediante el comando kf map-route
.
$ kf map-route MYAPP mycluster.example.com --host myapp --path mypath
Desasignar una ruta
Los desarrolladores pueden impedir que se pueda acceder a su aplicación en una ruta mediante el comando kf
unmap-route
.
$ kf unmap-route MYAPP mycluster.example.com --host myapp --path mypath
Eliminar una ruta
Los desarrolladores pueden eliminar una ruta con el comando kf delete-route
.
$ kf delete-route mycluster.example.com --host myapp --path mypath
Si eliminas una ruta, se dejará de dirigir el tráfico a todas las aplicaciones que estén escuchando en la ruta.
Gestionar las rutas de forma declarativa en el manifiesto de la aplicación
Las rutas se pueden gestionar de forma declarativa en el archivo de manifiesto de tu aplicación. Se crearán si aún no existen.
---
applications:
- name: my-app
# ...
routes:
- route: example.com
- route: www.example.com/path
Puede consultar más información sobre las propiedades de ruta admitidas en la documentación del archivo de manifiesto.
CRDs de enrutamiento
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 que se asigna 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 monitorizan constantemente los cambios en las aplicaciones. Cuando una aplicación solicita que se añada a una ruta, la ruta actualiza su lista de aplicaciones y, a continuación, el VirtualService. Un VirtualService representa un único dominio y combina una lista de todas las rutas de un espacio que pertenecen a ese dominio.
Istio lee la configuración de VirtualServices para determinar cómo enrutar el tráfico.