⬆️ zigbee2mqtt app template v2

This commit is contained in:
auricom
2023-10-28 16:20:49 +02:00
parent 7ce1a9b5ca
commit b0d53bed08
9 changed files with 96 additions and 175 deletions

View File

@@ -10,7 +10,7 @@ spec:
chart: chart:
spec: spec:
chart: app-template chart: app-template
version: 1.5.1 version: 2.0.3
sourceRef: sourceRef:
kind: HelmRepository kind: HelmRepository
name: bjw-s name: bjw-s
@@ -27,13 +27,20 @@ spec:
uninstall: uninstall:
keepHistory: false keepHistory: false
values: values:
fullnameOverride: *app controllers:
main:
type: statefulset
annotations:
reloader.stakater.com/auto: "true"
containers:
main:
image: image:
repository: koenkk/zigbee2mqtt repository: ghcr.io/koenkk/zigbee2mqtt
tag: 1.33.1 tag: 1.33.1
pullPolicy: IfNotPresent
env: env:
TZ: "${TIMEZONE}" TZ: "${TIMEZONE}"
ZIGBEE2MQTT_DATA: /data ZIGBEE2MQTT_DATA: /config
ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_DISCOVERY_TOPIC: homeassistant ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_DISCOVERY_TOPIC: homeassistant
ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_LEGACY_ENTITY_ATTRIBUTES: "true" ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_LEGACY_ENTITY_ATTRIBUTES: "true"
ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_LEGACY_TRIGGERS: "true" ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_LEGACY_TRIGGERS: "true"
@@ -71,23 +78,30 @@ spec:
ZIGBEE2MQTT_CONFIG_SERIAL_PORT: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0 ZIGBEE2MQTT_CONFIG_SERIAL_PORT: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
# ZIGBEE2MQTT_CONFIG_DEVICES: devices.yaml # ZIGBEE2MQTT_CONFIG_DEVICES: devices.yaml
# ZIGBEE2MQTT_CONFIG_GROUPS: groups.yaml # ZIGBEE2MQTT_CONFIG_GROUPS: groups.yaml
securityContext:
privileged: true
resources:
requests:
cpu: 10m
memory: 128Mi
limits:
memory: 512Mi
pod:
nodeSelector:
zzh.feature.node.kubernetes.io/zigbee: "true"
statefulset:
volumeClaimTemplates:
- name: config
accessMode: ReadWriteOnce
size: 1Gi
storageClass: rook-ceph-block
globalMounts:
- path: /config
service: service:
main: main:
ports: ports:
http: http:
port: &port 8080 port: &port 8080
metrics:
enabled: true
port: 80
serviceMonitor:
main:
enabled: true
endpoints:
- port: metrics
scheme: http
path: /metrics
interval: 1m
scrapeTimeout: 10s
ingress: ingress:
main: main:
enabled: true enabled: true
@@ -99,27 +113,17 @@ spec:
- host: &host "zigbee.${SECRET_CLUSTER_DOMAIN}" - host: &host "zigbee.${SECRET_CLUSTER_DOMAIN}"
paths: paths:
- path: / - path: /
pathType: Prefix service:
name: main
port: http
tls: tls:
- hosts: - hosts:
- *host - *host
securityContext:
privileged: true
persistence: persistence:
config:
enabled: true
existingClaim: zigbee2mqtt-config
mountPath: "/data"
usb: usb:
enabled: true enabled: true
type: hostPath type: hostPath
hostPath: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0 hostPath: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
hostPathType: CharDevice hostPathType: CharDevice
nodeSelector: globalMounts:
feature.node.kubernetes.io/custom-zigbee: "true" - path: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
resources:
requests:
memory: 100Mi
cpu: 100m
limits:
memory: 700Mi

View File

@@ -5,8 +5,5 @@ namespace: default
resources: resources:
- ./gatus.yaml - ./gatus.yaml
- ./helmrelease.yaml - ./helmrelease.yaml
- ./prometheusrule.yaml
- ./volsync.yaml - ./volsync.yaml
- ./volume.yaml - ./volume.yaml
patches:
- path: ./patches/exporter.yaml

View File

