Installation
Eine ClusterControl-Instanz kann entweder als System Service oder als Container betrieben werden. Im Folgenden werden die Möglichkeiten des Betriebs und der Konfiguration beschrieben.
Umgebungsvariablen
Umgebungsvariable | Beschreibung | Defaultwert / Beispiel |
---|---|---|
| Gibt an ob die API auch von Außerhalb des ClusterHosts erreichbar sein soll. (0.0.0.0 oder 127.0.0.1) | false |
| Gibt an ob auch ein Zugriff über TLS möglich sein soll | false |
| Setzt den Port für die Unverschlüsselte Kommunikation | 4000 |
| Setzt den Port für die Verschlüsselte Kommunikation | 4001 |
| Optional. Legt Ort und Namen der lokalen Datenbank fest | containers.db |
| Legt den Zugriffspfad für die Verwaltungsschnittstelle fest |
|
| Optional. Setzt den Hostnamen oder die IP des DeviceCenters | Bsp.: devicecenter.azurewebsites.net |
| Optional. Setzt den HTTP Proxy, um auf das DeviceCenter zuzugreifen | |
| Optional. Setzt einen von RGDC_HOST abweichenden Hostnamen / IP des DeviceCenter | Wert von |
| Optional. Setzt einen von RGDC_PROXY abweichenden HTTP Proxy, um das DeviceCenter zu erreichen. | Wert von |
| Optional. Legt fest, ob die volle PKI-Chain überprüft werden soll, wenn eine verschlüsselte Verbindung zum DeviceCenter aufgebaut werden soll | true |
| Optional. Setzt die vom DeviceCenter erzeugte Client ID | beliebige UUIDv4 |
| Optional. Setzt den Secret vom DeviceCenter erzeugten Secret | beliebige UUIDv4 |
| Legt den Nutzernamen für die Anmeldung fest | ccadmin |
| Legt den SHA256 Hash des Passwortes füe die Anmeldung fest. |
|
| Kommaseparierte Liste von Volume Mounts, welche zusätzlich in die EdgeContainer integriert werden sollen | Bsp: |
Docker und Docker-Compose unter Debian/Ubuntu
Zuerst muss die Docker Plattform installiert werden
apt install -y docker.io
Mit folgenden Kommando kann ein Container Image importiert werden
docker load -i <file_name>.tar
Anschließend kann beispielsweise im Ordner /opt/robogate-cluster-control
eine docker-compose.yml
Datei mit folgenden Inhalt erstellt werden:
/opt/robogate-cluster-control/docker-compose.yml
version: "3.5"
services:
rgcc:
image: rdsdocker.azurecr.io/robogate-cluster-control:2021.05
container_name: rgcc
privileged: true
restart: unless-stopped
networks:
rgccnet:
ports:
- "80:4000"
environment:
- "RGCC_SSL_DISABLED=true"
- "RGCC_SERVE_PUBLIC=true"
# - "RGDC_HOST=<DeviceCenter_Host>" # optional
# - "RGCC_CLIENT_ID=<CLIENT_ID>" # optional
# - "RGCC_SECRET=<SECRET>" # optional
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "/etc/ssl/certs:/etc/ssl/certs:z"
networks:
rgccnet:
name: rgccnet
driver: bridge
Um das ClusterControl zu starten, muss folgender DockerCompose-Befehl ausgeführt werden. Damit wird der Container automatisch als Dienst gestartet, sodass dieser auch nach einem Neutstart des ClusterHosts wieder zur Verfügung steht.
docker-compose up -d
SystemD Service mit der Podman Container Plattform auf RHEL/CentOS
Bei RedHat Distributionen kann es vorkommen, dass die Docker Plattform nicht mehr unterstützt wird. In diesem Fall lässt das ClusterControl ebenfalls als Systemdienst registrieren und betreiben. Im Folgenden ist eine exemplarische Vorgehensweise beschrieben.
Falls noch nicht geschehen, muss Podman zunächst intstalliert werden.
yum install -y podman
Der Podman Socket muss in der Regel separat aktiviert werden. Erst dadurch bekommt das ClusterControl Zugriff auf die Schnittstelle für die Verwaltung der EdgeContainer.
systemctl enable --now podman.socket
Das zur Verfügung gestellte Softwarebundle wird idealerweise nach /opt/Robotron.RoboGate.ClusterControl.Api entpackt. Ein abweichendes Verzeichnis muss in der folgenden SystemD Service-Datei beachtet und angepasst werden.
Die SystemD Service Datei beinhaltet alle notwendigen Informationen und Konfigurationen, um ein ClusterControl zu betreiben.
/etc/systemd/system/robogate-cluster-control.service
[Unit]
Description=RoboGate ClusterControl Service
[Service]
User=root
Restart=always
Type=simple
WorkingDirectory=/opt/Robotron.RoboGate.ClusterControl.Api
ExecStart=/bin/bash /opt/Robotron.RoboGate.ClusterControl.Api/start.sh
Environment='RGCC_DOCKER_SOCKET_URI=unix:///run/podman/podman.sock'
Environment='RGCC_SSL_DISABLED=true'
Environment='RGCC_SERVE_PUBLIC=true'
Environment='RGCC_PORT=80'
Environment='RGCC_SSL_PORT=443'
# Environment='RGDC_HOST=<rgdc-host>' # optional
# Environment='RGCC_CLIENT_ID=<client_id>' # optional
# Environment='RGCC_SECRET=<secret>' # optional
[Install]
WantedBy=multi-user.target
Erst nach der Aktivierung durch folgendes Kommando wird der ClusterControl-Dienst ausgeführt und ist auch nach einem Neustart des ClusterHosts wieder verfügbar.
systemctl enable --now robogate-cluster-control
Hilfreiche Kommandos
Kommando | Beschreibung |
---|---|
| Den ClusterControl-Service neustarten. Dabei werden keine EdeGateway Instanzen neu gestartet! |
| Den ClusterControl-Service deaktivieren, falls dieser nicht mehr benötigt wird |
Abschließender Hinweis
Es ist wichtig zu beachten, dass auf jedem ClusterHost nur eine ClusterControl-Instanz gleichzeitig ausgeführt werden darf. Falls mehrere ClusterControl Instanzen gleichzeitig aktiv und ggf. mit einem DeviceCenter verbunden sind, kann es zu unerwünschten Effekten kommen, die keinen stabilen Betrieb gewährleisten.