Skip to content

Chart for deploying and configuring Home Assistant core including useful features and addons.

License

Notifications You must be signed in to change notification settings

kostiantyn-matsebora/helm-ha

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chart for deploying and configuring Home Assistant core, also provides ability to deploy some useful features and addons, such as:

Configuration

The following table lists the main configurable parameters of the chart and their default values.

## Home Assistant
ha: 
  connectivity:
    hostNetwork: true # Preferable, since many integrations require host network
    service:
      type: LoadBalancer
      externalTrafficPolicy: Cluster
    annotations:
      # Preferable, since without it, metallb will assign random IP every time.
      # If you have traefik or any other load balancer, use it is own annotation.
      metallb.universe.tf/loadBalancerIPs: 192.168.2.30 
    ports:
      - name: http
        protocol: TCP
        containerPort: 8123
        servicePort: 8123
    probes:
      readiness:
        port: http
  volumes:
      - name: config
        persistentVolumeClaim:
          claimName: config # Claim must be created beforehand
      - name: bluetooth # Required for bluetooth integrations
        hostPath:
          path: /run/dbus
  volumeMounts:
      - mountPath: /config
        name: config
      - mountPath: /run/dbus
        name: bluetooth
  resources:
    limits:
      cpu: 1000m
      memory: 2Gi
    requests:
      cpu: 500m
      memory: 512Mi
  deployment:
      strategy:
        type:
          Recreate # Since HA currently do not support scalability, it is better to use Recreate strategy

Optional configuration

In addition to the home assistant itself, it is also possible to provision storage (PV and PVC) and install cloudflare tunnel as an ingress gateway for public access:

# Home Assistant storage provisioning (optional)
persistence:
  enabled: true # Default is false
  volumes: [] # list of PV and PVC to be provisioned, see how to configure here :https://github.com/kostiantyn-matsebora/helm-storage-provisioner?tab=readme-ov-file#configuration

# Cloudflare argo tunnel (optional)
# Use it if you want to expose HA to the internet without exposing it directly using public IP and port
# More information about configuration can be found here: https://github.com/cloudflare/helm-charts/blob/main/charts/cloudflare-tunnel/values.yaml
tunnel:
  enabled: true # Default is false
  cloudflare:
    account: 
    tunnelName: 
    tunnelId:
    secret: 
    ingress:

Addons

Mosquitto MQTT broker

Mosquitto MQTT broker with authentication enabled. You can configure users and ACLs using mosquitto.auth.users and mosquitto.auth.users.acl respectively.

Full configuration can be found here.

Example:

mosquitto:
  enabled: true # Default is false
  auth:
    enabled: true
    users:
      - username: user
        password: password
        acl:
          - topic: "#"
            access: readwrite
  service:
    type: LoadBalancer
    externalTrafficPolicy: Cluster
    annotations:
      metallb.universe.tf/loadBalancerIPs: 192.168.2.20
  ingress:
    enabled: false

Take into account that you need to configure mqtt integration in HA to use this broker. Use either IP address or kubernetes service of the broker as a server address in the integration configuration.

Ring MQTT bridge

Ring MQTT bridge. You can configure MQTT broker URL and options using ring-mqtt.mqtt_url and ring-mqtt.mqtt_options respectively.

Full configuration can be found here.

Example:

ring-mqtt:
  enabled: true # Default is false
  mqtt_url: mqtt://admin:[email protected]:1883
  mqtt_options: --rejectUnauthorized=false
  persistence:
    data:
      enabled: true
      mountPath: /data
      size: 2Gi
      retain: true
  service:
    rtsp:
      clusterIP: 10.43.13.193 # It is important to use ClusterIP, since it is used for communication between HA and the bridge, and it is value you going to use in HA generic camera integration configuration.

Take into account that after deployment you need to:

  • Configure ring-mqtt bridge, see pod logs for further instructions.
  • Configure generic camera integration in HA to use this bridge. Use IP address of the bridge service as a server address in the integration configuration using following format: rtsp://[service IP]:8554/[id_of_device]_live

Usage

Add helm repository first:

helm repo add kostiantyn-matsebora https://kostiantyn-matsebora.github.io/helm-charts/

Install/upgrade helm chart using your custom values:

helm upgrade ha kostiantyn-matsebora/ha --install --values ./your-values.yaml

Contributing

If you experience any issues, have a question or a suggestion, or if you wish to contribute, feel free to open an issue or start a discussion.

License

MIT License

About

Chart for deploying and configuring Home Assistant core including useful features and addons.

Topics

Resources

License

Stars

Watchers

Forks