Deployment
Deployment Pool²
Allgemein
Die Microservice Architektur der Pool² wird mit dem Programm Docker realisiert. Docker ist ein Programm zur containerbasierten Virtualisierung. Dabei läuft jeder Microservice in einem eigenen Container, die bei Docker einfach Docker genannt werden.
Docker Netzwerk
Um die Funktionsweise der Docker des Pool² zu gewährleisten, gibt es besondere Anforderungen an das Netzwerk. Damit sich Docker gegenseitig finden, brauchen sie eine feste IP oder besser noch einen eindeutigen Namen im Netzwerk. Ein solches Netzwerk erstellen wir mit dem Befehl:
docker network create -d bridge --subnet 172.2.0.0/16 pool-network
.
Dabei bekommt jeder Docker eine IP in dem Subnet 172.2.0.0/16
.
Die Adresse 172.2.0.1
ist der Gateway zum localhost.
Docker Administration
Für das Deployment des Pool² stehen unter dem REPO "" einige Scripte zur Verfügung, die Routinen für die Administration der Docker bereitstellt.
In dem Ordner scripts, befinden sich Routinen zum Starten der jeweiligen Microservice. Der Ordner conf
beinhaltet alle Konfigurationsdateien.
Das Script pool.sh
erlaubt ein einfache Handhabung der verschiedenen Scripte.
Mit pool.sh <docker> <action>
kann so der ganze Pool² administriert werden.
Bezeichnung | Beschreibung |
---|---|
run | setzt einen Docker auf und startet ihn. |
start | startet den Docker. |
stop | stoppt den Docker. |
rm | löscht den Docker. |
logs | gibt die Logs aus. |
error | gibt Errors aus. |
Nginx Webserver
Als Webserver wird im Pool² ein Docker mit Nginx in der Version 1.12.1 verwendet. Somit kann er einfach wie oben beschrieben Administriert werden.
Die Konfigurationsdateien befinden sich unter conf/nginx/
. Die default.conf
beinhaltet die Konfigurationen für das SSL.
Hier werden die Zertifikate angegeben und ein konsistentes HTTPS für den gesamten Pool² realisiert.
In dem Ordner config/
befinden sich für jeden Microservice eine <Microservice>.upstream
, in der die IP zum Microservice angegeben wird und eine <Microservice>.location
, die Informationen über den URL-Pfad beinhaltet.
Dabei wird ein Pfad nach dem Schema
Host/<Microservice>/<MicroserviceRoutes>
erstellt.
Neue Microservice
Beim Deployment neuer Microservice müssen die jeweiligen Funktionen unter scripts/<Microservice>.sh
angegeben werde.
Zusätzlichen Parameter sind dem jeweiligen Repository zu entnehmen.
Erweitert wird dies durch die Parameter --net pool-network
und --ip <IP>
, die dem Docker das richtige Netzwerk zuweisen.
Direkte Links zwischen einzelnen Dockern, können mit --link DockerName:IrgendeinName
erstellt werden.
Sollte ein Docker Frontend-Kontent bereitstellen, muss zudem die entsprechenden Nginx-Files erstellt werden. Hierzu reicht es die muster.location
und muster.upstream
zu editieren.
Wichtig ist das IP und Pfad nicht bereits Vergeben sind.
Bereits Vergeben
Vergebene Pfade und IP-Adressen:
Microservice | Docker Name | Pfad | IP-Adresse |
---|---|---|---|
Drops | drops | /drops | 172.2.0.3 |
Nginx | nginx-docker | / | 172.2.0.2 |
Dispenser | dispenser | /dispenser | 172.2.0.4 |
Drops-MongoDB | drops-mongo | N.A. | 172.2.1.1 |
Drops-MariaDB | drops-mariadb | N.A. | 172.2.1.2 |