From 36fc54604f4b3d63f607cb937725f85557f7024c Mon Sep 17 00:00:00 2001 From: auricom <27022259+auricom@users.noreply.github.com> Date: Sat, 28 Oct 2023 15:41:53 +0200 Subject: [PATCH] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20zwave-js-ui=20app=20templa?= =?UTF-8?q?te=20v2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../default/zwave-js-ui/app/helmrelease.yaml | 112 +++++++++++------- .../zwave-js-ui/app/kustomization.yaml | 1 - .../apps/default/zwave-js-ui/app/volsync.yaml | 12 +- .../apps/default/zwave-js-ui/app/volume.yaml | 17 --- .../rules/aeotec-zwave-device.yaml | 18 +++ .../rules/kustomization.yaml | 1 + 6 files changed, 91 insertions(+), 70 deletions(-) delete mode 100644 kubernetes/apps/default/zwave-js-ui/app/volume.yaml create mode 100644 kubernetes/apps/kube-system/node-feature-discovery/rules/aeotec-zwave-device.yaml diff --git a/kubernetes/apps/default/zwave-js-ui/app/helmrelease.yaml b/kubernetes/apps/default/zwave-js-ui/app/helmrelease.yaml index 406f2c63f..53c8e5bc4 100644 --- a/kubernetes/apps/default/zwave-js-ui/app/helmrelease.yaml +++ b/kubernetes/apps/default/zwave-js-ui/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,41 +27,66 @@ spec: uninstall: keepHistory: false values: - image: - repository: ghcr.io/zwave-js/zwave-js-ui - tag: 9.3.0 - env: - TZ: "${TIMEZONE}" + controllers: + main: + type: statefulset + annotations: + reloader.stakater.com/auto: "true" + containers: + main: + image: + repository: ghcr.io/zwave-js/zwave-js-ui + tag: 9.3.0 + env: + TZ: ${TIMEZONE} + probes: + liveness: &probes + enabled: true + custom: true + spec: + httpGet: + path: /health + port: &port 8091 + initialDelaySeconds: 0 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + readiness: *probes + startup: + enabled: false + securityContext: + privileged: true + resources: + requests: + cpu: 50m + memory: 64Mi + limits: + memory: 512Mi + pod: + nodeSelector: + aeotec.feature.node.kubernetes.io/zwave: "true" + statefulset: + volumeClaimTemplates: + - name: config + accessMode: ReadWriteOnce + size: 1Gi + storageClass: rook-ceph-block + globalMounts: + - path: /usr/src/app/store service: main: ports: http: - port: &port 8091 + port: *port websocket: - enabled: true port: 3000 serviceMonitor: main: - enabled: true - probes: - liveness: &probes - enabled: true - custom: true - spec: - httpGet: - path: /health - port: *port - initialDelaySeconds: 0 - periodSeconds: 10 - timeoutSeconds: 1 - failureThreshold: 3 - readiness: *probes - startup: - enabled: false + enabled: true # requires https://github.com/kvaster/zwavejs-prom ingress: main: enabled: true - ingressClassName: "nginx" + className: "nginx" annotations: auth.home.arpa/enabled: "true" hajimari.io/icon: mdi:z-wave @@ -70,34 +95,29 @@ spec: paths: - path: / pathType: Prefix + service: + name: main + port: http 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: - config: - enabled: true - existingClaim: zwavejs2mqtt-config - mountPath: /usr/src/app/store usb: - enabled: true type: hostPath hostPath: /dev/serial/by-id/usb-0658_0200-if00 hostPathType: CharDevice - mountPath: /dev/ttyUSB0 - resources: - requests: - cpu: 10m - memory: 100Mi - limits: - memory: 500Mi - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: feature.node.kubernetes.io/custom-zwave - operator: In - values: - - "true" + globalMounts: + - path: /dev/serial/by-id/usb-0658_0200-if00 diff --git a/kubernetes/apps/default/zwave-js-ui/app/kustomization.yaml b/kubernetes/apps/default/zwave-js-ui/app/kustomization.yaml index 7cc2de98b..29079162f 100644 --- a/kubernetes/apps/default/zwave-js-ui/app/kustomization.yaml +++ b/kubernetes/apps/default/zwave-js-ui/app/kustomization.yaml @@ -7,4 +7,3 @@ resources: - ./gatus.yaml - ./helmrelease.yaml - ./volsync.yaml - - ./volume.yaml diff --git a/kubernetes/apps/default/zwave-js-ui/app/volsync.yaml b/kubernetes/apps/default/zwave-js-ui/app/volsync.yaml index 5aae91ab0..8f4a5bdd8 100644 --- a/kubernetes/apps/default/zwave-js-ui/app/volsync.yaml +++ b/kubernetes/apps/default/zwave-js-ui/app/volsync.yaml @@ -3,19 +3,19 @@ apiVersion: external-secrets.io/v1beta1 kind: ExternalSecret metadata: - name: zwavejs2mqtt-restic + name: zwave-js-ui-restic namespace: default spec: secretStoreRef: kind: ClusterSecretStore name: onepassword-connect target: - name: zwavejs2mqtt-restic-secret + name: zwave-js-ui-restic-secret creationPolicy: Owner template: engineVersion: v2 data: - RESTIC_REPOSITORY: '{{ .REPOSITORY_TEMPLATE }}/zwavejs2mqtt' + RESTIC_REPOSITORY: '{{ .REPOSITORY_TEMPLATE }}/zwave-js-ui' RESTIC_PASSWORD: '{{ .RESTIC_PASSWORD }}' AWS_ACCESS_KEY_ID: '{{ .AWS_ACCESS_KEY_ID }}' AWS_SECRET_ACCESS_KEY: '{{ .AWS_SECRET_ACCESS_KEY }}' @@ -27,16 +27,16 @@ spec: apiVersion: volsync.backube/v1alpha1 kind: ReplicationSource metadata: - name: zwavejs2mqtt + name: zwave-js-ui namespace: default spec: - sourcePVC: zwavejs2mqtt-config + sourcePVC: config-zwave-js-ui-0 trigger: schedule: "0 7 * * *" restic: copyMethod: Snapshot pruneIntervalDays: 7 - repository: zwavejs2mqtt-restic-secret + repository: zwave-js-ui-restic-secret cacheCapacity: 10Gi volumeSnapshotClassName: csi-ceph-blockpool storageClassName: rook-ceph-block diff --git a/kubernetes/apps/default/zwave-js-ui/app/volume.yaml b/kubernetes/apps/default/zwave-js-ui/app/volume.yaml deleted file mode 100644 index f8299dbf2..000000000 --- a/kubernetes/apps/default/zwave-js-ui/app/volume.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: zwavejs2mqtt-config - namespace: default - labels: - app.kubernetes.io/name: &name zwave-js-ui - app.kubernetes.io/instance: *name - snapshot.home.arpa/enabled: "true" -spec: - accessModes: - - ReadWriteOnce - storageClassName: rook-ceph-block - resources: - requests: - storage: 1Gi diff --git a/kubernetes/apps/kube-system/node-feature-discovery/rules/aeotec-zwave-device.yaml b/kubernetes/apps/kube-system/node-feature-discovery/rules/aeotec-zwave-device.yaml new file mode 100644 index 000000000..f065c0e77 --- /dev/null +++ b/kubernetes/apps/kube-system/node-feature-discovery/rules/aeotec-zwave-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: aeotec-zwave-device +spec: + rules: + - # Aeotec Z-Stick Gen5+ + name: aeotec.zwave + labels: + aeotec.feature.node.kubernetes.io/zwave: "true" + matchFeatures: + - feature: usb.device + matchExpressions: + class: { op: In, value: ["02"] } + vendor: { op: In, value: ["0658"] } + device: { op: In, value: ["0200"] } 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 64a415746..b9ce08fc6 100644 --- a/kubernetes/apps/kube-system/node-feature-discovery/rules/kustomization.yaml +++ b/kubernetes/apps/kube-system/node-feature-discovery/rules/kustomization.yaml @@ -4,4 +4,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: kube-system resources: + - ./aeotec-zwave-device.yaml - ./google-coral-device.yaml