Esta página descreve como as rotas e os domínios funcionam no Kf, e como os desenvolvedores e administradores os configuram para um aplicativo implantado no cluster do Kf.
É necessário criar domínios e rotas para conceder acesso externo ao aplicativo.
Roteamento interno
Os aplicativos do Kf podem se comunicar internamente com outros aplicativos no cluster diretamente usando a rede mesh do Cloud Service Mesh sem sair da rede do cluster. Por padrão, todo o tráfego é criptografado usando TLS mútuo.
Todos os aplicativos implantados no cluster do Kf são fornecidos com um endpoint interno configurado por padrão. É possível pode usar o endereço app-name.space-name.svc.cluster.local para comunicação interna entre aplicativos. Para usar esse endereço interno, não é preciso fazer mais nada. O TLS mútuo é ativado por padrão para rotas internas. Esse endereço interno só pode ser acessado pelos pods que executam os aplicativos e não por fora do cluster.
Balanceamento de carga de aplicativos
O tráfego é roteado pelo Istio para instâncias íntegras de um aplicativo usando a política round-robin. No momento, não é possível alterar essa política.
Recursos de rota
As rotas informam ao gateway de entrada do cluster para onde enviar o tráfego e o que fazer se nenhum aplicativo estiver disponível no endereço especificado. Por padrão, quando nenhum aplicativo está disponível em uma rota e ela recebe uma solicitação, um código de status HTTP 503 é retornado.
As rotas são compostas de três partes: host, domínio e caminho. Por exemplo, no
URI payroll.mydatacenter.example.com/login:
- O host é
payroll - O domínio é
mydatacenter.example.com - O caminho é
/login
As rotas precisam conter um domínio, mas o host e o caminho são opcionais. Várias rotas podem compartilhar o mesmo host e domínio se especificarem caminhos diferentes. Vários apps podem compartilhar a mesma rota e o tráfego será dividido entre eles. Isso é útil quando você precisa permitir implantações azul-verde legadas. Se vários aplicativos estiverem vinculados a caminhos diferentes, a prioridade será do caminho mais longo para o mais curto.
Gerenciar rotas
As seções a seguir descrevem como usar a CLI do kf para gerenciar rotas.
Listar rotas
Os desenvolvedores podem listar rotas para o espaço atual usando o 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
Criar uma rota
Os desenvolvedores podem criar rotas usando o 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
Depois que uma rota é criada, se nenhum aplicativo estiver vinculado a ela, um código de status HTTP 503 será retornado para todas as solicitações atendidas.
Mapear uma rota para o aplicativo
Os desenvolvedores podem tornar o aplicativo acessível em uma rota usando o comando
kf map-route.
$ kf map-route MYAPP mycluster.example.com --host myapp --path mypath
Remover o mapa de uma rota
Os desenvolvedores podem impedir que o aplicativo seja acessível em uma rota usando o comando kf
unmap-route.
$ kf unmap-route MYAPP mycluster.example.com --host myapp --path mypath
Excluir uma rota
Os desenvolvedores podem excluir uma rota usando o comando kf delete-route.
$ kf delete-route mycluster.example.com --host myapp --path mypath
A exclusão de uma rota impedirá que o tráfego seja roteado para os aplicativos que fazem detecções na rota.
Gerenciar rotas de maneira declarativa no manifesto do aplicativo
As rotas podem ser gerenciadas de maneira declarativa no arquivo de manifesto do aplicativo. Elas serão criadas se ainda não existirem.
---
applications:
- name: my-app
# ...
routes:
- route: example.com
- route: www.example.com/path
Leia mais sobre as propriedades das rota compatíveis na documentação do manifesto.
CRDs de roteamento
Há quatro tipos relevantes para o roteamento:
- VirtualService
- Rota
- Serviço
- Aplicativo
Cada aplicativo tem um serviço, que é um nome abstrato atribuído a todas as instâncias do aplicativo em execução. O nome do serviço é igual ao do aplicativo. Uma rota representa um único URL externo. As rotas monitoram constantemente as alterações nos aplicativos. Quando um aplicativo solicita a adição a uma rota, a rota atualiza a lista de aplicativos e o VirtualService. Um VirtualService representa um único domínio e reúne uma lista de todas as rotas em um espaço que pertence a este domínio.
O Istio lê a configuração no VirtualServices para determinar como rotear o tráfego.