Zum Hauptinhalt springen
  1. Beiträge/
  2. Kleines Homelab/
  3. k3s-prod: Kubernetes Cluster Konfiguration und Anwendungsbereitstellung/

Mosquitto

Inhaltsverzeichnis

Mosquitto
#

Deployment
#

Argo Deployment

Quelle
#

Die Anwendung wird als generisches app-template Helm-Chart von BJW-S Labs bereitgestellt. Das verwendete Docker-Image ist eclipse-mosquitto.

Dokumentation
#

Die offizielle Dokumentation von Mosquitto ist unter mosquitto.org/documentation/ zu finden.

Funktion
#

Mosquitto ist ein MQTT-Broker, der als zentrale Vermittlungsstelle für Nachrichten zwischen Geräten fungiert. Geräte (Clients) können Nachrichten zu bestimmten Themen (Topics) veröffentlichen (Publish) oder Themen abonnieren (Subscribe), um Nachrichten zu empfangen. Dies entkoppelt die Geräte voneinander und ermöglicht eine flexible und skalierbare IoT-Architektur.

Lokale Anpassungen
#

Die Konfiguration erfolgt über die values.yaml-Datei, in der die mosquitto.conf direkt als ConfigMap definiert ist.

Wichtige Einstellungen
#

  • LoadBalancer: Der Broker ist über einen LoadBalancer-Service auf Port 1883 (MQTT) und 8883 (MQTT über WebSockets) im lokalen Netzwerk erreichbar.
  • Anonymer Zugriff: Der Broker ist so konfiguriert, dass er anonyme Verbindungen ohne Benutzername/Passwort erlaubt.
  • Bridges: Es sind mehrere MQTT-Bridges zum Cloud-Dienst von Zendure (mqtteu.zen-iot.com) konfiguriert. Diese Bridges leiten Nachrichten von spezifischen Zendure-Geräten (SolarFlow) in den lokalen MQTT-Broker weiter und umgekehrt.
  • Persistenz: Die Mosquitto-Datenbank, die z.B. “retained messages” speichert, wird auf einem Persistent Volume gespeichert.

Installation
#

Die Anwendung wird mittels Kustomize und Helm durch ArgoCD im Kubernetes-Cluster bereitgestellt. Die Konfiguration befindet sich im apps/mosquitto-Verzeichnis. Eine manuelle Installation kann mit folgendem Befehl durchgeführt werden:

1kubectl kustomize --enable-helm apps/mosquitto | kubectl apply -n mosquitto -f -

Abhängigkeiten
#

  • Metallb: Wird benötigt, um dem MQTT-Service eine externe IP-Adresse zuzuweisen.
  • Longhorn/NFS: Ein Storage-Provider wird für das Persistent Volume benötigt.
Per E-Mail antworten
Fabrice Kirchner
Autor
Fabrice Kirchner
stolzer Vater, Nerd, Admin