homeassistant.yaml 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  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-secret
  97. volumes:
  98. - name: data
  99. persistentVolumeClaim:
  100. claimName: esphome-pvc
  101. ---
  102. apiVersion: apps/v1
  103. kind: Deployment
  104. metadata:
  105. name: whisper
  106. namespace: homeassistant
  107. spec:
  108. strategy:
  109. type: Recreate
  110. selector:
  111. matchLabels:
  112. app: whisper
  113. replicas: 1
  114. template:
  115. metadata:
  116. labels:
  117. app: whisper
  118. annotations:
  119. backup.velero.io/backup-volumes-excludes: tmpfs
  120. spec:
  121. affinity:
  122. nodeAffinity:
  123. requiredDuringSchedulingIgnoredDuringExecution:
  124. nodeSelectorTerms:
  125. - matchExpressions:
  126. - key: cluster-ingress
  127. operator: In
  128. values:
  129. - "true"
  130. hostNetwork: true
  131. containers:
  132. - name: homeassistant
  133. image: rhasspy/wyoming-whisper
  134. args:
  135. - --model
  136. - base-int8
  137. - --language
  138. - en
  139. ports:
  140. - containerPort: 10300
  141. name: http-web-svc
  142. volumeMounts:
  143. - mountPath: "/data"
  144. name: tmpfs
  145. volumes:
  146. - name: tmpfs
  147. emptyDir:
  148. medium: Memory
  149. sizeLimit: 2Gi
  150. ---
  151. apiVersion: apps/v1
  152. kind: Deployment
  153. metadata:
  154. name: piper
  155. namespace: homeassistant
  156. spec:
  157. strategy:
  158. type: Recreate
  159. selector:
  160. matchLabels:
  161. app: piper
  162. replicas: 1
  163. template:
  164. metadata:
  165. labels:
  166. app: piper
  167. annotations:
  168. backup.velero.io/backup-volumes-excludes: tmpfs
  169. spec:
  170. affinity:
  171. nodeAffinity:
  172. requiredDuringSchedulingIgnoredDuringExecution:
  173. nodeSelectorTerms:
  174. - matchExpressions:
  175. - key: cluster-ingress
  176. operator: In
  177. values:
  178. - "true"
  179. hostNetwork: true
  180. containers:
  181. - name: homeassistant
  182. image: rhasspy/wyoming-piper
  183. args:
  184. - --voice
  185. - en_US-lessac-high
  186. ports:
  187. - containerPort: 10200
  188. name: http-web-svc
  189. volumeMounts:
  190. - mountPath: "/data"
  191. name: tmpfs
  192. volumes:
  193. - name: tmpfs
  194. emptyDir:
  195. medium: Memory
  196. sizeLimit: 2Gi
  197. ---
  198. apiVersion: apps/v1
  199. kind: Deployment
  200. metadata:
  201. name: openwakeword
  202. namespace: homeassistant
  203. spec:
  204. strategy:
  205. type: Recreate
  206. selector:
  207. matchLabels:
  208. app: openwakeword
  209. replicas: 1
  210. template:
  211. metadata:
  212. labels:
  213. app: openwakeword
  214. annotations:
  215. backup.velero.io/backup-volumes-excludes: tmpfs
  216. spec:
  217. affinity:
  218. nodeAffinity:
  219. requiredDuringSchedulingIgnoredDuringExecution:
  220. nodeSelectorTerms:
  221. - matchExpressions:
  222. - key: cluster-ingress
  223. operator: In
  224. values:
  225. - "true"
  226. hostNetwork: true
  227. containers:
  228. - name: homeassistant
  229. image: rhasspy/wyoming-openwakeword
  230. args:
  231. - --preload-model
  232. - hey_jarvis
  233. - --custom-model-dir
  234. - /custom
  235. ports:
  236. - containerPort: 10400
  237. name: http-web-svc
  238. volumeMounts:
  239. - mountPath: "/custom"
  240. name: tmpfs
  241. volumes:
  242. - name: tmpfs
  243. emptyDir:
  244. medium: Memory
  245. sizeLimit: 2Gi
  246. ---
  247. apiVersion: apps/v1
  248. kind: Deployment
  249. metadata:
  250. name: mosquitto
  251. namespace: homeassistant
  252. spec:
  253. strategy:
  254. type: Recreate
  255. selector:
  256. matchLabels:
  257. app: mosquitto
  258. replicas: 1
  259. template:
  260. metadata:
  261. labels:
  262. app: mosquitto
  263. spec:
  264. affinity:
  265. nodeAffinity:
  266. requiredDuringSchedulingIgnoredDuringExecution:
  267. nodeSelectorTerms:
  268. - matchExpressions:
  269. - key: cluster-ingress
  270. operator: In
  271. values:
  272. - "true"
  273. hostNetwork: true
  274. containers:
  275. - name: homeassistant
  276. image: eclipse-mosquitto:2.0.18
  277. ports:
  278. - containerPort: 1883
  279. name: noenc-noauth
  280. volumeMounts:
  281. - name: config
  282. mountPath: /mosquitto/config
  283. readOnly: true
  284. volumes:
  285. - name: config
  286. configMap:
  287. name: mosquitto
  288. items:
  289. - key: mosquitto.conf
  290. path: mosquitto.conf
  291. ---
  292. apiVersion: v1
  293. kind: ConfigMap
  294. metadata:
  295. name: mosquitto
  296. namespace: homeassistant
  297. data:
  298. mosquitto.conf: |
  299. listener 1883
  300. allow_anonymous true