Getting started
Install
Add the Helm repository:
helm repo add hosst https://hosstio.github.io/helm-charts
helm repo updateInstall with default values:
helm install my-app hosst/standardMinimal values
A minimal values.yaml for a web application:
nameOverride: my-app
image:
registry: registry.example.com/
name: my-app
tag: "1.0.0"
service:
ports:
http:
port: 80
deployment:
containers:
app:
ports:
http:
containerPort: 8080Install:
helm install my-app hosst/standard -f values.yamlInstall from a source checkout
To install from a local clone of the chart instead of the packaged repository (handy when developing the chart, or when reproducing the exact command a CI pipeline runs), point helm at the chart directory:
git clone https://gitlab.com/hosstio/helm-charts
helm install my-app helm-charts/charts/standard -f values.yamlValues files layer left to right, so shared and environment-specific values can live in separate files:
helm install my-app helm-charts/charts/standard \
--values values.yaml \
--values staging.yamlPreview what an upgrade would change before applying it with the helm-diff plugin (helm plugin install https://github.com/databus23/helm-diff):
helm diff upgrade my-app helm-charts/charts/standard \
--values values.yaml \
--values staging.yamlRender the manifests without a cluster to catch a bad-values or template error:
helm template my-app helm-charts/charts/standard \
--values values.yaml \
--values staging.yamlPost-install notes
After helm install (or helm upgrade), the chart prints a summary of the release: the app/chart metadata, any ingress URLs, jobs and cronjobs, plus a handful of useful commands. A release with two ingresses (one without TLS), a job, a cronjob, two variables, a secret, and a mounted file renders like this:
📦 Chart "standard"
═══════════════════
A generic application Helm chart for Kubernetes
Status: installed
App: my-app
Version: latest
Chart: standard-0.1.0
Release: my-app
Namespace: default
⚠ WARNING: no TLS configured; connections are unencrypted.
🌐 Access
─────────
Open in your browser:
• http://admin.example.com/dashboard
• http://admin.example.com/metrics
• https://app.example.com/
• https://www.example.com/
📋 Jobs
───────
• migrate (post-install)
⏰ Scheduled jobs
─────────────────
• cleanup (@hourly)
🔧 Configuration
────────────────
Environment (ConfigMap `my-app-variables`):
• DATABASE_HOST: db.internal
• LOG_LEVEL: info
Secrets (Secret `my-app-secrets`):
• DATABASE_PASSWORD: ********
Mounted files (ConfigMap `my-app-files`):
• /etc/app/config.yaml
💻 Useful commands
──────────────────
Logs $ kubectl logs -f deploy/my-app -n default
Logs (all) $ kubectl logs -l app.kubernetes.io/instance=my-app -n default
Pods $ kubectl get pods -l app.kubernetes.io/instance=my-app -n default
Shell $ kubectl exec -it deploy/my-app -n default -- sh
Rollback $ helm rollback my-app -n default
Values $ helm get values my-app -n defaultWhen no ingress is configured, the Access section instead shows a kubectl port-forward command, and the Jobs/Scheduled jobs sections only appear when jobs/cronJobs are set. The ⚠ WARNING line shows only when an ingress is served without TLS.
A Configuration section appears when variables, secrets, sealedSecrets, or any of the mounted*Files are set. It lists the ConfigMap, Secret, and SealedSecret each one produces. variables print their values, truncated at 60 characters; secrets and sealed secrets mask every value to a fixed ********, so nothing about the value (not even its length) is printed; the mounted-file blocks list paths only, since their values are whole file bodies. The values files themselves cannot be listed: helm merges the --values list before templates render and never exposes it to them.
App: is the app.kubernetes.io/name of the workload (driven by nameOverride/chartName), and Version: is the chart's appVersion, not the image tag.
Verify
helm get manifest my-app
kubectl get all -l app.kubernetes.io/instance=my-appDebug rendering
Preview what will be generated without deploying:
helm template my-app hosst/standard -f values.yaml
helm template my-app hosst/standard -f values.yaml --set debug=trueUpgrade
helm repo update
helm diff upgrade my-app hosst/standard -f values.yaml
helm upgrade my-app hosst/standard -f values.yaml