Zum Hauptinhalt springen
Version: Weekly Build

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:

  1. Wie Services innerhalb eines Landscape miteinander kommunizieren.
  2. Wie Traffic von außen in das Landscape gelangt.
  3. 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>.workspaces

    Anfragen gehen an die Ports, die für diesen Service konfiguriert wurden. Zum Beispiel ist ein Backend-Service namens api in Workspace 12345, der auf Port 8080 lauscht, erreichbar unter:

    http://ws-server-12345-api.workspaces:8080
    Ports müssen konfiguriert werden

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

Nur intern

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.

Landscape ohne Workspace Router. Traffic von der Custom Domain und der Dev-Domain geht direkt an den Frontend-Service, der als Landscape-Gateway fungiert. Das Frontend erreicht den Backend-Service über privates Networking.

Entsprechende barrierefreie Textbeschreibung

  1. Öffne den Landscape Config Editor im Workspace.
  2. Klicke auf das Badge Traffic Routed to, um die Konfiguration zu öffnen.
  3. 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. Auswahl eines Reactive Service als Landscape-Gateway-Service.

Ein Gateway pro Landscape

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.

Landscape mit einem Workspace Router als Landscape-Gateway. Der Router leitet Anfragen auf / an den Frontend-Service weiter, auf /api an den Backend-Service, und auf /dashboard an ein benutzerdefiniertes Ziel außerhalb des Landscape.

Entsprechende barrierefreie Textbeschreibung

Service Networking​

Service Networking bildet einen Pfad auf einen Service und Port innerhalb des Landscape ab.

  1. 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. 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. Hinzufügen einer Codesphere Router-Runtime zum Landscape über das Landscape Networking Flyout.

  1. Füge unter Service Networking eine neue Route hinzu.
  2. Gib das Path-Präfix ein, zum Beispiel /api.
  3. Wähle den Ziel-Service und den Port aus. Hinzufügen von Service Networking über den Codesphere Router. Hinzufügen von Service Networking über den Codesphere Router.

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:

  1. Füge dem Landscape einen Codesphere Router-Service hinzu oder öffne die Einstellungen des bestehenden Routers. (Siehe Abschnitt 3.1)
  2. Füge unter Custom Targets eine neue Route hinzu.
  3. Gib das Path-Präfix ein.
  4. Gib die Ziel-URL ein. Hinzufügen eines Custom Targets über den Codesphere Router. Hinzufügen eines Custom Targets über den Codesphere Router.

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.

stripPathEingehende AnfrageWeitergeleitet 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.

TemplateBeschreibung
${{ workspace.id }}Wird zur Workspace-ID aufgelöst
${{ team.id }}Wird zur Team-ID aufgelöst
Kompromiss bei einem Custom Gateway

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.