@@ -1,40 +0,0 @@
---
# yaml-language-server: $schema=https://raw.githubusercontent.com/fluxcd-community/flux2-schemas/main/helmrelease-helm-v2beta1.json
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: &app zigbee2mqtt
namespace: default
spec:
values:
additionalContainers:
exporter:
name: exporter
image: docker.io/kpetrem/mqtt-exporter:latest@sha256:fbff8472a18239297e699955b43695f714e4fa6fdd7a36875a65375e2dfa8e67
env:
- name: LOG_LEVEL
value: DEBUG
- name: LOG_MQTT_MESSAGE
value: "True"
- name: MQTT_ADDRESS
value: emqx.default.svc.cluster.local
- name: MQTT_TOPIC
value: "zigbee2mqtt/#"
- name: MQTT_V5_PROTOCOL
value: "True"
- name: MQTT_USERNAME
valueFrom:
secretKeyRef:
name: emqx-secret
key: user_1_username
- name: MQTT_PASSWORD
valueFrom:
secretKeyRef:
name: emqx-secret
key: user_1_password
- name: PROMETHEUS_PORT
value: &port 80
- name: PROMETHEUS_PREFIX
value: zigbee2mqtt_
- name: ZIGBEE2MQTT_AVAILABILITY
value: "True"

View File

@@ -1,34 +0,0 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/prometheusrule_v1.json
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: zigbee2mqtt-exporter
namespace: default
spec:
groups:
- name: zigbee2mqtt-exporter.rules
rules:
- alert: Zigbee2MqttExporterAbsent
annotations:
summary: Zigbee2Mqtt Exporter has disappeared from Prometheus target discovery.
expr: absent(up{job="zigbee2mqtt"} == 1)
for: 15m
labels:
severity: critical
# - alert: Zigbee2MqttUnavailable
# annotations:
# summary: The zigbee device connection is lost,
# connection on topic {{$labels.topic}} is down.
# expr: zigbee2mqtt_zigbee_availability == 0
# for: 60m
# labels:
# severity: critical
- alert: Zigbee2MqttBatteryLow
annotations:
summary: The zigbee device battery level is low,
battery level on topic {{$labels.topic}} is at {{$value}}%.
expr: zigbee2mqtt_battery < 10
for: 60m
labels:
severity: warning

View File

@@ -30,7 +30,7 @@ metadata:
name: zigbee2mqtt name: zigbee2mqtt
namespace: default namespace: default
spec: spec:
sourcePVC: zigbee2mqtt-config sourcePVC: config-zigbee2mqtt-0
trigger: trigger:
schedule: "0 7 * * *" schedule: "0 7 * * *"
restic: restic:

View File

@@ -101,19 +101,6 @@ spec:
tls: tls:
- hosts: - hosts:
- *host - *host
pod:
nodeSelector:
aeotec.feature.node.kubernetes.io/zwave: "true"
statefulset:
volumeClaimTemplates:
- name: config
accessMode: ReadWriteOnce
size: 1Gi
storageClass: ceph-block
globalMounts:
- path: /usr/src/app/store
securityContext:
privileged: true
persistence: persistence:
usb: usb:
type: hostPath type: hostPath

View File

@@ -52,18 +52,6 @@ spec:
- vendor - vendor
- device - device
custom: custom:
- name: "zwave"
matchOn:
- usbId:
class: ["02"]
vendor: ["0658"]
device: ["0200"]
- name: "zigbee"
matchOn:
- usbId:
class: ["ff"]
vendor: ["1a86"]
device: ["7523"]
- name: "rflink" - name: "rflink"
matchOn: matchOn:
- usbId: - usbId:

View File

@@ -6,3 +6,4 @@ namespace: kube-system
resources: resources:
- ./aeotec-zwave-device.yaml - ./aeotec-zwave-device.yaml
- ./google-coral-device.yaml - ./google-coral-device.yaml
- ./zzh-zigbee-device.yaml

View File

@@ -0,0 +1,18 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/nfd.k8s-sigs.io/nodefeaturerule_v1alpha1.json
apiVersion: nfd.k8s-sigs.io/v1alpha1
kind: NodeFeatureRule
metadata:
name: zzh-zigbee-device
spec:
rules:
- # zzh! CC2652R Multiprotocol RF Stick
name: zzh.zigbee
labels:
zzh.feature.node.kubernetes.io/zigbee: "true"
matchFeatures:
- feature: usb.device
matchExpressions:
class: { op: In, value: ["ff"] }
vendor: { op: In, value: ["1a86"] }
device: { op: In, value: ["7523"] }