Todos os aplicativos do 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:
- Aplicativos
- Spaces
- O ConfigMap
config-defaultsno namespacekf
O ConfigMap config-defaults
O ConfigMap config-defaults contém configurações de todo o cluster para o Kf e pode ser editado pelos administradores do cluster.
Os valores do ConfigMap são lidos pelo controlador dos Spaces e modificam a configuração deles.
Os valores de domínio são refletidos no campo status.networkConfig.domains do Space.
Para modificar o domínio do cluster do Kf, edite o ConfigMap config-defaults no namespace kf:
kubectl edit configmap config-defaults -n kfAdicione 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 Space:
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 Space coloca o próprio nome como prefixo dos domínios do cluster. Isso evita conflitos entre aplicativos.
Domínios do Space
Os Spaces são o local confiável para a configuração do domínio.
Você pode atribuir domínios e subdomínios a cada Space para os desenvolvedores usarem.
O campo para configurar domínios é spec.networkConfig.domains.
Use kf space para conferir os domínios atribuídos a um Space:
kf space SPACE_NAMENa 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.comAdicione ou torne padrão um domínio atual com kf configure-space set-default-domain:
kf configure-space set-default-domain SPACE_NAME myspace.mycompany.comPor fim, remova um domínio:
kf configure-space remove-domain SPACE_NAME myspace.mycompany.comAplicativos
Os aplicativos podem especificar domínios como parte da configuração.
As rotas são direcionadas 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 se solicitar uma rota aleatória, o primeiro domínio no Space será usado. Se o primeiro domínio em um Space mudar, todos os aplicativos no Space que usam o domínio padrão serão atualizados para refletir isso.
Modelos de 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 Space 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 Space. |
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 de caractere curinga, como o nip.io:
$(SPACE_NAME).$(CLUSTER_INGRESS_IP).nip.ioO domínio para uma organização com DNS gerenciado centralmente:
$(SPACE_NAME).cluster-name.example.comO domínio para equipes que gerenciam o próprio DNS:
cluster-name.$(SPACE_NAME).example.comDomínio para um cluster com failover morno e disjuntor externo:
$(SPACE_NAME)-failover.cluster-name.example.com
Diferenças entre Kf e CF
- Os Spaces do Kf usam o próprio nome como prefixo do domínio de todo o cluster.
- O Kf não verifica conflitos de domínio em rotas especificadas pelo usuário.