--- apiVersion: apps/v1 kind: Deployment metadata: name: homeassistant namespace: homeassistant spec: selector: matchLabels: app: homeassistant replicas: 1 template: metadata: labels: app: homeassistant spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: cluster-ingress operator: In values: - "true" hostNetwork: true containers: - name: homeassistant image: homeassistant/home-assistant:2023.10.1 ports: - containerPort: 8123 name: http-web-svc volumeMounts: - mountPath: "/config" name: data volumes: - name: data persistentVolumeClaim: claimName: homeassistant-pvc --- apiVersion: v1 kind: Service metadata: name: homeassistant-service namespace: homeassistant spec: selector: app: homeassistant type: ClusterIP ports: - name: homeassistant-web-port protocol: TCP port: 8123 targetPort: http-web-svc --- apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: homeassistant namespace: homeassistant spec: entryPoints: - websecure routes: - kind: Rule match: Host(`homeassistant.jibby.org`) services: - kind: Service name: homeassistant-service port: 8123 --- apiVersion: apps/v1 kind: Deployment metadata: name: whisper namespace: homeassistant spec: selector: matchLabels: app: whisper replicas: 1 template: metadata: labels: app: whisper annotations: backup.velero.io/backup-volumes-excludes: tmpfs spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: cluster-ingress operator: In values: - "true" hostNetwork: true containers: - name: homeassistant image: rhasspy/wyoming-whisper args: - --model - base-int8 - --language - en ports: - containerPort: 10300 name: http-web-svc volumeMounts: - mountPath: "/data" name: tmpfs volumes: - name: tmpfs emptyDir: medium: Memory sizeLimit: 2Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: piper namespace: homeassistant spec: selector: matchLabels: app: piper replicas: 1 template: metadata: labels: app: piper annotations: backup.velero.io/backup-volumes-excludes: tmpfs spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: cluster-ingress operator: In values: - "true" hostNetwork: true containers: - name: homeassistant image: rhasspy/wyoming-piper args: - --voice - en_US-lessac-high ports: - containerPort: 10200 name: http-web-svc volumeMounts: - mountPath: "/data" name: tmpfs volumes: - name: tmpfs emptyDir: medium: Memory sizeLimit: 2Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: openwakeword namespace: homeassistant spec: selector: matchLabels: app: openwakeword replicas: 1 template: metadata: labels: app: openwakeword annotations: backup.velero.io/backup-volumes-excludes: tmpfs spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: cluster-ingress operator: In values: - "true" hostNetwork: true containers: - name: homeassistant image: rhasspy/wyoming-openwakeword args: - --preload-model - hey_jarvis - --custom-model-dir - /custom ports: - containerPort: 10400 name: http-web-svc volumeMounts: - mountPath: "/custom" name: tmpfs volumes: - name: tmpfs emptyDir: medium: Memory sizeLimit: 2Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: mosquitto namespace: homeassistant spec: selector: matchLabels: app: mosquitto replicas: 1 template: metadata: labels: app: mosquitto spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: cluster-ingress operator: In values: - "true" hostNetwork: true containers: - name: homeassistant image: eclipse-mosquitto:2.0.18 ports: - containerPort: 1883 name: noenc-noauth volumeMounts: - name: config mountPath: /mosquitto/config readOnly: true volumes: - name: config configMap: name: mosquitto items: - key: mosquitto.conf path: mosquitto.conf --- apiVersion: v1 kind: ConfigMap metadata: name: mosquitto namespace: homeassistant data: mosquitto.conf: | listener 1883 allow_anonymous true