Alle Kf-Apps, die HTTP-Traffic für Nutzer oder Anwendungen außerhalb des Clusters bereitstellen, müssen mit einem Domainnamen verknüpft sein.
Es gibt drei Standorte, in denen Domains konfiguriert werden können. Sie sind nach Priorität sortiert:
- Apps
- Spaces
- Die
config-defaults
ConfigMap imkf
Namespace
Die config-defaults
ConfigMap
Die ConfigMap config-defaults
enthält clusterweite Einstellungen für Kf und kann von Clusteradministratoren bearbeitet werden.
Die Werte in der ConfigMap werden vom Spaces-Controller gelesen und ändern ihre Konfiguration.
Die Domainwerte werden im Feld status.networkConfig.domains
des Space angezeigt.
Bearbeiten Sie die config-defaults
ConfigMap im kf
Namespace, um die Domain des Kf-Clusters zu ändern.
kubectl edit configmap config-defaults -n kf
Fügen Sie den Eintrag für den Schlüssel spaceClusterDomain
folgendermaßen hinzu oder aktualisieren Sie ihn:
spaceClusterDomain: my-domain.com
Kontrollieren Sie den Domainwert in einem Bereich, um zu prüfen, ob die Konfiguration korrekt aktualisiert wurde:
kf space SPACE_NAME -o "jsonpath={.status.networkConfig.domains[]['domain']}"
Die Ausgabe sieht etwa so aus:
Getting Space some-space
some-space.my-domain.com
Mit jedem Leerzeichen wird den Clusterdomains ein eigener Name vorangestellt. Dadurch werden Konflikte zwischen Anwendungen verhindert.
Bereichs-Domains
Spaces sind der offizielle Speicherort für die Domainkonfiguration.
Sie können jedem Bereich Domains und Subdomains zuweisen, die Entwickler verwenden können.
Das Feld zur Konfiguration von Domains lautet spec.networkConfig.domains
.
Verwenden Sie kf space
, um die einem Bereich zugewiesenen Domains anzuzeigen:
kf space SPACE_NAME
In der Ausgabe enthält das Feld Spec
eine bestimmte Konfiguration für den Bereich und das Feld Status
die Konfiguration für den Bereich, an die am Ende clusterweite Standardeinstellungen angehängt werden:
...
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
Konfiguration mit der Befehlszeile
Die kf
-Befehlszeile unterstützt Mutationen in Bereichs-Domains: Jeder Befehl gibt eine Differenz zwischen der alten und neuen Konfiguration aus.
Fügen Sie eine neue Domain mit kf configure-space append-domain
hinzu:
kf configure-space append-domain SPACE_NAME myspace.mycompany.com
Fügen Sie eine vorhandene Domain mit kf configure-space set-default-domain
hinzu oder verwenden Sie eine vorhandene Domain:
kf configure-space set-default-domain SPACE_NAME myspace.mycompany.com
Entfernen Sie zum Schluss eine Domain:
kf configure-space remove-domain SPACE_NAME myspace.mycompany.com
Apps
Apps können Domains als Teil ihrer Konfiguration angeben.
Routen werden Apps während der folgenden kf push
zugeordnet:
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
Wenn eine App keine Route angibt oder eine zufällige Route anfordert, wird die erste Domain im Bereich verwendet. Wenn sich die erste Domain in einem Bereich ändert, werden alle Apps im Raum, die die Standarddomain verwenden, entsprechend aktualisiert.
Domainvorlagen
Kf unterstützt die Variablensubstitution in Domains. Die Substitution ermöglicht es, eine einzelne clusterweite Domain pro Space anzupassen und auf Änderungen an der Ingress-IP zu reagieren. Die Substitution wird für Variablen mit der Syntax $(VARIABLE_NAME)
durchgeführt, die in einer Domain vorkommen.
Variable | Beschreibung |
---|---|
CLUSTER_INGRESS_IP |
Die IPv4-Adresse des Cluster-Ingress |
SPACE_NAME |
Der Name des Space. |
Beispiele
Die folgenden Beispiele veranschaulichen, wie Domainvariablen verwendet werden können, um eine Vielzahl verschiedener Organisationsstrukturen und Clustermuster zu unterstützen.
Verwenden Sie einen Platzhalter-DNS-Dienst wie nip.io:
$(SPACE_NAME).$(CLUSTER_INGRESS_IP).nip.io
Domain für eine Organisation mit zentral verwaltetem DNS:
$(SPACE_NAME).cluster-name.example.com
Domain für Teams, die ihr eigenes DNS verwalten:
cluster-name.$(SPACE_NAME).example.com
Domain für einen Cluster mit einem warmen Failover und externem Schutzschalter:
$(SPACE_NAME)-failover.cluster-name.example.com
Unterschiede zwischen Kf und CF
- Kf-Bereiche sind der clusterweiten Domain mit dem Namen des Bereichs vorangestellt.
- Kf prüft keine Domänenkonflikte bei benutzerdefinierten Routen.