Landscape Networking
Die Services innerhalb eines Landscape können uneingeschränkt miteinander kommunizieren, während das Landscape als Ganzes von der Außenwelt isoliert ist. Traffic aus dem Internet oder aus anderen Landscapes gelangt nur über einen einzigen, vom Nutzer definierten Einstiegspunkt hinein.
Diese Seite beschreibt die drei Teile dieses Modells:
- Wie Services innerhalb eines Landscape miteinander kommunizieren.
- Wie Traffic von außen in das Landscape gelangt.
- Wie der Workspace Router eingehenden Traffic auf mehrere Services und externe Ziele verteilt.
Kommunikation zwischen Services innerhalb eines Landscape
Jeder Service in einem Landscape ist von jedem anderen Service im selben Landscape aus erreichbar. Es ist keine zusätzliche Konfiguration erforderlich.
-
Reactive Services werden unter einem festen Hostnamen angesprochen:
ws-server-<workspace-id>-<reactive-service-name>.workspacesAnfragen gehen an die Ports, die für diesen Service konfiguriert wurden. Zum Beispiel ist ein Backend-Service namens
apiin Workspace12345, der auf Port8080lauscht, erreichbar unter:http://ws-server-12345-api.workspaces:8080Ports müssen konfiguriert werdenEin Service ist nur über die Ports erreichbar, die in seiner Konfiguration deklariert sind. Siehe Ports konfigurieren.
-
Virtual Machines werden unter einem festen Hostnamen angesprochen:
ws-vm-<workspace-id>-<virtual-machine-name>.workspaces -
Managed Services haben, abhängig vom Managed Service Provider, eigene Hostnamen. Anbieterspezifische Verbindungsdetails finden sich in der Managed Service Provider Reference.
Hostnamen für Reactives und Virtual Machines werden ausschließlich innerhalb des Landscape aufgelöst. Sie sind weder über einen Browser noch von einem anderen Landscape oder aus dem öffentlichen Internet erreichbar. Managed Services haben je nach Anbieter unterschiedliche Isolationsstufen.
Ingress-Traffic
Jeder Workspace wird unter seiner Dev-Domain bereitgestellt. Zusätzlich kann der Workspace unter einem Pfad einer Custom Domain eingebunden werden. Die Einrichtung ist unter Custom Domain verbinden beschrieben.
Der gesamte Traffic, der über die Dev-Domain oder eine Custom Domain eintrifft, wird zu einem einzigen Endpunkt innerhalb des Landscape geleitet.
Dieser Endpunkt wird landscapeGateway genannt.
In der Landscape-Konfiguration wird festgelegt, welcher Service und welcher Port als Landscape-Gateway fungieren.

Entsprechende barrierefreie Textbeschreibung
- UI
- YAML
- Öffne den Landscape Config Editor im Workspace.
- Klicke auf das Badge Traffic Routed to, um die Konfiguration zu öffnen.
- Wähle den gewünschten Service als Landscape-Gateway aus und bestimme den Port, der den HTTP-Traffic bedient.
Auswahl eines Reactive Service als Landscape-Gateway-Service.
run:
frontend:
network:
ports: [3000, 8080]
landscapeGateway:
httpPort: 8080
backend:
network:
ports: [3000]
- network.landscapeGateway.httpPort: Der Port, der den gesamten von außen in das Landscape eintreffenden Traffic empfängt.
Ein Landscape hat höchstens ein Landscape-Gateway. Der Port, den du als httpPort deklarierst, muss auch in den Ports des Service deklariert sein.
Ein Landscape mit nur einem Service benötigt nichts weiter. Der Service ist das Gateway und empfängt alle eingehenden Anfragen.
Workspace Router
Wenn mehrere Services von außen über unterschiedliche HTTP-Pfade erreichbar sein sollen, füge dem Landscape einen Codesphere Workspace Router hinzu und verwende ihn als Landscape-Gateway. Dies ist die empfohlene Konfiguration für Landscapes mit mehreren Services.
Der Workspace Router läuft als zusätzlicher Service im Landscape. Er kann wie ein Reactive oder ein Managed Container skaliert werden, indem ein Plan und eine Replica-Anzahl gewählt werden. Image oder Startbefehle werden dabei nicht konfiguriert. Codesphere baut und betreibt den Router basierend auf den definierten Pfaden.

