Standard Helm Chart
Generic universal Helm chart easy to configure and extend to be used as standard for most applications and use cases.
See the values.yaml for all configuration options.
Requirements
Install
Add the helm repository
$ helm repo add hosst https://hosstio.github.io/helm-chartsInstall the standard Helm chart
$ helm install example hosst/standardUpgrade
Update the helm chart
$ helm repo updateCheck the differences
$ helm diff upgrade example hosst/standardUpgrade the installation
$ helm upgrade example hosst/standardConfigure
Check values.yaml for all configuration options
Limitations
This chart only supports Deployment workloads. StatefulSets (databases, message queues, any app needing stable network identity or per-pod storage) and DaemonSets (node agents, log shippers) are not yet supported. StatefulSet support is the top priority on the roadmap.
Troubleshooting
Sealed secrets: pods failing on first install
When you set sealedSecrets or mountedSealedSecretFiles, this chart renders a SealedSecret custom resource, not a Secret. A SealedSecret is just an encrypted blob. The actual Secret your pods consume is created asynchronously by the sealed-secrets controller running in the cluster: it watches for SealedSecret objects, decrypts them, and creates a matching Secret with an owner reference.
Helm applies the SealedSecret during install but does not wait for the controller to materialize the real Secret. This creates a race on first install of a release: the Deployment's pod may be scheduled before the Secret exists.
Symptoms:
- Volume-mounted sealed secrets (
mountedSealedSecretFiles) orsecretKeyRefwithoptional: false: pod stuck inContainerCreating/CreateContainerConfigError. - Env-var references (
envFrom,secretKeyRef): the kubelet keeps retrying, so the pod self-heals once theSecretappears; it just looks like a transient failure. helm install --waitmay time out, because it blocks on pods that are themselves blocked on the missingSecret.
This race is bounded and usually resolves within seconds (and does not recur on helm upgrade, since the Secret already exists). If a pod stays broken:
- Check the controller is running and healthy in its namespace (commonly
kube-systemorsealed-secrets). - Check for decryption failures: a rotated or mismatched key is a permanent failure, not a race, and the
Secretwill never appear. Inspect status:shkubectl get sealedsecret <release>-sealed-secrets -o jsonpath='{.status}' - Confirm the derived
Secretexists:shkubectl get secret <release>-sealed-secrets
Mitigations: use a generous --timeout (or avoid --wait with a tight timeout) on first install; in GitOps, order the SealedSecret ahead of the Deployment (Argo CD sync-waves, Flux dependsOn) so the controller can reconcile first.