mirror of
https://github.com/auricom/home-cluster.git
synced 2025-09-17 18:24:14 +02:00
⬆️ home-assistant app-template v2
This commit is contained in:
@@ -11,7 +11,7 @@ data:
|
|||||||
endpoints:
|
endpoints:
|
||||||
- name: home-assistant
|
- name: home-assistant
|
||||||
group: internal
|
group: internal
|
||||||
url: https://home-assistant.${SECRET_CLUSTER_DOMAIN}
|
url: https://hass.${SECRET_CLUSTER_DOMAIN}
|
||||||
interval: 1m
|
interval: 1m
|
||||||
client:
|
client:
|
||||||
insecure: true
|
insecure: true
|
||||||
|
@@ -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,24 +27,61 @@ spec:
|
|||||||
uninstall:
|
uninstall:
|
||||||
keepHistory: false
|
keepHistory: false
|
||||||
values:
|
values:
|
||||||
initContainers:
|
defaultPodOptions:
|
||||||
01-init-db:
|
securityContext:
|
||||||
image: ghcr.io/auricom/postgres-init:15.4
|
runAsUser: 0
|
||||||
imagePullPolicy: IfNotPresent
|
runAsGroup: 0
|
||||||
envFrom: &envFrom
|
fsGroup: 0
|
||||||
- secretRef:
|
fsGroupChangePolicy: OnRootMismatch
|
||||||
name: home-assistant-secret
|
nodeSelector:
|
||||||
controller:
|
nodo.feature.node.kubernetes.io/rflink: "true"
|
||||||
annotations:
|
controllers:
|
||||||
reloader.stakater.com/auto: "true"
|
main:
|
||||||
image:
|
type: statefulset
|
||||||
repository: ghcr.io/onedr0p/home-assistant
|
annotations:
|
||||||
tag: 2023.10.5@sha256:24ce89830111fe19bb2df00621dfd631fd20abe07a453ea60c2027890d5b934e
|
reloader.stakater.com/auto: "true"
|
||||||
env:
|
initContainers:
|
||||||
TZ: "${TIMEZONE}"
|
init-db:
|
||||||
POSTGRES_HOST: ${POSTGRES_HOST}
|
image:
|
||||||
POSTGRES_DB: home_assistant
|
repository: ghcr.io/auricom/postgres-init
|
||||||
envFrom: *envFrom
|
tag: 15.4@sha256:83e1abf06be5741bdfb8cb53fc03a1ade6e6b5ec7b92a8aac0c69ba5dc7e51f0
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
envFrom: &envFrom
|
||||||
|
- secretRef:
|
||||||
|
name: home-assistant-secret
|
||||||
|
containers:
|
||||||
|
main:
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/onedr0p/home-assistant
|
||||||
|
tag: 2023.10.5@sha256:24ce89830111fe19bb2df00621dfd631fd20abe07a453ea60c2027890d5b934e
|
||||||
|
env:
|
||||||
|
TZ: "${TIMEZONE}"
|
||||||
|
POSTGRES_HOST: ${POSTGRES_HOST}
|
||||||
|
POSTGRES_DB: home_assistant
|
||||||
|
envFrom: *envFrom
|
||||||
|
probes:
|
||||||
|
liveness:
|
||||||
|
enabled: false
|
||||||
|
readiness:
|
||||||
|
enabled: false
|
||||||
|
startup:
|
||||||
|
enabled: false
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 10m
|
||||||
|
memory: 128Mi
|
||||||
|
limits:
|
||||||
|
memory: 1Gi
|
||||||
|
securityContext:
|
||||||
|
privileged: true
|
||||||
|
statefulset:
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- name: config
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
size: 10Gi
|
||||||
|
storageClass: rook-ceph-block
|
||||||
|
globalMounts:
|
||||||
|
- path: /config
|
||||||
service:
|
service:
|
||||||
main:
|
main:
|
||||||
type: LoadBalancer
|
type: LoadBalancer
|
||||||
@@ -56,61 +93,24 @@ spec:
|
|||||||
ingress:
|
ingress:
|
||||||
main:
|
main:
|
||||||
enabled: true
|
enabled: true
|
||||||
ingressClassName: "nginx"
|
className: "nginx"
|
||||||
annotations:
|
annotations:
|
||||||
hajimari.io/icon: mdi:home-assistant
|
hajimari.io/icon: mdi:home-assistant
|
||||||
hosts:
|
hosts:
|
||||||
- host: &host "hass.${SECRET_CLUSTER_DOMAIN}"
|
- host: &host "hass.${SECRET_CLUSTER_DOMAIN}"
|
||||||
paths:
|
paths:
|
||||||
- path: /
|
- path: /
|
||||||
pathType: Prefix
|
service:
|
||||||
- host: &host2 "home-assistant.${SECRET_CLUSTER_DOMAIN}"
|
name: main
|
||||||
paths:
|
port: http
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- *host
|
- *host
|
||||||
- *host2
|
|
||||||
probes:
|
|
||||||
liveness:
|
|
||||||
enabled: false
|
|
||||||
readiness:
|
|
||||||
enabled: false
|
|
||||||
startup:
|
|
||||||
enabled: false
|
|
||||||
podSecurityContext:
|
|
||||||
runAsUser: 0
|
|
||||||
runAsGroup: 0
|
|
||||||
fsGroup: 0
|
|
||||||
fsGroupChangePolicy: "OnRootMismatch"
|
|
||||||
securityContext:
|
|
||||||
privileged: true
|
|
||||||
podAnnotations:
|
|
||||||
secret.reloader.stakater.com/reload: *app
|
|
||||||
persistence:
|
persistence:
|
||||||
config:
|
|
||||||
enabled: true
|
|
||||||
existingClaim: hass-config
|
|
||||||
usb:
|
usb:
|
||||||
enabled: true
|
enabled: true
|
||||||
type: hostPath
|
type: hostPath
|
||||||
hostPath: /dev/serial/by-id/usb-Arduino__www.arduino.cc__0042_5503731323735171A241-if00
|
hostPath: /dev/serial/by-id/usb-Arduino__www.arduino.cc__0042_5503731323735171A241-if00
|
||||||
hostPathType: CharDevice
|
hostPathType: CharDevice
|
||||||
mountPath: /dev/ttyUSB0
|
globalMounts:
|
||||||
resources:
|
- path: /dev/ttyUSB0
|
||||||
requests:
|
|
||||||
cpu: 10m
|
|
||||||
memory: 100Mi
|
|
||||||
limits:
|
|
||||||
memory: 750Mi
|
|
||||||
affinity:
|
|
||||||
nodeAffinity:
|
|
||||||
requiredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
nodeSelectorTerms:
|
|
||||||
- matchExpressions:
|
|
||||||
- {
|
|
||||||
key: "feature.node.kubernetes.io/custom-rflink",
|
|
||||||
operator: In,
|
|
||||||
values: ["true"],
|
|
||||||
}
|
|
||||||
|
@@ -8,6 +8,3 @@ resources:
|
|||||||
- ./helmrelease.yaml
|
- ./helmrelease.yaml
|
||||||
- ./podmonitor.yaml
|
- ./podmonitor.yaml
|
||||||
- ./volsync.yaml
|
- ./volsync.yaml
|
||||||
- ./volume.yaml
|
|
||||||
patches:
|
|
||||||
- path: ./patches/addons.yaml
|
|
||||||
|
@@ -1,43 +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: home-assistant
|
|
||||||
namespace: default
|
|
||||||
spec:
|
|
||||||
values:
|
|
||||||
addons:
|
|
||||||
codeserver:
|
|
||||||
enabled: true
|
|
||||||
image:
|
|
||||||
repository: ghcr.io/coder/code-server
|
|
||||||
tag: 4.18.0
|
|
||||||
env:
|
|
||||||
TZ: ${TIMEZONE}
|
|
||||||
GIT_SSH_COMMAND: "ssh -i /config/.ssh/id_rsa -o IdentitiesOnly=yes"
|
|
||||||
workingDir: /config
|
|
||||||
args:
|
|
||||||
- --auth
|
|
||||||
- "none"
|
|
||||||
- --user-data-dir
|
|
||||||
- "/config/.vscode"
|
|
||||||
- --extensions-dir
|
|
||||||
- "/config/.vscode"
|
|
||||||
ingress:
|
|
||||||
enabled: true
|
|
||||||
ingressClassName: nginx
|
|
||||||
annotations:
|
|
||||||
hajimari.io/appName: "Hass Config"
|
|
||||||
hajimari.io/icon: cib:visual-studio-code
|
|
||||||
hosts:
|
|
||||||
- host: &host hass-code.${SECRET_CLUSTER_DOMAIN}
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- *host
|
|
||||||
volumeMounts:
|
|
||||||
- name: config
|
|
||||||
mountPath: /config
|
|
@@ -30,7 +30,7 @@ metadata:
|
|||||||
name: home-assistant
|
name: home-assistant
|
||||||
namespace: default
|
namespace: default
|
||||||
spec:
|
spec:
|
||||||
sourcePVC: hass-config
|
sourcePVC: config-home-assistant-0
|
||||||
trigger:
|
trigger:
|
||||||
schedule: "0 7 * * *"
|
schedule: "0 7 * * *"
|
||||||
restic:
|
restic:
|
||||||
|
@@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: hass-config
|
|
||||||
namespace: default
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: &name home-assistant
|
|
||||||
app.kubernetes.io/instance: *name
|
|
||||||
snapshot.home.arpa/enabled: "true"
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
storageClassName: rook-ceph-block
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 10Gi
|
|
22
kubernetes/apps/default/home-assistant/code/gatus.yaml
Normal file
22
kubernetes/apps/default/home-assistant/code/gatus.yaml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: hass-code-gatus-ep
|
||||||
|
namespace: default
|
||||||
|
labels:
|
||||||
|
gatus.io/enabled: "true"
|
||||||
|
data:
|
||||||
|
config.yaml: |
|
||||||
|
endpoints:
|
||||||
|
- name: hass-code
|
||||||
|
group: internal
|
||||||
|
url: https://hass-code.${SECRET_CLUSTER_DOMAIN}
|
||||||
|
interval: 1m
|
||||||
|
client:
|
||||||
|
insecure: true
|
||||||
|
conditions:
|
||||||
|
- "[STATUS] == 200"
|
||||||
|
alerts:
|
||||||
|
- type: pushover
|
||||||
|
|
88
kubernetes/apps/default/home-assistant/code/helmrelease.yaml
Normal file
88
kubernetes/apps/default/home-assistant/code/helmrelease.yaml
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
---
|
||||||
|
# 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: home-assistant-code
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
interval: 30m
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: app-template
|
||||||
|
version: 2.0.3
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: bjw-s
|
||||||
|
namespace: flux-system
|
||||||
|
maxHistory: 2
|
||||||
|
install:
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
upgrade:
|
||||||
|
cleanupOnFail: true
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
uninstall:
|
||||||
|
keepHistory: false
|
||||||
|
dependsOn:
|
||||||
|
- name: home-assistant
|
||||||
|
namespace: default
|
||||||
|
values:
|
||||||
|
controllers:
|
||||||
|
main:
|
||||||
|
annotations:
|
||||||
|
reloader.stakater.com/auto: "true"
|
||||||
|
containers:
|
||||||
|
main:
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/coder/code-server
|
||||||
|
tag: 4.18.0
|
||||||
|
env:
|
||||||
|
TZ: ${TIMEZONE}
|
||||||
|
GIT_SSH_COMMAND: "ssh -i /config/.ssh/id_rsa -o IdentitiesOnly=yes"
|
||||||
|
args:
|
||||||
|
- --auth
|
||||||
|
- "none"
|
||||||
|
- --user-data-dir
|
||||||
|
- "/config/.vscode"
|
||||||
|
- --extensions-dir
|
||||||
|
- "/config/.vscode"
|
||||||
|
- "--port"
|
||||||
|
- "8888"
|
||||||
|
- /config
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 10m
|
||||||
|
memory: 128Mi
|
||||||
|
limits:
|
||||||
|
memory: 1Gi
|
||||||
|
pod:
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 568
|
||||||
|
runAsGroup: 568
|
||||||
|
fsGroup: 568
|
||||||
|
fsGroupChangePolicy: OnRootMismatch
|
||||||
|
service:
|
||||||
|
main:
|
||||||
|
ports:
|
||||||
|
http:
|
||||||
|
port: 8888
|
||||||
|
ingress:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
className: internal
|
||||||
|
hosts:
|
||||||
|
- host: &host hass-code.${SECRET_CLUSTER_DOMAIN}
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
service:
|
||||||
|
name: main
|
||||||
|
port: http
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- *host
|
||||||
|
persistence:
|
||||||
|
config:
|
||||||
|
enabled: true
|
||||||
|
existingClaim: config-home-assistant-0
|
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://json.schemastore.org/kustomization
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: default
|
||||||
|
resources:
|
||||||
|
- ./gatus.yaml
|
||||||
|
- ./helmrelease.yaml
|
@@ -17,11 +17,26 @@ spec:
|
|||||||
sourceRef:
|
sourceRef:
|
||||||
kind: GitRepository
|
kind: GitRepository
|
||||||
name: home-ops-kubernetes
|
name: home-ops-kubernetes
|
||||||
healthChecks:
|
wait: false
|
||||||
- apiVersion: helm.toolkit.fluxcd.io/v2beta1
|
|
||||||
kind: HelmRelease
|
|
||||||
name: home-assistant
|
|
||||||
namespace: default
|
|
||||||
interval: 30m
|
interval: 30m
|
||||||
retryInterval: 1m
|
retryInterval: 1m
|
||||||
timeout: 3m
|
timeout: 5m
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/fluxcd-community/flux2-schemas/main/kustomization-kustomize-v1.json
|
||||||
|
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||||||
|
kind: Kustomization
|
||||||
|
metadata:
|
||||||
|
name: cluster-apps-home-assistant-code
|
||||||
|
namespace: flux-system
|
||||||
|
labels:
|
||||||
|
substitution.flux.home.arpa/enabled: "true"
|
||||||
|
spec:
|
||||||
|
path: ./kubernetes/apps/default/home-assistant/code
|
||||||
|
prune: true
|
||||||
|
sourceRef:
|
||||||
|
kind: GitRepository
|
||||||
|
name: home-ops-kubernetes
|
||||||
|
wait: false
|
||||||
|
interval: 30m
|
||||||
|
retryInterval: 1m
|
||||||
|
timeout: 5m
|
||||||
|
@@ -51,10 +51,3 @@ spec:
|
|||||||
- class
|
- class
|
||||||
- vendor
|
- vendor
|
||||||
- device
|
- device
|
||||||
custom:
|
|
||||||
- name: "rflink"
|
|
||||||
matchOn:
|
|
||||||
- usbId:
|
|
||||||
class: ["02"]
|
|
||||||
vendor: ["2341"]
|
|
||||||
device: ["0042"]
|
|
||||||
|
@@ -6,4 +6,5 @@ namespace: kube-system
|
|||||||
resources:
|
resources:
|
||||||
- ./aeotec-zwave-device.yaml
|
- ./aeotec-zwave-device.yaml
|
||||||
- ./google-coral-device.yaml
|
- ./google-coral-device.yaml
|
||||||
|
- ./nodo-rflink-device.yaml
|
||||||
- ./zzh-zigbee-device.yaml
|
- ./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: nodo-rflink-device
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- # Nodo-Shop RFlink SOMFY
|
||||||
|
name: nodo.rflink
|
||||||
|
labels:
|
||||||
|
nodo.feature.node.kubernetes.io/rflink: "true"
|
||||||
|
matchFeatures:
|
||||||
|
- feature: usb.device
|
||||||
|
matchExpressions:
|
||||||
|
class: { op: In, value: ["02"] }
|
||||||
|
vendor: { op: In, value: ["2341"] }
|
||||||
|
device: { op: In, value: ["0042"] }
|
Reference in New Issue
Block a user