Todas as apps Kf que publicam tráfego HTTP para utilizadores ou aplicações fora do cluster têm de estar associadas a um nome de domínio.
O Kf tem três localizações onde os domínios podem ser configurados. Por ordem de precedência, são:
- Apps
- Espaços
- O
config-defaults
ConfigMap no espaço de nomeskf
O config-defaults
ConfigMap
O config-defaults
ConfigMap contém definições ao nível do cluster para o Kf e pode ser editado pelos administradores do cluster.
Os valores no ConfigMap são lidos pelo controlador Spaces e modificam a respetiva configuração.
Os valores de domínio são refletidos no campo status.networkConfig.domains
do espaço.
Para modificar o domínio do cluster Kf, edite o config-defaults
ConfigMap no kf
Namespace:
kubectl edit configmap config-defaults -n kf
Adicione ou atualize a entrada da chave spaceClusterDomain
da seguinte forma:
spaceClusterDomain: my-domain.com
Para validar se a configuração foi atualizada corretamente, verifique o valor do domínio num espaço:
kf space SPACE_NAME -o "jsonpath={.status.networkConfig.domains[]['domain']}"
O resultado vai ter um aspeto semelhante ao seguinte:
Getting Space some-space
some-space.my-domain.com
Cada espaço prefixa os domínios do cluster com o seu próprio nome. Isto evita conflitos entre apps.
Domínios de espaço
Os espaços são a localização autorizada para a configuração do domínio.
Pode atribuir domínios e subdomínios a cada espaço para os programadores usarem.
O campo para configurar domínios é spec.networkConfig.domains
.
Use kf space
para ver os domínios atribuídos a um espaço:
kf space SPACE_NAME
Na saída, o campo Spec
contém a configuração específica do espaço e o campo Status
reflete a configuração do espaço com os valores predefinidos ao nível do cluster anexados no final:
...
Spec:
Network Config:
Domains:
Domain: my-space.mycompany.com
...
Status:
Network Config:
Domains:
Domain: my-space.mycompany.com
Domain: my-space.prod.us-east1.kf.mycompany.com
Configuração com a CLI
A CLI kf
suporta mutações em domínios do Space. Cada comando produz uma diferença entre as configurações antigas e novas.
Adicione um novo domínio com o kf configure-space append-domain
:
kf configure-space append-domain SPACE_NAME myspace.mycompany.com
Adicione ou torne um domínio existente o predefinido com kf configure-space set-default-domain
:
kf configure-space set-default-domain SPACE_NAME myspace.mycompany.com
Por último, remova um domínio:
kf configure-space remove-domain SPACE_NAME myspace.mycompany.com
Apps
As apps podem especificar domínios como parte da respetiva configuração.
Os trajetos são mapeados para apps durante a kf push
através da seguinte lógica:
let current_routes = The set of routes already on the app
let manifest_routes = The set of routes defined by the manifest
let flag_routes = The set of routes supplied by the --route flag(s)
let no_route = Whether the manifest has no-route:true or --no-route is set
let random_route = Whether the manifest has random-route:true or --random-route is set
let new_routes = Union(current_routes, manifest_routes, flag_routes)
if new_routes.IsEmpty() then
if random_route then
new_routes.Add(CreateRandomRoute())
else
new_routes.Add(CreateDefaultRoute())
end
end
if no_route then
new_routes.RemoveAll()
end
return new_routes
Se uma app não especificar uma rota ou pedir uma rota aleatória, é usado o primeiro domínio no espaço. Se o primeiro domínio num espaço for alterado, todas as apps no espaço que usam o domínio predefinido são atualizadas para refletir essa alteração.
Modelos de domínios
O Kf suporta a substituição de variáveis em domínios. A substituição permite personalizar um único domínio ao nível do cluster por espaço e reagir a alterações ao IP de entrada. A substituição é realizada em variáveis com a sintaxe $(VARIABLE_NAME)
que ocorrem num domínio.
Variável | Descrição |
---|---|
CLUSTER_INGRESS_IP |
O endereço IPV4 da entrada do cluster. |
SPACE_NAME |
O nome do espaço. |
Exemplos
Os exemplos seguintes demonstram como as variáveis de domínio podem ser usadas para suportar uma variedade de estruturas organizacionais e padrões de clusters diferentes.
Usar um serviço DNS com carateres universais, como nip.io:
$(SPACE_NAME).$(CLUSTER_INGRESS_IP).nip.io
Domínio de uma organização com DNS gerido centralmente:
$(SPACE_NAME).cluster-name.example.com
Domínio para equipas que gerem o seu próprio DNS:
cluster-name.$(SPACE_NAME).example.com
Domínio para um cluster com comutação por falha a quente e disjuntor externo:
$(SPACE_NAME)-failover.cluster-name.example.com
Diferenças entre Kf e CF
- Os espaços Kf prefixam o domínio ao nível do cluster com o nome do espaço.
- O Kf não verifica conflitos de domínio em rotas especificadas pelo utilizador.