Entsprechende barrierefreie Textbeschreibung
Service Networking
Service Networking bildet einen Pfad auf einen Service und Port innerhalb des Landscape ab.
- UI
- YAML
- Füge dem Landscape einen Codesphere Router-Service hinzu:
-
Option 1: über das Add New Service Modal
Hinzufügen einer Codesphere Router-Runtime zum Landscape über das Add New Service Modal. -
Option 2: über das Landscape Networking Flyout
Hinzufügen einer Codesphere Router-Runtime zum Landscape über das Landscape Networking Flyout.
- Füge unter Service Networking eine neue Route hinzu.
- Gib das Path-Präfix ein, zum Beispiel
/api. - Wähle den Ziel-Service und den Port aus.
Hinzufügen von Service Networking über den Codesphere Router.
run:
cs-router:
type: router
plan: 101
replicaCount: 1
network:
isLandscapeGateway: true
paths:
- path: /
service: frontend
port: 8080
stripPath: false
- path: /api
service: backend
port: 3000
stripPath: true
Custom Target Routing
Custom Target Routing bildet einen Pfad auf eine beliebige URL ab. Verwende dies, um Traffic an Endpunkte weiterzuleiten, die keine Services des Landscape sind, zum Beispiel:
- Services in einem Virtual Kubernetes Cluster
- Managed Services
- Endpunkte außerhalb von Codesphere
- UI
- YAML
- Füge dem Landscape einen Codesphere Router-Service hinzu oder öffne die Einstellungen des bestehenden Routers. (Siehe Abschnitt 3.1)
- Füge unter Custom Targets eine neue Route hinzu.
- Gib das Path-Präfix ein.
- Gib die Ziel-URL ein.
Hinzufügen eines Custom Targets über den Codesphere Router.
run:
cs-router:
type: router
plan: 101
replicaCount: 1
network:
isLandscapeGateway: true
externalTargets:
- path: /dashboard
target: http://my-headlamp-x-kube-system-x-k8s.rg-${{ team.id }}.svc.cluster.local
stripPath: false
Strip Path
Jede Pfadzuordnung unterstützt das Flag stripPath. Ist es gesetzt, wird das übereinstimmende Pfadpräfix aus der Anfrage entfernt, bevor sie an das Ziel weitergeleitet wird.
stripPath | Eingehende Anfrage | Weitergeleitet an Ziel |
|---|---|---|
false | /api/users | /api/users |
true | /api/users | /users |
Setze stripPath: true, wenn die Anwendung ihre Routen vom Root aus bedient. Lasse es auf false, wenn die Anwendung den vollständigen Pfad erwartet. Siehe Pfadbasiertes Routing, um eine Anwendung auf einen Unterpfad vorzubereiten.
Templates
In der Router-Konfiguration können Templates verwendet werden. Sie werden zur Laufzeit aufgelöst, sodass dieselbe Konfiguration für alle Workspaces funktioniert.
| Template | Beschreibung |
|---|---|
${{ workspace.id }} | Wird zur Workspace-ID aufgelöst |
${{ team.id }} | Wird zur Team-ID aufgelöst |
Anstelle des Workspace Router kann auch jeder eigene Service als Landscape-Gateway bestimmt werden. In diesem Fall wird das Routing selbst gehandhabt, und Pfadzuordnungen stehen nicht zur Verfügung. Außerdem benötigt der integrierte Request Browser von Codesphere einen Workspace Router, um Traces automatisch erfassen zu können.