Everything-is-an-app: validate values.custom.yaml against vendor values.schema.json
Nobody has claimed this yet.
- Dominant language
- Go Template
- Stars
- 2.3k
- Forks
- 186
- Avg merge
- 3d 11h
- Merged PRs (30d)
- 66
Description
## Parent
linode/apl-core#3515
## What to build
Server-side and in-editor validation of `values.custom.yaml` against the vendor chart's own `values.schema.json`, replacing the curated per-app schema for configuration validation.
End-to-end behavior:
- When a chart ships `charts//values.schema.json`, a write to that app's `values.custom.yaml` is validated against it before the file is committed to the values repo. Invalid input is rejected with actionable errors.
- When a chart ships no vendor schema, the write is accepted as-is with no validation gate (errors surface later at `helm template`/ArgoCD sync).
- The same validation is applied in the console's raw YAML/JSON editor when a vendor schema exists, so users get in-editor feedback where possible.
- Validation is a pure function (chart name + custom-values content in, accept / reject-with-errors out) so it is unit-testable without git or Kubernetes.
Use `cert-manager` (ships a vendor schema) and one schema-less core chart as fixtures to cover both the validated and no-gate paths.
## Acceptance criteria
- [ ] A pure validation function rejects `values.custom.yaml` content that violates the chart's vendor `values.schema.json`, with useful error messages.
- [ ] The same function accepts any content for a chart with no vendor schema (no gate).
- [ ] Server-side write path (apl-api parity) refuses invalid custom values before commit; schema-less charts are accepted.
- [ ] Console raw editor surfaces live validation errors when a vendor schema exists for the edited chart.
- [ ] Unit tests use real vendor-schema fixtures for at least one schema-bearing chart (cert-manager) and one schema-less chart.
## Blocked by
- linode/apl-core#3571
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the blocker, linode/apl-core#3571, then trace the server-side values.custom.yaml write path and the console raw YAML/JSON editor. Implement and test pure validation using cert-manager and a schema-less core chart, confirming invalid values are rejected, schema-less values are accepted, and both integration paths show the expected behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- helm, kubernetes
- Domain
- devops, infrastructure, testing
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100