Networking

Port-Vergabe

Network Ports für Apps

Als Konvention werden Ports innerhalb der Plattform zwischen den dynamischen Ports 49,152 und 65,535 vergeben.

  • Port range 49500 through 49599 for platform components
  • Port range 49600 through 49699 for business essentials components
  • Port range 49700 and above for apps

Port ranges are assigned for companies, e.g. 49700-49900 for Ondics Apps

Tabelle der Port-Konventionen in ScaleIT:

Port Komponente Organisation
80 ScaleIT Proxy ScaleIT-Org
49500-50000
ScaleIT-Org
49500 Rancher Server
49501 App Registry
49502 Identity Management
49503 MQTT Broker
ScaleIT Entwicklungs-Partner
50000-50500
ATOS
50500-51000
Fraunhofer
51000-51500
KIT
51500-52000
ondics
52000-52500
SICK
53000-53500
SmartHMI
54000-54500
ZEISS
ScaleIT Anwendungs-Partner
54500-54600
digiraster
54600-54700
Feinmetall
54700-54800
microTEC Südwest
54800-54900
Rood Microtec
59000-55000
Universität Stuttgart
Externe Partner
55000-55100
ITstrategen
55100-55200
YUMA technologies
55200-55300
Ingenieurbüro Teichgräber
55300-55400
HS Esslingen
55400-65536
Frei

Funktionen der Plattform Essentials (Zentrale Services)

App Registry

In der Referenzplattform durch ETCD implementiert.

  • kann von jeder app als key-value store genutzt werden
  • der top-node muss der fqdn-name der app sein (z.b.
/pacman_1.host_1.scaleit)

weitere regeln dazu: - jede app sollte nur die einträge der eigenen app lesen - die zentralen apps haben spezielle root-nodes, z.b.

/apphub
  • wenn eine app gelöscht wird kann der node gelöscht werden
(z.b. von einem registry-cleaner-prozess)
  • die apps dürfen den etcd nicht als massendatenspeicher
nutzen
  • systemweite einstellungen finden sich unter /scaleit,
z.b. /scaleit/language oder /scaleit/brand/company-name… alle apps solten das berücksichtigen

Fragen zu den Anforderungen and das Networking in ScaleIT

  • Der Zugang nach außen soll möglich sein (z.B. “ping google.de”)
  • Wie werden zentrale Services aus einem Container angesprochen?
    • Ideal wäre sowas wie “ping apphub.coreservice.scaleit”?
  • Wie werden andere Container angesprochen? Achtung: Apps können mehrfach instantiiert werden oder auf verschiedenen Hosts laufen!
    • Ideal wäre “ping pacman_1.host_1.scaleit”
  • Wie können Services von außen angesprochen werden?
    • Hierzu sollte im Firmennetz *.scaleit.company.com an die ScaleIT-Plattform weitergeleitet werden
    • Der DNS-Name pacman_1.host_1.scaleit.company.com würde dann zur App führen
Was muss in den docker-compose stehen?
Springe zu Docker Compose network configuration
Was muss auf Docker-Ebene passieren (sollen wir ein eigenes Docker-Netzwerk definieren?)
Ja, auf Docker (Container) Ebene wird es mehrere Netzwerke geben. Siehe ScaleIT App Networking

Docker Compose hier!

ScaleIT App Networking

Ein logischer Server mit zentralen Diensten, die nur einmalig im System vorkommen können:

  • Rancher
  • App-Hub
  • Licence Manager
  • Yellow Pages (ETCD)
  • LDAP / OAuth-Server

Ein oder mehrere Hosts, auf dem Apps laufen.

Diagrams inspired by _1Backend

            Internet                                            Firmen-Intranet
/------------------------------\ /--------------------------------------------------------------------------------------\
                                                                ScaleIT-Netz
                                                              /---------------------------------------------------------\


           client request                  client request                               client request
           to service A                    to service A                                 to service A
(        ) -----------------> |----------| -----------------> |-----------------------| -----------------> |------------|
( client )                    | Firewall |                    | ScaleIT Reverse Proxy |                    |    Apps    |
(        ) <----------------- |----------| <----------------- |-----------------------| <----------------- |------------|
           service A response              service A response                           service A response
           to client                       to client                                    to client
                                                              ^
                                                              |
                                                              |---- place of instrumentation and other magic

HTTP Request Headers

Copy from Github repo