Helm Sink¶
varTrack writes config values to a Helm release. Git becomes the source of truth for Helm chart configuration.
Configuration¶
datasources: [{
helm: {
tag: ""
namespace: "default"
kubeconfig: "/path/to/kubeconfig" // optional — uses in-cluster config if absent
}
}]
Destination template¶
The destination_template sets the Helm release name:
| Push branch | Helm release updated |
|---|---|
main |
myapp-production |
develop |
myapp-staging |
Upgrade strategies¶
| Strategy | What it does |
|---|---|
VALUES_ONLY |
Inject new values into the existing release; chart version unchanged |
FULL_UPGRADE |
Run a full helm upgrade — chart + values |
INSTALL_OR_UPGRADE |
Install the release if it doesn't exist, upgrade otherwise |
VALUES_ONLY (default)¶
Writes a values.yaml and applies it without changing the chart:
# Generated values.yaml
database:
host: mongo.prod.internal
maxConnections: 50
featureFlags:
darkMode: true
FULL_UPGRADE¶
Runs a full Helm upgrade with the new values:
helm upgrade myapp-production ./chart \
--set database.host=mongo.prod.internal \
--set maxConnections=50
INSTALL_OR_UPGRADE¶
Equivalent to helm upgrade --install — safe for first-time deployments:
Chart configuration¶
datasources: [{
helm: {
chart_name: "myapp"
chart_version: "1.2.3" // optional — pin chart version
chart_repo: "https://charts.myorg.com"
}
}]
Upgrade options¶
datasources: [{
helm: {
wait: true // wait for all resources to be ready
wait_timeout: "5m" // timeout for --wait
atomic: true // roll back on failure
force: false // force resource updates
cleanup_on_fail: true // delete new resources if upgrade fails
no_hooks: false // skip pre/post-upgrade hooks
max_history: 10 // number of release versions to keep
}
}]
Drift detection¶
The watcher reads the current Helm release values and compares against the Git baseline.