Per-chart cub adoption caveats - where a chart needs a heads-up vs plain Helm

A repository document, rendered for the site. View source markdown.

Generated at: 2026-07-30T12:38:02.000Z UTC · source: committed helm-expt evidence for this rendered repository document.

UNOFFICIAL/EXPERIMENTAL. Generated by scripts/generate-cub-adoption-caveats.mjs; do not hand-edit. Regenerate with npm run cub-adoption-caveats:generate. Secret values are never decoded or printed - only password key names are read.

This is the per-chart view of the adoption audit (docs/planning/helm-vs-cub-adoption-audit.md, PR #1016): for each of the 100 charts, which "worse-than / more-confusing-than plain Helm" rough edges apply, and the exact fix.

Three caveats that apply to EVERY chart (cub-direct path)

These are the same for all 100 charts, so they are stated once here rather than repeated per chart. Use a controller (Argo/Flux) and all three are handled for you; on the bare cub-direct path the managed applier handles them.

  1. Customize with --input or a base edit, not Helm's --set - cub rejects --set/--values (the typo guard); declared values use --input, the rest by choosing/editing a kustomize base.
    • Managed: Guided errors + migration cheat-sheet (#1020, docs/user/helm-to-cub-migration.md).
  2. Upgrades don't auto-delete removed objects on cub-direct - A plain kubectl apply leaves orphans when an upgrade removes a resource.
    • Managed: Managed applier uses --prune (#1019), or use a controller (Argo/Flux) which prunes natively.
  3. A manual kubectl edit conflicts on server-side re-apply - Safer than Helm's silent overwrite, but a Helm user expects the overwrite.
    • Managed: Managed applier surfaces a plain-words message + --force-conflicts (#1019).

Per-chart caveats (these vary by chart)

2/100 charts still bake a shared placeholder password in their default setup; 41/100 charts ship CRDs that need first-ordering on cub-direct. Full data for all 100 charts: caveats.csv · summary.html.

Shared placeholder password (#1012) - 2 charts

If a chart appears here, its default base bakes a password Secret that is the same for everyone. The safer package shape is an existing-Secret base: create or supply the Secret before apply, keep the Secret material outside the rendered chart, and make any fixed-password demo base explicit.

ChartDefault basePassword keysFix
falcosecurity/falcosidekickdefault1replace the placeholder before prod
runix/pgadmin4default1replace the placeholder before prod

CRDs need first-ordering on cub-direct (#1015) - 41 charts

On the bare kubectl apply path a chart's CRs can apply before its CRDs are established. A controller handles ordering; on cub-direct, apply CRDs first and wait, or use the managed applier (#1019).

ChartDefault baseCRDsFix
aqua/trivy-operatordefault12no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
argo-cd/argo-cddefault3apply CRDs first + wait, or use a controller (#1015/#1019)
argo-cd/argo-eventsdefault3no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
argo-cd/argo-rolloutsdefault5no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
argo-cd/argo-workflowsdefault8apply CRDs first + wait, or use a controller (#1015/#1019)
argo-cd/argocd-image-updaterdefault1apply CRDs first + wait, or use a controller (#1015/#1019)
autoscaler/vertical-pod-autoscalerdefault2no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
bitnami/contourdefault5apply CRDs first + wait, or use a controller (#1015/#1019)
cloudnative-pg/cloudnative-pgdefault10no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
elastic/eck-operatordefault12no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
external-dns/external-dnsdefault1no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
external-secrets/external-secretsdefault23apply CRDs first + wait, or use a controller (#1015/#1019)
fairwinds-stable/vpadefault2no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
gatekeeper/gatekeeperdefault17no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
grafana/alloydefault1no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
grafana/pyroscopedefault1no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
grafana/rollout-operatordefault2no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
hashicorp/consuldefault-control-plane28apply CRDs first + wait, or use a controller (#1015/#1019)
hashicorp/terraformdefault1apply CRDs first + wait, or use a controller (#1015/#1019)
jaegertracing/jaeger-operatordefault1apply CRDs first + wait, or use a controller (#1015/#1019)
jetstack/cert-managerdefault6apply CRDs first + wait, or use a controller (#1015/#1019)
jetstack/trust-managerdefault3no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
kedacore/kedadefault6no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
kyverno/kyvernodefault22no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
kyverno/kyverno-policiesdefault1apply CRDs first + wait, or use a controller (#1015/#1019)
linkerd/linkerd-crdsdefault8apply CRDs first + wait, or use a controller (#1015/#1019)
longhorn/longhorndefault22apply CRDs first + wait, or use a controller (#1015/#1019)
minio-operator/operatordefault2apply CRDs first + wait, or use a controller (#1015/#1019)
minio-operator/tenantdefault1apply CRDs first + wait, or use a controller (#1015/#1019)
nats/nackdefault6no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
open-telemetry/opentelemetry-operatordefault6no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
percona/pg-operatordefault8no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
percona/psmdb-operatordefault3no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
percona/pxc-operatordefault3no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
rook-release/rook-cephdefault25apply CRDs first + wait, or use a controller (#1015/#1019)
rook-release/rook-ceph-clusterdefault5apply CRDs first + wait, or use a controller (#1015/#1019)
sealed-secrets/sealed-secretsdefault1no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
secrets-store-csi-driver/secrets-store-csi-driverdefault2apply CRDs first + wait, or use a controller (#1015/#1019)
strimzi/strimzi-kafka-operatordefault10no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
traefik/traefikdefault25no-crds base separates CRDs; apply CRDs first + wait, or use a controller (#1015/#1019)
velero/velerodefault13apply CRDs first + wait, or use a controller (#1015/#1019)

How to read this