linode / linode/apl-core

Everything-is-an-app: validate values.custom.yaml against vendor values.schema.json

Open
#3,572 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

ready-for-agent
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.