mirror of
https://github.com/shadoll/helm-charts.git
synced 2026-08-28 19:43:12 +00:00
3.4 KiB
3.4 KiB
Home Assistant Helm Chart
A Helm chart for Home Assistant with PostgreSQL recorder support, managed secrets, and Kubernetes-native logging.
Features
- PostgreSQL Recorder: Optional PostgreSQL backend for HA recorder with automated database and user creation via
db-initjob. - Managed Secrets: HA
secrets.yamlgenerated from Kubernetes Secrets (works with sealed-secrets). - Kubernetes-native Logging: Log file disabled, all logs go to stdout (
kubectl logs). - Backups: Integrated CronJob for automated PostgreSQL backups with configurable retention and node pinning.
- Ingress: Dictionary-based multi-ingress support (e.g. external HTTPS + internal LAN).
- Host Network: Enabled by default for mDNS/HomeKit discovery.
- Persistence: Config and media volumes with hostPath or PVC support.
Installation
1. Create Secrets
PostgreSQL secret (if using postgres recorder):
apiVersion: v1
kind: Secret
metadata:
name: ha-secret
stringData:
HA_POSTGRESQL_PASSWORD: "<password>"
POSTGRES_ADMIN_PASSWORD: "<admin-password>"
HA secrets (optional, for managing HA secrets.yaml):
apiVersion: v1
kind: Secret
metadata:
name: ha-ha-secrets
stringData:
api_key: "some-api-key"
webhook_token: "some-token"
2. Configure Values
Review the values.yaml and create your override file.
3. Install
helm install my-ha ./home-assistant -f my-values.yaml
Configuration Reference
| Parameter | Description | Default |
|---|---|---|
image.repository |
HA image repository | ghcr.io/home-assistant/home-assistant |
image.tag |
HA image tag | (Chart appVersion) |
hostNetwork |
Enable host networking | true |
timezone |
Container timezone | Europe/Kyiv |
homekit.enabled |
Expose HomeKit port (21063) | true |
persistence.config.type |
Config volume type (hostPath or pvc) |
hostPath |
persistence.media.enabled |
Enable media volume | true |
haSecrets.enabled |
Manage HA secrets.yaml from K8s Secret | false |
haSecrets.existingSecret |
K8s Secret name for HA secrets | "" |
postgres.enabled |
Enable PostgreSQL recorder | false |
postgres.host |
PostgreSQL host | postgres-tcp.postgres.svc.cluster.local |
postgres.db |
Database name | homeassistant |
postgres.user |
Database user | ha |
postgres.existingSecret |
K8s Secret with DB credentials | "" |
dbInit.enabled |
Enable database initialization job | false |
backup.enabled |
Enable automated PostgreSQL backups | false |
backup.node |
Pin backup CronJob to specific node | "" |
For detailed configuration, see the values.yaml.
Architecture
Init Containers
- init-config (always): Cleans up old log files from PVC.
- init-secrets (when
haSecrets.enabled): Generates/config/secrets.yamlfrom K8s Secret key-value pairs. - init-recorder (when
postgres.enabled): Generates/config/recorder.yamlwith PostgreSQL connection string and appendsrecorder: !include recorder.yamltoconfiguration.yaml.
Logging
The container patches the HA s6-overlay run script to pass --log-file /dev/null, disabling file-based logging. All logs go to stdout and are accessible via kubectl logs.