Add 37 new entries and update 7 existing entries across 13 topic files. Major contributions from agent-runtimes (K8s secrets, CI, Docker gotchas), cluster-bootstrap (ArgoCD SSA, etcd tuning, DB migrations, Compose networking), and cluster-apps/octopus-deploy (Helm vs raw manifests, ArgoCD source types). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
30 lines
1.8 KiB
Markdown
30 lines
1.8 KiB
Markdown
# Helm Charts
|
|
|
|
## Schema Validation
|
|
|
|
- **Always validate values against the chart schema before committing.** Run `helm show values <repo>/<chart> --version <ver>` to check the actual structure.
|
|
- Helm chart schemas change between versions — field names and nesting can differ from documentation or online examples.
|
|
- A quick `helm template` test locally catches schema errors before deployment.
|
|
- `additionalProperties: false` in chart schemas means any extra keys at the wrong nesting level cause a hard failure.
|
|
|
|
## Version Verification
|
|
|
|
- Run `helm search repo` or check upstream docs to confirm latest stable versions
|
|
- Don't rely on memory for chart versions — they go stale quickly
|
|
- Check compatibility matrices between chart version, app version, and other cluster components
|
|
|
|
## Multi-Source Applications
|
|
|
|
- ArgoCD multi-source Applications use `$ref` syntax to combine external Helm charts with Git-stored values files
|
|
- Keep values files in Git alongside the ArgoCD Application manifest
|
|
|
|
## Timeout Handling
|
|
|
|
- Under cluster pressure (many events, etcd busy), default Helm timeouts may not be enough
|
|
- Increase timeout for initial installs (e.g., 10m instead of 5m)
|
|
- `helm upgrade --install` is idempotent — retries are safe
|
|
|
|
## Prefer Raw Manifests Over Complex Helm Charts for Simple Workloads
|
|
|
|
When a Helm chart introduces infrastructure dependencies beyond the application itself (NFS servers, CSI drivers, pre-install hooks with trust bootstrapping, RWX PVC requirements), evaluate whether a raw Deployment or StatefulSet with environment variables would be simpler. Complex charts that bundle infrastructure assumptions are fragile on non-standard clusters. If the application image handles its own configuration via env vars, a raw manifest is often more reliable and debuggable.
|