Zum Hauptinhalt springen
Version: 5.5

OPC Router mit LocalStack (ECS) einrichten

Hier wird beschrieben wie Sie den OPC Router containerisiert mit AWS ECS unter LocalStack betreiben können. Dabei verwenden wir Docker-Container, LocalStack (mit ECS- und ECR-Unterstützung) sowie die AWS-/awslocal-CLI. Wichtige Teile dieser Konfiguration (Ports, Volumes, Umgebungsvariablen etc.) basieren auf einer Beispiel-Task-Definition (siehe beigefügte JSON-Datei).

Voraussetzungen: Stellen Sie sicher, dass Docker Desktop auf dem lokalen Rechner installiert und aktiv ist. LocalStack benötigt eine funktionierende Docker-Installation. Installieren Sie außerdem die AWS-CLI und gegebenenfalls die LocalStack-CLI.

LocalStack Cloud-Konto & Auth-Token: Erstellen Sie ein kostenloses Konto unter app.localstack.cloud.

In Ihren Kontoeinstellungen generieren Sie, sofern eine entsprechende Lizenz vorliegt, einen Auth-Token. Dieser Auth-Token wird lokal benötigt, damit der Container die Cloud-Funktionen (z.B. ECS) freischaltet. Setzen Sie den Token in Ihrer Shell-Umgebung oder über eine Konfigurationsdatei. Der Auth-Token kann auch direkt beim folgenden Docker-Run mitangegeben werden.

LocalStack-Container starten: Laden Sie das offizielle LocalStack Docker-Image und starten Sie es mit Ihrem Auth-Token aus dem LocalStack-Cloud-Konto.

docker run -d --name localstack-pro -p 4566:4566 -e SERVICES=s3 -e <AUTH_TOKEN> localstack/localstack-pro  

Dies bindet den Docker-Socket in den Container (erforderlich für ECS-Emulation) und setzt den Auth-Token (aus Ihrem Cloud-Konto) Wichtig: Bei Verwendung eines Auth-Tokens muss das Image localstack/localstack-pro verwendet werden

Task-Definition (JSON) vorbereiten: Legen Sie im Arbeitsverzeichnis eine ECS-Task-Definition als JSON-Datei (z.B. OPC_Router_localstack.json) ab. Diese Datei definiert u.a. den OPC Router-Container (opcrouter/runtime:latest), CPU/Memory-Anforderungen, Port-Mappings und Persistenz-Volumes. Beispiel-Inhalte aus der Datei:

  • family: mml-awz-ort-OpcRouterPrimary – Name der Task-Familie.

  • containerDefinitions.image: opcrouter/runtime:latest.

  • environment: Wichtige Variablen wie OR_I_ACCEPT_EULA=true (Lizenzannahme), INITIAL_USERNAME, INITIAL_PASSWORD (Admin-Zugang) usw. müssen hier gesetzt sein.

  • portMappings: Container-Port 8080 → Host-Port 8081 (OPC Router-Web-UI).

  • volumes: Bindet Host-Pfade /opt/opc-router-data und /opt/opc-router-logs in den Container (/data bzw. /var/log/opcrouter).

Sorgen Sie dafür, dass die im JSON genannten Host-Verzeichnisse existieren und schreibbar sind.

Task-Definition registrieren: Registrieren Sie die Task-Definition bei LocalStack. Beispiel:

aws --endpoint-url=http://localhost:4566 ecs register-task-definition --cli-input-json file://./OPC_Router_localstack.json

Diese erscheint nun uin der LocalStack-Weboberfläche unter Resource Browser → ECS → Task Definitions. Lokal können Sie mit aws --endpoint-url=http://localhost:4566 ecs list-task-definitions überprüfen, dass die Definition vorhanden ist.

Service erstellen: Jetzt erzeugen Sie den ECS-Service, der den OPC-Router-Container auf Basis der Task-Definition startet. Dies kann über die LocalStack Web-UI erfolgen: Unter Resource Browser → ECS → Clusters → (Ihr Cluster, z.B. Default) → Services → Create Service geben Sie einen Service-Namen an, wählen die eben registrierte Task-Definition, setzen Desired Count auf 1 und bestätigen.

Nach Ausführung wird der Service aktiv und LocalStack erstellt einen Docker-Container entsprechend der Definition.

Überprüfung: Nach dem Erstellen des Services sollte ein neuer Docker-Container laufen. Überprüfen Sie dies in Docker Desktop oder per Shell(docker ps). Sie sollten einen Container mit dem Image opcrouter/runtime:latest sehen, das läuft.

Zusätzliche Hinweise:

  • Umgebungsvariablen: Achten Sie darauf, in der json-Datei OR_I_ACCEPT_EULA=true zu setzen, da der Container sonst nicht startet. Setzen Sie auch INITIAL_USERNAME und INITIAL_PASSWORD.

  • Volumes: Prüfen Sie, dass /opt/opc-router-data und /opt/opc-router-logs auf dem Host existieren, wenn sie in der Task-Definition gemountet sind.

  • Docker Desktop: Nach dem Start über LocalStack erscheint der Container in Docker Desktop (siehe auch Logs und Status dort).

Mit diesen Schritten ist der OPC Router in Ihrer lokalen LocalStack-ECS-Umgebung eingerichtet und kann wie gewohnt unter http://localhost:8081 oder einem anderen von Ihnen konfigurierten Port verwendet werden.