diff --git a/apps-kustomized/zigbee2mqtt2/.version b/apps-kustomized/zigbee2mqtt2/.version new file mode 100644 index 0000000..80c8c0b --- /dev/null +++ b/apps-kustomized/zigbee2mqtt2/.version @@ -0,0 +1 @@ +1.33.2 diff --git a/apps-kustomized/zigbee2mqtt2/backup.sh b/apps-kustomized/zigbee2mqtt2/backup.sh new file mode 100644 index 0000000..07d081b --- /dev/null +++ b/apps-kustomized/zigbee2mqtt2/backup.sh @@ -0,0 +1,6 @@ +#!/bin/bash +filename=$(date '+%Y%m%d%H%M%S').tgz +for i in $(talosctl -n 192.168.1.26 list /var/mnt/storage/zigbee2mqtt | grep 192.168 | tail -n 4 | awk '{print $2}'); do talosctl -n 192.168.1.26 read /var/mnt/storage/zigbee2mqtt/$i >$i; done +tar czf ${filename} $(talosctl -n 192.168.1.26 list /var/mnt/storage/zigbee2mqtt | grep 192.168 | tail -n 4 | awk '{print $2}' | xargs echo) +rm $(talosctl -n 192.168.1.26 list /var/mnt/storage/zigbee2mqtt | grep 192.168 | tail -n 4 | awk '{print $2}' | xargs echo) +echo copy to https://minio.service.consul/browser/backups/emlnYmVlMm1xdHQv diff --git a/apps-kustomized/zigbee2mqtt2/configmap.yaml b/apps-kustomized/zigbee2mqtt2/configmap.yaml new file mode 100644 index 0000000..1b06d53 --- /dev/null +++ b/apps-kustomized/zigbee2mqtt2/configmap.yaml @@ -0,0 +1,81 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/instance: zigbee2mqtt + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: zigbee2mqtt + app.kubernetes.io/version: 1.19.1 + helm.sh/chart: zigbee2mqtt-9.4.2 + name: zigbee2mqtt-settings + namespace: zigbee2mqtt +data: + configuration.yaml: | + advanced: + homeassistant_discovery_topic: homeassistant + homeassistant_status_topic: homeassistant/status + last_seen: ISO_8601 + log_level: debug + log_output: + - console + channel: 25 + network_key: + - 140 + - 18 + - 129 + - 36 + - 87 + - 2 + - 242 + - 222 + - 178 + - 205 + - 177 + - 160 + - 9 + - 212 + - 115 + - 122 + experimental: + new_api: true + frontend: + port: 8080 + homeassistant: true + serial: + port: 'tcp://ser2net.ser2net.svc.cluster.local:3001' + mqtt: + base_topic: zigbee2mqtt + include_device_information: true + server: 'mqtt://mosquitto.martyn.berlin' + permit_join: false + external_converters: + - ledvanceA60S.js + ledvanceA60S.js: | + const fz = require('zigbee-herdsman-converters/converters/fromZigbee'); + const tz = require('zigbee-herdsman-converters/converters/toZigbee'); + const exposes = require('zigbee-herdsman-converters/lib/exposes'); + const reporting = require('zigbee-herdsman-converters/lib/reporting'); + const extend = require('zigbee-herdsman-converters/lib/extend'); + const ota = require('zigbee-herdsman-converters/lib/ota'); + const tuya = require('zigbee-herdsman-converters/lib/tuya'); + const e = exposes.presets; + const ea = exposes.access; + + const definition = { + zigbeeModel: ['A60S RGBW'], + model: 'A60S RGBW', + vendor: 'Ledvance', + description: 'Ledvance Classic E27 Multicolor', + // Note that fromZigbee, toZigbee and exposes are missing here since we use extend here. + // Extend contains a default set of fromZigbee/toZigbee converters and expose for common device types. + // The following extends are available: + // - extend.switch + // - extend.light_onoff_brightness + // - extend.light_onoff_brightness_colortemp + // - extend.light_onoff_brightness_color + // - extend.light_onoff_brightness_colortemp_color + extend: extend.light_onoff_brightness_colortemp_color(), + }; + + module.exports = definition; diff --git a/apps-kustomized/zigbee2mqtt2/deploy.yaml b/apps-kustomized/zigbee2mqtt2/deploy.yaml new file mode 100644 index 0000000..1b53991 --- /dev/null +++ b/apps-kustomized/zigbee2mqtt2/deploy.yaml @@ -0,0 +1,96 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/instance: zigbee2mqtt + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: zigbee2mqtt + app.kubernetes.io/version: 1.19.1 + helm.sh/chart: zigbee2mqtt-9.4.2 + annotations: + configmap.reloader.stakater.com/reload: "zigbee2mqtt-settings" + name: zigbee2mqtt + namespace: zigbee2mqtt +spec: + replicas: 1 + revisionHistoryLimit: 3 + selector: + matchLabels: + app.kubernetes.io/instance: zigbee2mqtt + app.kubernetes.io/name: zigbee2mqtt + strategy: + type: Recreate + template: + metadata: + labels: + app.kubernetes.io/instance: zigbee2mqtt + app.kubernetes.io/name: zigbee2mqtt + spec: + automountServiceAccountToken: true + initContainers: + - command: + - /bin/sh + - -c + - cp /configs/ledvanceA60S.js /data/; + image: alpine:latest + imagePullPolicy: IfNotPresent + name: copy + volumeMounts: + - mountPath: /data + name: data + - mountPath: /configs/ + name: zigbee2mqtt-settings + containers: + - env: + - name: ZIGBEE2MQTT_DATA + value: /data + image: koenkk/zigbee2mqtt:1.35.2 + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 3 + initialDelaySeconds: 0 + periodSeconds: 10 + tcpSocket: + port: 8080 + timeoutSeconds: 1 + name: zigbee2mqtt + ports: + - containerPort: 8080 + name: http + protocol: TCP + readinessProbe: + failureThreshold: 3 + initialDelaySeconds: 0 + periodSeconds: 10 + tcpSocket: + port: 8080 + timeoutSeconds: 1 + securityContext: + capabilities: + add: + - NET_ADMIN + - NET_RAW + - SYS_ADMIN + privileged: true + startupProbe: + failureThreshold: 30 + initialDelaySeconds: 0 + periodSeconds: 5 + tcpSocket: + port: 8080 + timeoutSeconds: 1 + volumeMounts: + - mountPath: /data + name: data + dnsPolicy: ClusterFirstWithHostNet + enableServiceLinks: true + hostNetwork: true + serviceAccountName: default + volumes: + - configMap: + name: zigbee2mqtt-settings + name: zigbee2mqtt-settings + - name: data + persistentVolumeClaim: + claimName: zigbee2mqtt + diff --git a/apps-kustomized/zigbee2mqtt2/kustomization.yaml b/apps-kustomized/zigbee2mqtt2/kustomization.yaml new file mode 100644 index 0000000..9a71580 --- /dev/null +++ b/apps-kustomized/zigbee2mqtt2/kustomization.yaml @@ -0,0 +1,10 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: zigbee2mqtt + +resources: + - namespace.yaml + - configmap.yaml + - deploy.yaml + - pvc.yaml + - svc.yaml diff --git a/apps-kustomized/zigbee2mqtt2/namespace.yaml b/apps-kustomized/zigbee2mqtt2/namespace.yaml new file mode 100644 index 0000000..721743e --- /dev/null +++ b/apps-kustomized/zigbee2mqtt2/namespace.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: Namespace +metadata: + labels: + name: zigbee2mqtt + name: zigbee2mqtt diff --git a/apps-kustomized/zigbee2mqtt2/pvc.yaml b/apps-kustomized/zigbee2mqtt2/pvc.yaml new file mode 100644 index 0000000..29e797d --- /dev/null +++ b/apps-kustomized/zigbee2mqtt2/pvc.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: zigbee2mqtt +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn-fast + resources: + requests: + storage: 128Mi diff --git a/apps-kustomized/zigbee2mqtt2/svc.yaml b/apps-kustomized/zigbee2mqtt2/svc.yaml new file mode 100644 index 0000000..adb8ac1 --- /dev/null +++ b/apps-kustomized/zigbee2mqtt2/svc.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + external-dns.alpha.kubernetes.io/hostname: zigbee2.martyn.berlin + labels: + app.kubernetes.io/instance: zigbee2mqtt + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: zigbee2mqtt + app.kubernetes.io/version: 1.19.1 + helm.sh/chart: zigbee2mqtt-9.4.2 + name: zigbee2mqtt +spec: + ports: + - port: 80 + targetPort: 8080 + selector: + app.kubernetes.io/instance: zigbee2mqtt + app.kubernetes.io/name: zigbee2mqtt + type: LoadBalancer diff --git a/everything-app/zigbee2mqtt2.yaml b/everything-app/zigbee2mqtt2.yaml new file mode 100644 index 0000000..0f623e4 --- /dev/null +++ b/everything-app/zigbee2mqtt2.yaml @@ -0,0 +1,17 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: zigbee2mqtt2 + namespace: argocd +spec: + destination: + namespace: zigbee2mqtt2 + server: https://kubernetes.default.svc + project: infra + source: + path: apps-kustomized/zigbee2mqtt2 + repoURL: https://git.martyn.berlin/martyn/infra4talos + targetRevision: HEAD + syncPolicy: + automated: + selfHeal: true