Subchart null configureCertmanager defaults shadow global values on Helm 3.19.5+
## Summary
Helm v3.19.5+ changed how null values in subchart `values.yaml` files are handled during value coalescing, causing subchart null defaults for `ingress.configureCertmanager` to shadow `global.ingress.configureCertmanager: true` instead of deferring to it. This silently drops `cert-manager.io/issuer` annotations from affected ingress resources.
## Steps to reproduce
1. Deploy the GitLab Helm chart with Helm 3.19.5+ (or 3.20.0+)
2. Use default values (i.e. `global.ingress.configureCertmanager: true`)
3. Render templates and inspect ingress annotations for webservice, registry, or minio
4. Observe that `cert-manager.io/issuer` and `acme.cert-manager.io/http01-edit-in-place` annotations are missing
## Configuration used
```yaml
# Default values — no overrides needed to trigger the bug.
# global.ingress.configureCertmanager defaults to true in values.yaml.
```
## Current behavior
On Helm 3.19.5+, the subchart null `ingress.configureCertmanager:` values are preserved during coalescing and treated as intentional overrides. The `pluck` fallback chain in `gitlab.certmanager_annotations` (`templates/_helpers.tpl`) picks up the null as the first match, evaluates it as falsy, and cert-manager annotations are silently omitted from webservice, registry, and minio ingress resources.
### Root Cause
Helm 3.19.5 (https://github.com/helm/helm/pull/31119, backported from https://github.com/helm/helm/pull/30777) added a pre-pass in `coalesceTablesFullKey()` that propagates null values from subchart defaults into the parent/global merge. This was intended to fix https://github.com/helm/helm/issues/31118 (allowing users to explicitly null-out values via `--set`), but it does not distinguish between user-intentional nulls and chart-default nulls.
### Affected Files
The following subchart `values.yaml` files default `ingress.configureCertmanager` to null (bare key with no value), expecting to inherit from `global.ingress.configureCertmanager`:
- `charts/gitlab/charts/webservice/values.yaml` (two instances: `ingress` and `extraIngress` sections)
- `charts/registry/values.yaml`
- `charts/minio/values.yaml`
The webservice and registry instances were identified while working with GitLab Dedicated. Other instances of this same pattern may be present elsewhere in the chart tree.
## Expected behavior
Subchart null defaults for `configureCertmanager` should defer to the global value (`global.ingress.configureCertmanager: true`), and cert-manager annotations should be present on ingress resources when the global value is `true`.
### Suggested Fix
Remove the bare `configureCertmanager:` keys from the affected subchart `values.yaml` files entirely. The `pluck` fallback chain in `gitlab.certmanager_annotations` already handles a missing local key by falling through to the global value, which is the intended behavior. No template changes are required.
## Versions
- Chart: master (`git rev-parse HEAD`)
- Helm: 3.19.5+ / 3.20.0+
- Platform: Any
- Kubernetes: Any
## Relevant logs
No errors are logged. The annotations are silently dropped during template rendering.
issue