OpenHab auf einem Cluster installieren - Teil 2
Intro
Im letzten Artikel (ist schon eine Zeit lang her) hab ich kurz beschrieben, wie ich OpenHAB auf meinem Home-Kubernetes zum laufen gebracht hab. Nun folgt der versprochene Teil 2. Meist will man bei OpenHab auch noch ein paar zusätzliche Dienste wie InfluxDB oder einfach einen Log-Viewer verwenden. Naja - ich wollte es weil es bei OpenHABian auch dabei war.
Zusätzliche Container in einem Deployment
In Kubernetes deployments gibt es die nette Eigenschaft, neben der eigentlichen Applikation auch noch zusätzliche Container mit zu deployen. Sei es zum Einrichten oder einfach um weitere Dienste hinzuzufügen.
In unserem Fall fügen wir einfach 2 Container hinzu
- influxdb als Datenbank
- frontail um die Logs zu sehen
spec:
containers:
- name: influxdb
image: influxdb
resources:
limits:
memory: 1.0Gi
cpu: "200m"
requests:
memory: 0.5Gi
env:
- name: DOCKER_INFLUXDB_INIT_USERNAME
value: 'admin'
- name: DOCKER_INFLUXDB_INIT_PASSWORD
value: 'admin'
- name: DOCKER_INFLUXDB_INIT_ORG
value: 'openhab'
- name: DOCKER_INFLUXDB_INIT_BUCKET
value: 'admin'
- name: INFLUX_TOKEN
value: 'hPoBTr6D9utjd2zIUpXE4omz6pSFckgtGsSN5DSg_1_CK3PmWQTI2MXD1dK94tPLeHCPMUMlo5dwhEiKhb4mNQ=='
ports:
- containerPort: 8086
name: influxdb
protocol: TCP
- containerPort: 8086
name: influxdb
protocol: UDP
volumeMounts:
- name: openhab-data
mountPath: /var/lib/influxdb
subPath: openhab-k8s/influxdb
- name: openhab-data
mountPath: /var/lib/influxdb2
subPath: openhab-k8s/influxdb
- name: frontail
image: welteki/frontail-openhab
resources:
limits:
memory: 1.0Gi
cpu: "200m"
requests:
memory: 0.5Gi
env:
- name: FRONTAIL_OPTS
value: '--url-path /'
ports:
- containerPort: 9001
name: frontail
protocol: TCP
volumeMounts:
- name: openhab-data
mountPath: /var/log/openhab
subPath: openhab-k8s/openhab-data/logs
readOnly: true
Natürlich muss auch für diese Ports in den Service eingetragen werden:
ports:
- port: 8086
targetPort: 8086
protocol: TCP
name: influxdb
- port: 9001
targetPort: 9001
protocol: TCP
name: logviewer
Gesamt sieht das Ganze dann so aus:
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: openhab
name: openhab
labels:
app: openhab
spec:
replicas: 1
selector:
matchLabels:
app: openhab
template:
metadata:
labels:
app: openhab
spec:
containers:
- name: openhab
image: openhab/openhab
resources:
limits:
memory: 2.0Gi
cpu: "2000m"
requests:
memory: 1.0Gi
env:
- name: USER_ID
value: '501'
- name: GROUP_ID
value: '100'
- name: LANG
value: 'en_US.UTF-8'
- name: LANGUAGE
value: 'en_US.UTF-8'
ports:
- containerPort: 8080
name: webinterface
protocol: TCP
- containerPort: 9125
name: xml-rpc
protocol: TCP
- containerPort: 9126
name: bin-rpc
protocol: TCP
- containerPort: 8101
name: ssh
protocol: TCP
- containerPort: 5007
name: lsp
protocol: TCP
volumeMounts:
- name: openhab-data
mountPath: /openhab/userdata
subPath: openhab-k8s/openhab-data
- name: openhab-data
mountPath: /openhab/conf
subPath: openhab-k8s/openhab-conf
- name: openhab-data
mountPath: /openhab/addons
subPath: openhab-k8s/openhab-addons
livenessProbe:
initialDelaySeconds: 420
periodSeconds: 20
tcpSocket:
port: 8080
- name: influxdb
image: influxdb
resources:
limits:
memory: 1.0Gi
cpu: "200m"
requests:
memory: 0.5Gi
env:
- name: DOCKER_INFLUXDB_INIT_USERNAME
value: 'admin'
- name: DOCKER_INFLUXDB_INIT_PASSWORD
value: 'admin'
- name: DOCKER_INFLUXDB_INIT_ORG
value: 'openhab'
- name: DOCKER_INFLUXDB_INIT_BUCKET
value: 'admin'
- name: INFLUX_TOKEN
value: 'hPoBTr6D9utjd2zIUpXE4omz6pSFckgtGsSN5DSg_1_CK3PmWQTI2MXD1dK94tPLeHCPMUMlo5dwhEiKhb4mNQ=='
ports:
- containerPort: 8086
name: influxdb
protocol: TCP
- containerPort: 8086
name: influxdb
protocol: UDP
volumeMounts:
- name: openhab-data
mountPath: /var/lib/influxdb
subPath: openhab-k8s/influxdb
- name: openhab-data
mountPath: /var/lib/influxdb2
subPath: openhab-k8s/influxdb
- name: frontail
image: welteki/frontail-openhab
resources:
limits:
memory: 1.0Gi
cpu: "200m"
requests:
memory: 0.5Gi
env:
- name: FRONTAIL_OPTS
value: '--url-path /'
ports:
- containerPort: 9001
name: frontail
protocol: TCP
volumeMounts:
- name: openhab-data
mountPath: /var/log/openhab
subPath: openhab-k8s/openhab-data/logs
readOnly: true
volumes:
- name: openhab-data
persistentVolumeClaim:
claimName: openhab-pvc-data
---
apiVersion: v1
kind: Service
metadata:
namespace: openhab
name: openhab-web
spec:
type: LoadBalancer
selector:
app: openhab
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: webinterface
- port: 8086
targetPort: 8086
protocol: TCP
name: influxdb
- port: 9001
targetPort: 9001
protocol: TCP
name: logviewer
- port: 9125
targetPort: 9125
name: xml-rpc
- port: 9126
targetPort: 9126
protocol: TCP
name: bin-rpc
- port: 22
targetPort: 8101
protocol: TCP
name: ssh
- port: 5007
targetPort: 5007
protocol: TCP
name: lsp
---
apiVersion: v1
kind: Service
metadata:
namespace: openhab
name: openhab-homematic-service
spec:
type: NodePort
selector:
app: openhab
ports:
- port: 9125
targetPort: 9125
protocol: UDP
name: xml-rpc
- port: 9126
targetPort: 9126
protocol: UDP
name: bin-rpc
---
apiVersion: v1
kind: Service
metadata:
namespace: openhab
name: influxdb
spec:
type: ClusterIP
selector:
app: openhab
ports:
- port: 8086
targetPort: 8086
protocol: TCP
name: influxdb
- port: 8086
targetPort: 8086
protocol: UDP
name: influxdb
InfluxDB muss natürlich in OpenHAB noch eingerichtet werden. Bitte Benutzernamen und Passwort aus den Environment-Variablen verwenden.
Anmerkung
Inzwischen bin ich von OpenHAB zu HomeAssistant gewechselt. Deswegen wird es in der Hinsicht leider keine weiteren Artikel mehr geben.