diff --git a/kubernetes/apps/default/zigbee2mqtt/app/helmrelease.yaml b/kubernetes/apps/default/zigbee2mqtt/app/helmrelease.yaml index 881c20974..56a0eed6c 100644 --- a/kubernetes/apps/default/zigbee2mqtt/app/helmrelease.yaml +++ b/kubernetes/apps/default/zigbee2mqtt/app/helmrelease.yaml @@ -10,7 +10,7 @@ spec: chart: spec: chart: app-template - version: 1.5.1 + version: 2.0.3 sourceRef: kind: HelmRepository name: bjw-s @@ -27,67 +27,81 @@ spec: uninstall: keepHistory: false values: - fullnameOverride: *app - image: - repository: koenkk/zigbee2mqtt - tag: 1.33.1 - env: - TZ: "${TIMEZONE}" - ZIGBEE2MQTT_DATA: /data - ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_DISCOVERY_TOPIC: homeassistant - ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_LEGACY_ENTITY_ATTRIBUTES: "true" - ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_LEGACY_TRIGGERS: "true" - ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_STATUS_TOPIC: homeassistant/status - ZIGBEE2MQTT_CONFIG_ADVANCED_LAST_SEEN: ISO_8601 - ZIGBEE2MQTT_CONFIG_ADVANCED_LEGACY_API: "false" - ZIGBEE2MQTT_CONFIG_ADVANCED_LEGACY_AVAILABILITY_PAYLOAD: "false" - ZIGBEE2MQTT_CONFIG_ADVANCED_LOG_LEVEL: warn - ZIGBEE2MQTT_CONFIG_ADVANCED_LOG_OUTPUT: '["console"]' - ZIGBEE2MQTT_CONFIG_ADVANCED_NETWORK_KEY: "[204, 61, 75, 23, 44, 230, 24, 203, 53, 5, 248, 32, 50, 84, 44, 159]" - ZIGBEE2MQTT_CONFIG_AVAILABILITY_ACTIVE_TIMEOUT: 60 - ZIGBEE2MQTT_CONFIG_AVAILABILITY_PASSIVE_TIMEOUT: 2000 - ZIGBEE2MQTT_CONFIG_DEVICE_OPTIONS_LEGACY: "false" - ZIGBEE2MQTT_CONFIG_DEVICE_OPTIONS_RETAIN: "true" - ZIGBEE2MQTT_CONFIG_EXPERIMENTAL_NEW_API: "true" - ZIGBEE2MQTT_CONFIG_FRONTEND_PORT: 8080 - ZIGBEE2MQTT_CONFIG_FRONTEND_URL: "https://zigbee.${SECRET_CLUSTER_DOMAIN}" - ZIGBEE2MQTT_CONFIG_HOMEASSISTANT: "true" - ZIGBEE2MQTT_CONFIG_MQTT_INCLUDE_DEVICE_INFORMATION: "true" - ZIGBEE2MQTT_CONFIG_MQTT_KEEPALIVE: 60 - ZIGBEE2MQTT_CONFIG_MQTT_REJECT_UNAUTHORIZED: "true" - ZIGBEE2MQTT_CONFIG_MQTT_SERVER: "mqtt://emqx.default.svc.cluster.local." - ZIGBEE2MQTT_CONFIG_MQTT_VERSION: 5 - ZIGBEE2MQTT_CONFIG_MQTT_USER: - valueFrom: - secretKeyRef: - name: emqx-secret - key: user_1_username - ZIGBEE2MQTT_CONFIG_MQTT_PASSWORD: - valueFrom: - secretKeyRef: - name: emqx-secret - key: user_1_password - ZIGBEE2MQTT_CONFIG_PERMIT_JOIN: "false" - ZIGBEE2MQTT_CONFIG_SERIAL_PORT: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0 - # ZIGBEE2MQTT_CONFIG_DEVICES: devices.yaml - # ZIGBEE2MQTT_CONFIG_GROUPS: groups.yaml + controllers: + main: + type: statefulset + annotations: + reloader.stakater.com/auto: "true" + containers: + main: + image: + repository: ghcr.io/koenkk/zigbee2mqtt + tag: 1.33.1 + pullPolicy: IfNotPresent + env: + TZ: "${TIMEZONE}" + ZIGBEE2MQTT_DATA: /config + ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_DISCOVERY_TOPIC: homeassistant + ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_LEGACY_ENTITY_ATTRIBUTES: "true" + ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_LEGACY_TRIGGERS: "true" + ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_STATUS_TOPIC: homeassistant/status + ZIGBEE2MQTT_CONFIG_ADVANCED_LAST_SEEN: ISO_8601 + ZIGBEE2MQTT_CONFIG_ADVANCED_LEGACY_API: "false" + ZIGBEE2MQTT_CONFIG_ADVANCED_LEGACY_AVAILABILITY_PAYLOAD: "false" + ZIGBEE2MQTT_CONFIG_ADVANCED_LOG_LEVEL: warn + ZIGBEE2MQTT_CONFIG_ADVANCED_LOG_OUTPUT: '["console"]' + ZIGBEE2MQTT_CONFIG_ADVANCED_NETWORK_KEY: "[204, 61, 75, 23, 44, 230, 24, 203, 53, 5, 248, 32, 50, 84, 44, 159]" + ZIGBEE2MQTT_CONFIG_AVAILABILITY_ACTIVE_TIMEOUT: 60 + ZIGBEE2MQTT_CONFIG_AVAILABILITY_PASSIVE_TIMEOUT: 2000 + ZIGBEE2MQTT_CONFIG_DEVICE_OPTIONS_LEGACY: "false" + ZIGBEE2MQTT_CONFIG_DEVICE_OPTIONS_RETAIN: "true" + ZIGBEE2MQTT_CONFIG_EXPERIMENTAL_NEW_API: "true" + ZIGBEE2MQTT_CONFIG_FRONTEND_PORT: 8080 + ZIGBEE2MQTT_CONFIG_FRONTEND_URL: "https://zigbee.${SECRET_CLUSTER_DOMAIN}" + ZIGBEE2MQTT_CONFIG_HOMEASSISTANT: "true" + ZIGBEE2MQTT_CONFIG_MQTT_INCLUDE_DEVICE_INFORMATION: "true" + ZIGBEE2MQTT_CONFIG_MQTT_KEEPALIVE: 60 + ZIGBEE2MQTT_CONFIG_MQTT_REJECT_UNAUTHORIZED: "true" + ZIGBEE2MQTT_CONFIG_MQTT_SERVER: "mqtt://emqx.default.svc.cluster.local." + ZIGBEE2MQTT_CONFIG_MQTT_VERSION: 5 + ZIGBEE2MQTT_CONFIG_MQTT_USER: + valueFrom: + secretKeyRef: + name: emqx-secret + key: user_1_username + ZIGBEE2MQTT_CONFIG_MQTT_PASSWORD: + valueFrom: + secretKeyRef: + name: emqx-secret + key: user_1_password + ZIGBEE2MQTT_CONFIG_PERMIT_JOIN: "false" + ZIGBEE2MQTT_CONFIG_SERIAL_PORT: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0 + # ZIGBEE2MQTT_CONFIG_DEVICES: devices.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: main: ports: http: port: &port 8080 - metrics: - enabled: true - port: 80 - serviceMonitor: - main: - enabled: true - endpoints: - - port: metrics - scheme: http - path: /metrics - interval: 1m - scrapeTimeout: 10s ingress: main: enabled: true @@ -99,27 +113,17 @@ spec: - host: &host "zigbee.${SECRET_CLUSTER_DOMAIN}" paths: - path: / - pathType: Prefix + service: + name: main + port: http tls: - hosts: - *host - securityContext: - privileged: true persistence: - config: - enabled: true - existingClaim: zigbee2mqtt-config - mountPath: "/data" usb: enabled: true type: hostPath hostPath: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0 hostPathType: CharDevice - nodeSelector: - feature.node.kubernetes.io/custom-zigbee: "true" - resources: - requests: - memory: 100Mi - cpu: 100m - limits: - memory: 700Mi + globalMounts: + - path: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0 diff --git a/kubernetes/apps/default/zigbee2mqtt/app/kustomization.yaml b/kubernetes/apps/default/zigbee2mqtt/app/kustomization.yaml index 80e96f462..7f3164b4e 100644 --- a/kubernetes/apps/default/zigbee2mqtt/app/kustomization.yaml +++ b/kubernetes/apps/default/zigbee2mqtt/app/kustomization.yaml @@ -5,8 +5,5 @@ namespace: default resources: - ./gatus.yaml - ./helmrelease.yaml -- ./prometheusrule.yaml - ./volsync.yaml - ./volume.yaml -patches: -- path: ./patches/exporter.yaml diff --git a/kubernetes/apps/default/zigbee2mqtt/app/patches/exporter.yaml b/kubernetes/apps/default/zigbee2mqtt/app/patches/exporter.yaml deleted file mode 100644 index fcee38a45..000000000 --- a/kubernetes/apps/default/zigbee2mqtt/app/patches/exporter.yaml +++ /dev/null @@ -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" diff --git a/kubernetes/apps/default/zigbee2mqtt/app/prometheusrule.yaml b/kubernetes/apps/default/zigbee2mqtt/app/prometheusrule.yaml deleted file mode 100644 index eef1417cd..000000000 --- a/kubernetes/apps/default/zigbee2mqtt/app/prometheusrule.yaml +++ /dev/null @@ -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 diff --git a/kubernetes/apps/default/zigbee2mqtt/app/volsync.yaml b/kubernetes/apps/default/zigbee2mqtt/app/volsync.yaml index 734c73e7d..c40b7c2b8 100644 --- a/kubernetes/apps/default/zigbee2mqtt/app/volsync.yaml +++ b/kubernetes/apps/default/zigbee2mqtt/app/volsync.yaml @@ -30,7 +30,7 @@ metadata: name: zigbee2mqtt namespace: default spec: - sourcePVC: zigbee2mqtt-config + sourcePVC: config-zigbee2mqtt-0 trigger: schedule: "0 7 * * *" restic: diff --git a/kubernetes/apps/default/zwave-js-ui/app/helmrelease.yaml b/kubernetes/apps/default/zwave-js-ui/app/helmrelease.yaml index 53c8e5bc4..c52051b5c 100644 --- a/kubernetes/apps/default/zwave-js-ui/app/helmrelease.yaml +++ b/kubernetes/apps/default/zwave-js-ui/app/helmrelease.yaml @@ -101,19 +101,6 @@ spec: tls: - hosts: - *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: usb: type: hostPath diff --git a/kubernetes/apps/kube-system/node-feature-discovery/app/helmrelease.yaml b/kubernetes/apps/kube-system/node-feature-discovery/app/helmrelease.yaml index da7b9eb61..a1514f31f 100644 --- a/kubernetes/apps/kube-system/node-feature-discovery/app/helmrelease.yaml +++ b/kubernetes/apps/kube-system/node-feature-discovery/app/helmrelease.yaml @@ -52,18 +52,6 @@ spec: - vendor - device custom: - - name: "zwave" - matchOn: - - usbId: - class: ["02"] - vendor: ["0658"] - device: ["0200"] - - name: "zigbee" - matchOn: - - usbId: - class: ["ff"] - vendor: ["1a86"] - device: ["7523"] - name: "rflink" matchOn: - usbId: diff --git a/kubernetes/apps/kube-system/node-feature-discovery/rules/kustomization.yaml b/kubernetes/apps/kube-system/node-feature-discovery/rules/kustomization.yaml index b9ce08fc6..e79db879e 100644 --- a/kubernetes/apps/kube-system/node-feature-discovery/rules/kustomization.yaml +++ b/kubernetes/apps/kube-system/node-feature-discovery/rules/kustomization.yaml @@ -6,3 +6,4 @@ namespace: kube-system resources: - ./aeotec-zwave-device.yaml - ./google-coral-device.yaml + - ./zzh-zigbee-device.yaml diff --git a/kubernetes/apps/kube-system/node-feature-discovery/rules/zzh-zigbee-device.yaml b/kubernetes/apps/kube-system/node-feature-discovery/rules/zzh-zigbee-device.yaml new file mode 100644 index 000000000..995598511 --- /dev/null +++ b/kubernetes/apps/kube-system/node-feature-discovery/rules/zzh-zigbee-device.yaml @@ -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"] }