Tutte le app Kf che inviano traffico HTTP a utenti o applicazioni al di fuori del cluster devono essere associate a un nome di dominio.
Kf ha tre località in cui è possibile configurare i domini. Ordinati per precedenza, sono:
- App
- Spazi
- ConfigMap
config-defaults
nello spazio dei nomikf
Modifica il ConfigMap config-defaults
Il ConfigMap config-defaults
contiene le impostazioni a livello di cluster per Kf e può essere modificato dagli amministratori del cluster.
I valori nel ConfigMap vengono letti dal controller di Spaces e ne modificano la configurazione.
I valori del dominio si riflettono nel campo status.networkConfig.domains
dello spazio.
Per modificare il dominio del cluster Kf, modifica il ConfigMap config-defaults
nello spazio dei nomi kf
:
kubectl edit configmap config-defaults -n kf
Aggiungi o aggiorna la voce per la chiave spaceClusterDomain
nel seguente modo:
spaceClusterDomain: my-domain.com
Per verificare che la configurazione sia stata aggiornata correttamente, controlla il valore del dominio in uno spazio:
kf space SPACE_NAME -o "jsonpath={.status.networkConfig.domains[]['domain']}"
L'output sarà simile al seguente:
Getting Space some-space
some-space.my-domain.com
Ogni spazio aggiunge un proprio nome ai domini del cluster. In questo modo eviterai conflitti tra le app.
Assegna domini per gli spazi
Gli spazi sono la posizione autorevole per la configurazione del dominio.
Puoi assegnare domini e sottodomini a ogni spazio per consentirne l'utilizzo agli sviluppatori.
Il campo per la configurazione dei domini è spec.networkConfig.domains
.
Utilizza kf space
per visualizzare i domini assegnati a uno spazio:
kf space SPACE_NAME
Nell'output, il campo Spec
contiene una configurazione specifica per lo spazio
e il campo Status
riflette la configurazione dello spazio con i valori predefiniti per l'intero cluster aggiunti alla fine:
...
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
Aggiungere o rimuovere domini utilizzando la CLI
L'interfaccia a riga di comando kf
supporta le mutazioni sui domini spaziali. Ogni comando restituisce
una differenza tra la vecchia e la nuova configurazione.
Aggiungi un nuovo dominio con kf configure-space append-domain
:
kf configure-space append-domain SPACE_NAME myspace.mycompany.com
Aggiungi un dominio esistente o rendilo predefinito con kf configure-space set-default-domain
:
kf configure-space set-default-domain SPACE_NAME myspace.mycompany.com
Infine, rimuovi un dominio:
kf configure-space remove-domain SPACE_NAME myspace.mycompany.com
Utilizzare Google Apps per specificare i domini
Le app possono specificare i domini come parte della loro configurazione.
I percorsi vengono mappati alle app durante kf push
utilizzando la seguente logica:
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 un'app non specifica una route o ne richiede una casuale, viene utilizzato il primo dominio nello spazio. Se il primo dominio in uno spazio cambia, tutte le app in Gli spazi che utilizzano il dominio predefinito vengono aggiornati in modo da rifletterlo.
Personalizza i modelli di dominio
Kf supporta la sostituzione delle variabili nei domini. La sostituzione consente di personalizzare un singolo dominio per l'intero cluster in base allo spazio e di reagire alle modifiche all'IP di ingresso. La sostituzione viene eseguita su variabili con la sintassi $(VARIABLE_NAME)
che si verificano in un dominio.
Variabile | Descrizione |
---|---|
CLUSTER_INGRESS_IP |
L'indirizzo IPv4 dell'ingresso del cluster. |
SPACE_NAME |
Il nome dello spazio. |
Esempi
I seguenti esempi mostrano come le variabili di dominio possono essere utilizzate per supportare una varietà di strutture organizzative e modelli di cluster diversi.
Utilizzo di un servizio DNS jolly come nip.io:
$(SPACE_NAME).$(CLUSTER_INGRESS_IP).nip.io
Dominio per un'organizzazione con DNS gestito centralmente:
$(SPACE_NAME).cluster-name.example.com
Dominio per i team che gestiscono il proprio DNS:
cluster-name.$(SPACE_NAME).example.com
Dominio per un cluster con failover a caldo e interruttore di sicurezza esterno:
$(SPACE_NAME)-failover.cluster-name.example.com
Differenze tra Kf e CF
- Gli spazi Kf antepongono il nome dello spazio al dominio a livello di cluster.
- Kf non verifica la presenza di conflitti di dominio nelle route specificate dall'utente.