Todos os aplicativos Kf que disponibilizam tráfego HTTP para usuários ou aplicativos fora do cluster precisam estar associados a um nome de domínio.
O Kf tem três locais onde os domínios podem ser configurados. Ordenado por precedência, eles são:
- Apps
- Spaces
- O ConfigMap
config-defaults
no namespacekf
O ConfigMap config-defaults
O ConfigMap config-defaults
contém configurações de todo o cluster para Kf e pode ser editado pelos administradores do cluster.
Os valores no ConfigMap são lidos pelo controlador dos espaços e modificam a configuração deles.
Os valores de domínio são refletidos no campo status.networkConfig.domains
do espaço.
Para modificar o domínio do cluster do Kf, edite o ConfigMap config-defaults
no namespace kf
:
kubectl edit configmap config-defaults -n kf
Adicione ou atualize a entrada da chave spaceClusterDomain
da seguinte maneira:
spaceClusterDomain: my-domain.com
Para confirmar se a configuração foi atualizada corretamente, verifique o valor do domínio em um espaço:
kf space SPACE_NAME -o "jsonpath={.status.networkConfig.domains[]['domain']}"
A saída será semelhante a:
Getting Space some-space
some-space.my-domain.com
Cada espaço prefixa os domínios do cluster com o próprio nome. Isso evita conflitos entre aplicativos.
Domínios de espaço
Os espaços são o local autoritativo da configuração do domínio.
Você pode atribuir domínios e subdomínios a cada espaço para os desenvolvedores 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 uma configuração específica para o Space,
e o campo Status
reflete a configuração do Space com padrões
em todo o cluster anexados ao 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
aceita mutações em domínios do Space: Cada comando gera
uma diferença entre a configuração antiga e a nova.
Adicione um novo domínio com kf configure-space append-domain
:
kf configure-space append-domain SPACE_NAME myspace.mycompany.com
Adicione ou torne um domínio atual o padrão com kf configure-space set-default-domain
:
kf configure-space set-default-domain SPACE_NAME myspace.mycompany.com
Por fim, remova um domínio:
kf configure-space remove-domain SPACE_NAME myspace.mycompany.com
Apps
Os aplicativos podem especificar domínios como parte da configuração.
As rotas são mapeadas para o aplicativo durante kf push
usando a 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 um aplicativo não especificar uma rota ou solicitar uma rota aleatória, o primeiro domínio no espaço será usado. Se o primeiro domínio em um espaço mudar, todos os aplicativos no espaço que usam o domínio padrão serão atualizados para refletir isso.
Modelos do domínio
O Kf é compatível com a substituição de variáveis em domínios. A substituição permite que um único
domínio de cluster seja personalizado por espaço e reaja às alterações no
IP de entrada. A substituição é realizada em variáveis com a sintaxe $(VARIABLE_NAME)
que ocorrem em um 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 a seguir demonstram como as variáveis de domínio podem ser usadas para dar suporte a várias estruturas organizacionais e padrões de cluster diferentes.
Usar um serviço de DNS curinga, como o nip.io:
$(SPACE_NAME).$(CLUSTER_INGRESS_IP).nip.io
O domínio para uma organização com DNS gerenciado centralmente:
$(SPACE_NAME).cluster-name.example.com
O domínio para equipes que gerenciam o próprio DNS:
cluster-name.$(SPACE_NAME).example.com
Domínio para um cluster com failover morno e disjuntor externo:
$(SPACE_NAME)-failover.cluster-name.example.com
Diferenças entre Kf e CF
- Os Kf Spaces prefixam o domínio de todo o cluster com o nome do espaço.
- O Kf não verifica conflitos de domínio em rotas especificadas pelo usuário.