mirror of
https://github.com/auricom/home-cluster.git
synced 2025-09-17 18:24:14 +02:00
♻️ flux kustomizations
This commit is contained in:
90
kubernetes/apps/default/zigbee2mqtt/app/helmrelease.yaml
Normal file
90
kubernetes/apps/default/zigbee2mqtt/app/helmrelease.yaml
Normal file
@@ -0,0 +1,90 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/helmrelease_v2beta1.json
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2beta1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: &app zigbee2mqtt
|
||||
namespace: default
|
||||
spec:
|
||||
interval: 15m
|
||||
chart:
|
||||
spec:
|
||||
chart: app-template
|
||||
version: 1.2.0
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: bjw-s
|
||||
namespace: flux-system
|
||||
install:
|
||||
createNamespace: true
|
||||
remediation:
|
||||
retries: 3
|
||||
upgrade:
|
||||
remediation:
|
||||
retries: 3
|
||||
dependsOn:
|
||||
- name: emqx
|
||||
namespace: default
|
||||
- name: node-feature-discovery
|
||||
namespace: kube-system
|
||||
- name: rook-ceph-cluster
|
||||
namespace: rook-ceph
|
||||
values:
|
||||
fullnameOverride: *app
|
||||
image:
|
||||
repository: koenkk/zigbee2mqtt
|
||||
tag: 1.28.4
|
||||
env:
|
||||
TZ: "${TIMEZONE}"
|
||||
ZIGBEE2MQTT_DATA: /data
|
||||
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
|
||||
ingressClassName: "nginx"
|
||||
annotations:
|
||||
auth.home.arpa/enabled: "true"
|
||||
hosts:
|
||||
- host: &host "zigbee.${SECRET_CLUSTER_DOMAIN}"
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
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
|
14
kubernetes/apps/default/zigbee2mqtt/app/kustomization.yaml
Normal file
14
kubernetes/apps/default/zigbee2mqtt/app/kustomization.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://json.schemastore.org/kustomization
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: default
|
||||
resources:
|
||||
- ./helmrelease.yaml
|
||||
- ./replicationsource.yaml
|
||||
- ./restic.sops.yaml
|
||||
- ./prometheusrule.yaml
|
||||
- ./volume.yaml
|
||||
patchesStrategicMerge:
|
||||
- ./patches/env.yaml
|
||||
- ./patches/exporter.yaml
|
50
kubernetes/apps/default/zigbee2mqtt/app/patches/env.yaml
Normal file
50
kubernetes/apps/default/zigbee2mqtt/app/patches/env.yaml
Normal file
@@ -0,0 +1,50 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/helmrelease_v2beta1.json
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2beta1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: zigbee2mqtt
|
||||
namespace: default
|
||||
spec:
|
||||
values:
|
||||
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-config
|
||||
key: user_1_username
|
||||
ZIGBEE2MQTT_CONFIG_MQTT_PASSWORD:
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: emqx-config
|
||||
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
|
@@ -0,0 +1,40 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/helmrelease_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:a2c43b0ff2f2cb7f5e2d1ec9b19891c01197a55025a73f90d4249b926b34c773
|
||||
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-config
|
||||
key: user_1_username
|
||||
- name: MQTT_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: emqx-config
|
||||
key: user_1_password
|
||||
- name: PROMETHEUS_PORT
|
||||
value: &port 80
|
||||
- name: PROMETHEUS_PREFIX
|
||||
value: zigbee2mqtt_
|
||||
- name: ZIGBEE2MQTT_AVAILABILITY
|
||||
value: "True"
|
34
kubernetes/apps/default/zigbee2mqtt/app/prometheusrule.yaml
Normal file
34
kubernetes/apps/default/zigbee2mqtt/app/prometheusrule.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
# 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
|
@@ -0,0 +1,23 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/replicationsource_v1alpha1.json
|
||||
apiVersion: volsync.backube/v1alpha1
|
||||
kind: ReplicationSource
|
||||
metadata:
|
||||
name: zigbee2mqtt
|
||||
namespace: default
|
||||
spec:
|
||||
sourcePVC: zigbee2mqtt-config
|
||||
trigger:
|
||||
schedule: "0 0 * * *"
|
||||
restic:
|
||||
copyMethod: Snapshot
|
||||
pruneIntervalDays: 10
|
||||
repository: zigbee2mqtt-restic
|
||||
cacheCapacity: 2Gi
|
||||
volumeSnapshotClassName: csi-ceph-blockpool
|
||||
storageClassName: rook-ceph-block
|
||||
retain:
|
||||
hourly: 0
|
||||
daily: 10
|
||||
weekly: 0
|
||||
monthly: 0
|
35
kubernetes/apps/default/zigbee2mqtt/app/restic.sops.yaml
Normal file
35
kubernetes/apps/default/zigbee2mqtt/app/restic.sops.yaml
Normal file
@@ -0,0 +1,35 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: zigbee2mqtt-restic
|
||||
namespace: default
|
||||
type: Opaque
|
||||
stringData:
|
||||
#ENC[AES256_GCM,data:WTM0Lkqp+sxjbUgkNzAVZQnC5g==,iv:4y8R8GpLy2Ogh3Lt3v6ibVbJF7jy8K1BOGi+ONt7S5c=,tag:wRhEBfRNHp0PBvIjM60iSA==,type:comment]
|
||||
RESTIC_REPOSITORY: ENC[AES256_GCM,data:L1Pxmxv7nkAOhkfxBqaFUyjN06zDQ7Ch9zwWd6zGz1Rqy4Lz3K9vyzsteB2TAULio106cMb23UlhhybviQ==,iv:tpkWyt79gi2M1s//rClBfScw6OAOf+5gqUHVhTuB1oA=,tag:+r5keMgEuAGGJYqOnUDmMg==,type:str]
|
||||
#ENC[AES256_GCM,data:cRvGVeuDnEbJs01G+Und5ls1EgaC9Q2vj61IE/2R,iv:qSjv4bGEX9QWABhXgnCJsoj0p1kjgYaQwQX0Oyu9RHk=,tag:x8i1WXbAvdpC+Iv8pn/drw==,type:comment]
|
||||
RESTIC_PASSWORD: ENC[AES256_GCM,data:6VI/lJQFZg6hu5r0SqNAKQAQGYY=,iv:UYRMnkHB4jsXcV1tyLDTAqh6dxsd18hYWsDoSpjJarA=,tag:d6hgK6LSgu7vZbLfquKcyA==,type:str]
|
||||
#ENC[AES256_GCM,data:YIIHR5DwXv3YE9fFvNSAfrm47ZsshZMcY31LbaJ4gwXo0yOOHe6qDEc=,iv:axSMsvrIOkJFlErvw9fcAwLNSEWDh6mUU6dWZu6icIo=,tag:MDNlk43vcI9S4o6tMiWVmw==,type:comment]
|
||||
#ENC[AES256_GCM,data:8Wspw6gPIPBsumfRS/5dlZrAQQqBJEDMgcpip4a3HCfHq8SeVDv4Gl0j3hyZqUsP5af8nN69Y/9bas7z1hnIERkrb8DqYg==,iv:WqCz9vBfg1JxUEpd97J37YztSW3HkcOHa6nIJI4VK8I=,tag:+LxnOzGidF39ojPKSOrVsg==,type:comment]
|
||||
AWS_ACCESS_KEY_ID: ENC[AES256_GCM,data:I9vuuPEGS6A135zwKUNXvSIAjwk=,iv:dByy2WuuhO6OluWXYRwkdMutK33yKwOcWkR9hvY5bsg=,tag:xHU7Hbx+sxuZ9CRymA55JQ==,type:str]
|
||||
AWS_SECRET_ACCESS_KEY: ENC[AES256_GCM,data:kRdbENGS1F32JzkvktYkbfhMGBSrUpFSfyCdIpJwLOc+/2TyHAMrxA==,iv:Q+UKNT9aRo+A0KWu/FiST/4bOQKTOBJKHhpP8JXD3ao=,tag:7VE8lx2QAdNutcUj5kMNNA==,type:str]
|
||||
sops:
|
||||
kms: []
|
||||
gcp_kms: []
|
||||
azure_kv: []
|
||||
hc_vault: []
|
||||
age:
|
||||
- recipient: age1hhurqwmfvl9m3vh3hk8urulfzcdsrep2ax2neazqt435yhpamu3qj20asg
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4RE9wTDZVRlExcnVKYjVZ
|
||||
THNtblNXbGlSUitoS0FYV2k3dlg3aWZEMWxjCmZETUFGSnR0c3JZU2FHNnFneHdB
|
||||
TEdlYjJTcjNsSDQ0dmgvNWlnNWo4TWMKLS0tIGR2Q25heThUUGliY0ZicDNra1FN
|
||||
dGppaVJiME1FQnkzdVJOeTZMcjhYWE0KBrGQAYun1Zs3oyHWQ8iGvmF4hheP3md4
|
||||
3/Lc9CqEC+V1lT9On8ivEBethjt528vCyVMM5pLMRBEO6CMjlNhJ+g==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2022-12-28T07:03:26Z"
|
||||
mac: ENC[AES256_GCM,data:Ibdqa/ZFeJ1MCJIVUWkeAscsVyTVma29RYgs9Ry/UNVhogkxZxSuouvpjASfygVo6nkhUsjM1zbgwPKP6yY1kvpTtj0rCErJirS1FkhlgoCDkfeh7O+5bsInbo0UnmSVitIuyxH1FuQAyqwhnf/SAOoq9uy/K8vzwInisLsgIuU=,iv:U/PQXaFAURKE5BuvToFnP5Js+HXXm7R53/eBUgxX0Ek=,tag:kQESc+NVRepUUoF2m80NCA==,type:str]
|
||||
pgp: []
|
||||
encrypted_regex: ^(data|stringData)$
|
||||
version: 3.7.3
|
17
kubernetes/apps/default/zigbee2mqtt/app/volume.yaml
Normal file
17
kubernetes/apps/default/zigbee2mqtt/app/volume.yaml
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: zigbee2mqtt-config
|
||||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: &name zigbee2mqtt
|
||||
app.kubernetes.io/instance: *name
|
||||
snapshot.home.arpa/enabled: "true"
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
storageClassName: rook-ceph-block
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
Reference in New Issue
Block a user