homeassistant.yaml 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. ---
  2. apiVersion: apps/v1
  3. kind: Deployment
  4. metadata:
  5. name: homeassistant
  6. namespace: homeassistant
  7. spec:
  8. strategy:
  9. type: Recreate
  10. selector:
  11. matchLabels:
  12. app: homeassistant
  13. replicas: 1
  14. template:
  15. metadata:
  16. labels:
  17. app: homeassistant
  18. spec:
  19. affinity:
  20. nodeAffinity:
  21. requiredDuringSchedulingIgnoredDuringExecution:
  22. nodeSelectorTerms:
  23. - matchExpressions:
  24. - key: cluster-ingress
  25. operator: In
  26. values:
  27. - "true"
  28. hostNetwork: true
  29. containers:
  30. - name: homeassistant
  31. image: homeassistant/home-assistant:2026.1.2
  32. ports:
  33. - containerPort: 8123
  34. name: http-web-svc
  35. volumeMounts:
  36. - mountPath: "/config"
  37. name: data
  38. volumes:
  39. - name: data
  40. persistentVolumeClaim:
  41. claimName: homeassistant-pvc
  42. ---
  43. apiVersion: v1
  44. kind: Service
  45. metadata:
  46. name: homeassistant-service
  47. namespace: homeassistant
  48. spec:
  49. selector:
  50. app: homeassistant
  51. type: ClusterIP
  52. ports:
  53. - name: homeassistant-web-port
  54. protocol: TCP
  55. port: 8123
  56. targetPort: http-web-svc
  57. ---
  58. apiVersion: apps/v1
  59. kind: Deployment
  60. metadata:
  61. name: esphome
  62. namespace: homeassistant
  63. spec:
  64. strategy:
  65. type: Recreate
  66. selector:
  67. matchLabels:
  68. app: esphome
  69. replicas: 1
  70. template:
  71. metadata:
  72. labels:
  73. app: esphome
  74. spec:
  75. affinity:
  76. nodeAffinity:
  77. requiredDuringSchedulingIgnoredDuringExecution:
  78. nodeSelectorTerms:
  79. - matchExpressions:
  80. - key: cluster-ingress
  81. operator: In
  82. values:
  83. - "true"
  84. hostNetwork: true
  85. containers:
  86. - name: esphome
  87. image: ghcr.io/esphome/esphome:latest
  88. ports:
  89. - containerPort: 6052
  90. name: http-web-svc
  91. volumeMounts:
  92. - mountPath: "/config"
  93. name: data
  94. envFrom:
  95. - secretRef:
  96. name: esphome
  97. volumes:
  98. - name: data
  99. persistentVolumeClaim:
  100. claimName: esphome-pvc
  101. ---
  102. apiVersion: external-secrets.io/v1
  103. kind: ExternalSecret
  104. metadata:
  105. name: esphome
  106. namespace: homeassistant
  107. spec:
  108. target:
  109. name: esphome
  110. deletionPolicy: Delete
  111. template:
  112. type: Opaque
  113. data:
  114. USERNAME: |-
  115. {{ .username }}
  116. USERNAME: |-
  117. {{ .password }}
  118. data:
  119. - secretKey: username
  120. sourceRef:
  121. storeRef:
  122. name: bitwarden-login
  123. kind: ClusterSecretStore
  124. remoteRef:
  125. key: ae12b5aa-193f-4881-8976-b3f70137de15
  126. property: username
  127. - secretKey: password
  128. sourceRef:
  129. storeRef:
  130. name: bitwarden-login
  131. kind: ClusterSecretStore
  132. remoteRef:
  133. key: ae12b5aa-193f-4881-8976-b3f70137de15
  134. property: password
  135. ---
  136. apiVersion: apps/v1
  137. kind: Deployment
  138. metadata:
  139. name: whisper
  140. namespace: homeassistant
  141. spec:
  142. strategy:
  143. type: Recreate
  144. selector:
  145. matchLabels:
  146. app: whisper
  147. replicas: 1
  148. template:
  149. metadata:
  150. labels:
  151. app: whisper
  152. annotations:
  153. backup.velero.io/backup-volumes-excludes: tmpfs
  154. spec:
  155. affinity:
  156. nodeAffinity:
  157. requiredDuringSchedulingIgnoredDuringExecution:
  158. nodeSelectorTerms:
  159. - matchExpressions:
  160. - key: cluster-ingress
  161. operator: In
  162. values:
  163. - "true"
  164. hostNetwork: true
  165. containers:
  166. - name: homeassistant
  167. image: rhasspy/wyoming-whisper
  168. args:
  169. - --model
  170. - base-int8
  171. - --language
  172. - en
  173. ports:
  174. - containerPort: 10300
  175. name: http-web-svc
  176. volumeMounts:
  177. - mountPath: "/data"
  178. name: tmpfs
  179. volumes:
  180. - name: tmpfs
  181. emptyDir:
  182. medium: Memory
  183. sizeLimit: 2Gi
  184. ---
  185. apiVersion: apps/v1
  186. kind: Deployment
  187. metadata:
  188. name: piper
  189. namespace: homeassistant
  190. spec:
  191. strategy:
  192. type: Recreate
  193. selector:
  194. matchLabels:
  195. app: piper
  196. replicas: 1
  197. template:
  198. metadata:
  199. labels:
  200. app: piper
  201. annotations:
  202. backup.velero.io/backup-volumes-excludes: tmpfs
  203. spec:
  204. affinity:
  205. nodeAffinity:
  206. requiredDuringSchedulingIgnoredDuringExecution:
  207. nodeSelectorTerms:
  208. - matchExpressions:
  209. - key: cluster-ingress
  210. operator: In
  211. values:
  212. - "true"
  213. hostNetwork: true
  214. containers:
  215. - name: homeassistant
  216. image: rhasspy/wyoming-piper
  217. args:
  218. - --voice
  219. - en_US-lessac-high
  220. ports:
  221. - containerPort: 10200
  222. name: http-web-svc
  223. volumeMounts:
  224. - mountPath: "/data"
  225. name: tmpfs
  226. volumes:
  227. - name: tmpfs
  228. emptyDir:
  229. medium: Memory
  230. sizeLimit: 2Gi
  231. ---
  232. apiVersion: apps/v1
  233. kind: Deployment
  234. metadata:
  235. name: openwakeword
  236. namespace: homeassistant
  237. spec:
  238. strategy:
  239. type: Recreate
  240. selector:
  241. matchLabels:
  242. app: openwakeword
  243. replicas: 1
  244. template:
  245. metadata:
  246. labels:
  247. app: openwakeword
  248. annotations:
  249. backup.velero.io/backup-volumes-excludes: tmpfs
  250. spec:
  251. affinity:
  252. nodeAffinity:
  253. requiredDuringSchedulingIgnoredDuringExecution:
  254. nodeSelectorTerms:
  255. - matchExpressions:
  256. - key: cluster-ingress
  257. operator: In
  258. values:
  259. - "true"
  260. hostNetwork: true
  261. containers:
  262. - name: homeassistant
  263. image: rhasspy/wyoming-openwakeword
  264. args:
  265. - --preload-model
  266. - hey_jarvis
  267. - --custom-model-dir
  268. - /custom
  269. ports:
  270. - containerPort: 10400
  271. name: http-web-svc
  272. volumeMounts:
  273. - mountPath: "/custom"
  274. name: tmpfs
  275. volumes:
  276. - name: tmpfs
  277. emptyDir:
  278. medium: Memory
  279. sizeLimit: 2Gi
  280. ---
  281. apiVersion: apps/v1
  282. kind: Deployment
  283. metadata:
  284. name: mosquitto
  285. namespace: homeassistant
  286. spec:
  287. strategy:
  288. type: Recreate
  289. selector:
  290. matchLabels:
  291. app: mosquitto
  292. replicas: 1
  293. template:
  294. metadata:
  295. labels:
  296. app: mosquitto
  297. spec:
  298. affinity:
  299. nodeAffinity:
  300. requiredDuringSchedulingIgnoredDuringExecution:
  301. nodeSelectorTerms:
  302. - matchExpressions:
  303. - key: cluster-ingress
  304. operator: In
  305. values:
  306. - "true"
  307. hostNetwork: true
  308. containers:
  309. - name: homeassistant
  310. image: eclipse-mosquitto:2.0.18
  311. ports:
  312. - containerPort: 1883
  313. name: noenc-noauth
  314. volumeMounts:
  315. - name: config
  316. mountPath: /mosquitto/config
  317. readOnly: true
  318. volumes:
  319. - name: config
  320. configMap:
  321. name: mosquitto
  322. items:
  323. - key: mosquitto.conf
  324. path: mosquitto.conf
  325. ---
  326. apiVersion: v1
  327. kind: ConfigMap
  328. metadata:
  329. name: mosquitto
  330. namespace: homeassistant
  331. data:
  332. mosquitto.conf: |
  333. listener 1883
  334. allow_anonymous true