Skip to content

Helm chart values

Reference — every value you can set when installing the operator. Look things up here; it does not teach.

Generated from the chart's values.yaml, so this table cannot drift from what the chart actually accepts — a CI gate fails the build if it does.

To see the same list from your own machine, including for a specific released version:

VERSION=1.4.0
helm show values oci://ghcr.io/przemekhys/charts/homeassistant-operator --version "$VERSION"

For how to apply these, see install the operator.

Values

Key Type Default Description
affinity object {} Affinity rules for the operator pod, e.g. pod anti-affinity to spread replicas across nodes.
fullnameOverride string "" Override the full generated name of every rendered resource.
image.pullPolicy string "IfNotPresent" Image pull policy for the operator container.
image.repository string "ghcr.io/przemekhys/homeassistant-operator" Operator container image repository.
image.tag string "1.1.0" Image tag. Defaults to the chart's appVersion when empty.
imagePullSecrets list [] Image pull secrets for a private registry mirror.
metricsNetworkPolicy.enabled bool false Restrict ingress to the operator pod: its /metrics endpoint to namespaces labeled metrics: enabled, and — when webhook.enabled is also true — its admission webhook to namespaces labeled webhook: enabled. That label governs pod-to-pod callers only: on most clusters the API server's AdmissionReview calls do not originate from the pod network, so the rule neither reaches nor blocks them. Where they are evaluated by the policy, an unlabelled caller is denied — with webhook.failurePolicy: Ignore (the default) writes are then admitted unvalidated, and with Fail they are rejected outright. Egress is deliberately not restricted, because there is no portable way to address the Kubernetes API server across cluster types and CNIs from a generic chart. Unrelated to spec.alpha.networkPolicy.enabled on a HomeAssistant resource, which protects the Home Assistant pod instead.
nameOverride string "" Override the chart name used in resource names.
namespace.create bool false Render the release Namespace and label it to enforce the "restricted" Pod Security Standard (version latest). Helm stores its release state in the target namespace, so that namespace must exist before the chart is applied: pass --create-namespace (or create it yourself) on the first install. When false (the default), no Pod Security Admission labels are added at all — the operator pod is restricted-compliant either way, see securityContext, but the namespace does not enforce it.
nodeSelector object {} Node selector for the operator pod. Example — pin to ARM64 nodes: {"kubernetes.io/arch": "arm64"}
podAnnotations object {} Extra annotations for the operator pod.
podSecurityContext.runAsNonRoot bool true Refuse to start the pod if the image would run as root.
podSecurityContext.seccompProfile.type string "RuntimeDefault" Seccomp profile for the pod. RuntimeDefault is required by the "restricted" Pod Security Standard.
priorityClassName string "" PriorityClass for the operator pod, so it is evicted after your workloads rather than before them.
replicaCount int 1 Number of operator replicas. The operator has no leader election across replicas, so values above 1 are not supported.
resources.limits.cpu string "500m" CPU limit for the operator container.
resources.limits.memory string "128Mi" Memory limit. Raise it if you validate very large community repositories.
resources.requests.cpu string "10m" CPU request for the operator container.
resources.requests.memory string "64Mi" Memory request for the operator container.
securityContext.allowPrivilegeEscalation bool false Forbid gaining more privileges than the parent process.
securityContext.capabilities.drop list ["ALL"] Linux capabilities to drop. All of them, as "restricted" requires.
securityContext.readOnlyRootFilesystem bool true Mount the container root filesystem read-only.
securityContext.runAsGroup int 65532 GID the operator process runs as.
securityContext.runAsNonRoot bool true Refuse to start the container if it would run as root.
securityContext.runAsUser int 65532 UID the operator process runs as.
serviceAccount.annotations object {} Extra annotations for the ServiceAccount, e.g. for cloud workload identity.
serviceAccount.create bool true Create the operator's ServiceAccount. Set to false to supply your own.
serviceAccount.name string "" Name of the ServiceAccount. Defaults to the chart fullname when empty.
tolerations list [] Tolerations for the operator pod.
topologySpreadConstraints list [] Topology spread constraints for the operator pod, e.g. spreading across zones with topologyKey: topology.kubernetes.io/zone.
watchNamespaces list [] Namespaces the operator watches for Home Assistant resources. Empty means ALL namespaces, which requires a cluster-wide ClusterRoleBinding and is deprecated. Listing namespaces creates per-namespace RoleBindings instead — least privilege. The operator's own namespace is NOT included automatically; add it explicitly if you run Home Assistant resources alongside the operator.
webhook.certManager.enabled bool false Have cert-manager issue the webhook's serving certificate instead of the operator self-managing it. Requires cert-manager to be installed. When false (the default) the operator generates and rotates a self-signed certificate and injects the CA itself, so cert-manager is not a dependency.
webhook.enabled bool true Run the validating admission webhook, which checks resource coherence at admission time. Enabled by default; setting this to false runs the operator with ENABLE_WEBHOOKS=false and renders no webhook resources.
webhook.failurePolicy string "Ignore" failurePolicy for the ValidatingWebhookConfiguration. Ignore (the default) keeps validation best-effort, so resource creation is never blocked while the webhook is unavailable — during an operator rollout, for instance. Use Fail to reject invalid resources strictly.
webhook.port int 9443 Port the webhook server listens on inside the operator pod.