Configure um domínio personalizado

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:

  1. Apps
  2. Espaços
  3. O config-defaults ConfigMap no espaço de nomes kf

Edite 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.

Atribua domínios do Space

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

Adicione ou remova domínios através da 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

Use as Apps para especificar domínios

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.

Personalize 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.