-
Notifications
You must be signed in to change notification settings - Fork 119
Closed
Milestone
Description
Description
We currently face conflicts when installing ai-gateway-crd-helm and ai-gateway-helm as two subcharts under a parent Helm chart. This proposal suggests refactoring CRD handling to avoid duplicate ownership issues when used as subcharts and follow the Helm standards.
Setup / Problem
- We have two Helm subcharts under a parent chart: ai-gateway-crd-helm and ai-gateway-helm. Both include the same CRDs, causing ownership / conflict issues when installing the parent chart.
- While installing ai-gateway-helm through Helm CLI, we can use
--skip-crdsto avoid CRD installation, but ai-gateway-helm doesn’t have a corresponding setting invalues.yamlto skip its CRDs when added as a subchart. - The current workaround is to install the parent chart with the
--skip-crdsflag, so only ai-gateway-crd-helm installs the CRDs and ai-gateway-helm’s CRDs (in itscrds/directory) are skipped. But this feels unintuitive and fragile.
Proposed Solutions
1. Remove CRDs from ai-gateway-helm Chart
- Remove all CRDs from ai‑gateway‑helm, so that ai‑gateway‑crd‑helm is the single chart responsible for defining and managing CRDs.
- The CRD chart owns the lifecycle of CRDs — installation, upgrades (as appropriate), etc., while ai‑gateway‑helm handles the rest of the resources.
- Having a single owner of CRDs avoids the conflict/ownership issues when installing multiple charts under a parent.
- kserve follows this approach where they have completely separate charts for CRDs (kserve-crd) and resources (kserve-resources)
2. Toggle + Move CRDs into templates/ in ai-gateway-helm Chart
- Move CRDs from ai‑gateway‑helm’s
crds/directory intotemplates/. - Add a Boolean toggle in ai‑gateway‑helm’s
values.yaml(e.g.crds.enabled) that controls whether the CRD templates are rendered and installed. - cert-manager follows this approach where it includes CRDs within the
templates/directory of its Helm chart, allowing installation to be toggled via the crds.enabled flag invalues.yaml.
Upgrade Considerations
From my testing, both proposed approaches have breaking changes. Upgrading from the current chart version to a version implementing either solution will likely require special migration steps. If not, they would face helm ownership conflict issues when upgrading.
I’d appreciate your thoughts on these proposals, and I’m open to any other ideas the community may suggest.
I’m also happy to help implement whichever approach is decided
Thank you!
Metadata
Metadata
Assignees
Labels
No labels