Browse Docs
Catalog
Config
Stacks
Operate
Docs

Per-chart recipes - recommended target surface for the TOP20

This proposal lists the recommended named configurations for each top-20 chart. It separates real operational choices from simple value changes and says what must be tested before a configuration is added to the catalog. View source markdown.

Status: working proposal. The third piece of the catalog model: catalog-doctrine.md (the principle) → fork-vocabulary.md (the shared names + current state) → this doc (the recommended recipe per chart) → customization-decision-tree.md (the user flow). Grounded by current catalog roles, the generated data under data/, and the current package bases.

What this is

Method - recommend a fork only where the role makes it real (no padding)

dimensionrecommended when the chart…
existing-secretgenerates/needs a secret (the F3 fix-path)
hahas a real replicated/clustered mode
ingress-tlshas a web UI / external HTTP surface
no-crdsships CRDs a controller/GitOps should own
minimalhas optional components worth dropping
tlsconsumes BYO TLS/CA material

Forks compose (existing-secret + ingress-tls); a composed fork is one base, named by its dimensions. Fork = shape change; fill = slot binding (doctrine invariant) - replica count, image tag, resource requests, persistence size, retention are fills on the parameterized base, never forks.

Legend: default always present · P = parameterized base recommended · forks named from the shared vocabulary (a+b = composed single base) · n = standard fork count (target 1–4).

#chartroledefault basePrecommended standard forksnnotes
1nginxstateless webdefault (http-clusterip)ingress-tls · ingress-tls+existing-secret (BYO cert)2TLS cert arrives as existing-secret
2metrics-servercluster metrics addondefaulttls (serving CA) · ha (2× + PDB)2lean addon
3ingress-nginxingress controllerdefaultminimal (admission-disabled) · ha (replicas+PDB)2
4cert-managerCRD operatorno-crds (flip)crds (bundled) · ha2default flips to no-crds - GitOps owns CRDs
5external-secretsCRD operatordefaultno-crds · ha2
6secrets-store-csi-driversecret CSI addondefaultrotation (sync-secret)1rotation is a chart-feature fork
7argo-cdGitOps platformdefaultno-crds · ha · ingress-tls (UI) · existing-secret (admin)4rich platform chart
8lokilog store (stateful)default (single-binary)ha (scalable+object store) · ha+existing-secret (store creds)2default is the lean mode
9prometheusmonitoringdefaultminimal (server-only-ephemeral) · ha (replicas+persistent) · ingress-tls (UI)3
10tempotracing (stateful)default (local-persistent)ha (S3 scalable) · ha+existing-secret (S3 creds)2
11rediscache + secretdefaultexisting-secret · ha (sentinel/cluster)2F3: default must declare required secret
12postgresqlsecret DBdefaultexisting-secret · ha (replication)2F3
13mysqlsecret DBdefaultexisting-secret · ha (replication)2F3
14mongodbsecret DBdefaultexisting-secret · ha (replicaset) · existing-secret+ha3current fork = the composed base
15rabbitmqqueue + secretdefaultexisting-secret · ha (cluster)2F3
16grafanadashboards + secretdefaultexisting-secret · ingress-tls (UI) · existing-secret+ingress-tls3current fork = the composed base
17longhornblock storagedefaultingress-tls (UI) · no-crds · ha (replica count)3ships CRDs
18vaultHA secret storedefaultha (raft) · ingress-tls (UI) · tls (BYO TLS)3
19consulservice meshdefault (control-plane)ha (servers) · existing-secret (gossip/mesh) · ingress-tls (UI)3
20kube-prometheus-stackmonitoring suitedefaultno-crds · minimal (drop exporters) · ingress-tls (UI) · existing-secret (grafana admin)4umbrella chart

Catalog rollup

  • Today: 40 bases (20 default + 20 ad-hoc forks), 0 parameterized (fork-vocabulary.md).
  • Target: ~20 default + ~18 parameterized + ~47 standard forks ≈ ~85 bases - roughly double, but predictable: the same fork name means the same thing on every chart.
  • Highest-leverage dimensions - build these first: ha (~16 charts) and existing-secret (~12) are the broadest, ingress-tls (~8) next. tls, crds, rotation are niche (1–2 charts each).
  • Average 2.35 forks/chart - inside the 1–4 band; only the platform/umbrella charts (argo-cd, kube-prometheus-stack) hit 4. No chart needs a padded fork to look complete.

Typical fill-safe fields (the parameterized placeholders, not forks)

Image tag · replica count (within a mode) · resource requests/limits · persistence size · service annotations · chart-specific tunables (retention, log level, storage class). These bind on a derived variant with no re-render. Anything that changes the rendered object set (enable ingress, switch to cluster mode, add/drop CRDs) is a fork, not a fill - that is what preserves Helm-equivalence and digest-pinning.

How a user reaches these (decision-tree START)

  1. Pick the chart → see its default (installs to Ready, or declares its required secret fill - F3).
  2. Need a change? Pick a named fork from this chart's row - the menu is the same vocabulary everywhere.
  3. Want to make it yours? Use the parameterized base and fill the placeholder fields (the form).
  4. The long tail (env / region / customer) is derived variants layered on the chosen base - fills only.

Open decisions (carried from the doctrine + vocabulary)

  1. cert-manager default flips to no-crds (GitOps owns CRDs); crds becomes the fork. (fork-vocabulary.md rec 4)
  2. Secret-chart defaults (F3): redis/postgresql/mysql/mongodb/rabbitmq/grafana default must either declare the required secret fill and refuse a silently broken install through a required-secret gate or ship existing-secret as the recommended base - never deliver silently broken over GitOps.
  3. Per-chart fill-set: the exact "fill-safe (non-shape) fields" list per chart needs author confirmation; the typical set above is the proposed starting point.

Sources

catalog-doctrine.md, fork-vocabulary.md, generated status/outcome data, and current package bases.

Generated from the committed markdown file docs/reference/per-chart-recipes.md. The source file is the authoritative version.