Benutzerdefinierte Domain einrichten

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:

  1. Apps
  2. Spaces
  3. Die config-defaults ConfigMap im kf 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.