Deployment

Aus VcA | Wiki

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