Skip to content

docs(schema): add descriptions and constraints to values schema (#63) - #115

Open
monrax wants to merge 5 commits into
mainfrom
chore/values-descriptions
Open

docs(schema): add descriptions and constraints to values schema (#63)#115
monrax wants to merge 5 commits into
mainfrom
chore/values-descriptions

Conversation

@monrax

@monrax monrax commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

Summary

Documents charts/graylog/values.schema.json, which previously carried descriptions on only 18 of ~340 properties. Every property leaf now has a description, high-confidence validation constraints were added, and the chart README's Values Reference was reconciled with the schema. Closes #63.

Details

  • Descriptions (structural/k8s): documented all non-config.* properties — global, service, inputs, plugins, image, updateStrategy, resources, persistence, probes, PDB, scheduling, serviceAccount, ingress, and mongodb.
  • Constraints: added enums (Service type, imagePullPolicy, updateStrategy type, input protocol, ingress pathType, leaderElectionMode, inputBufferWaitStrategy, S3 client protocol, boolean-string config fields), port ranges (1–65535), minimums (replicas, PDB minAvailable, probe timings), and a Kubernetes quantity pattern for resource requests/limits and PVC sizes.
  • Descriptions (config.*): documented every graylog.config.* and datanode.config.* leaf, mapping each Helm value to its underlying server.conf / datanode.conf key. Key names verified against the chart's rendered GRAYLOG_* env vars and the official Graylog server configuration settings reference.
  • README reconciliation: added the five securityContext overrides (added in Tightening Pod/Container Security for All Workloads #100) to the Values Reference tables — the only remaining drift between values.yaml, the schema, and the README.
  • Description coverage: 18 → 322 property leaves.

Note on constraints: inputs[].port intentionally allows privileged ports (minimum: 1) since inputs commonly bind ports like syslog 514; the graylog container is granted NET_BIND_SERVICE for this.

Linked issues

This fixes #63

PR Checklist

Please check the items that apply to your change.

  • Tests added/updated
  • Documentation updated
  • This PR includes a new feature
  • This PR includes a bugfix
  • This PR includes a refactor

Testing Checklist

Static Validation

  • Linter check passes: helm lint ./charts/graylog
  • Helm renders local template sucessfully: helm template graylog ./charts/graylog (rendered clean; --validate requires a live cluster and is covered by CI ct install)

Installation

  • Fresh installation completes successfully: helm install graylog ./charts/graylog
  • All pods reach Running state: kubectl rollout status statefulset/graylog
  • Helm tests pass: helm test graylog

Functional (if applicable)

  • Web UI accessible and login works
  • DataNodes visible in System > Cluster Configuration
  • Inputs can be created and receive data

Upgrade (if applicable)

  • Upgrade from previous release succeeds
  • Scaling up/down works correctly
  • Configuration changes apply correctly

Specific to this PR

  • Documentation-only change: affects values.schema.json and the chart README; produces no change to rendered manifests.
  • helm lint, helm template, and helm unittest (56/56) pass locally.
  • Verified the new constraints reject out-of-range input (bad Service type, memory quantity, isCloud, S3 protocol) while the default values.yaml still passes validation.
  • Audited that every property leaf in the schema carries a description (0 missing) and that values.yaml / schema / README are free of drift.

Notes for reviewers

  • Verify all applicable tests above pass
  • Validate that the linked issues are no longer reproducible, if applicable
  • Sync up with the author before merging
  • The commit history should be preserved - use rebase-merge or standard merge options when applicable

🤖 Generated with Claude Code

monrax added 5 commits July 13, 2026 10:27
Document all non-config.* properties in values.schema.json: global,
service, inputs, plugins, image, updateStrategy, resources, persistence,
probes, PDB, scheduling, serviceAccount, ingress, and mongodb nodes.
Raises description coverage from 18 to 223 properties.

Config-leaf descriptions (server.conf / datanode.conf) and validation
constraints follow in subsequent commits.

Co-Authored-By: Claude Opus 4.8 (1M context) <[EMAIL_ADDRESS_REDACTED]>
Constrain values where the allowed set is well-defined:
- enums: Service type, imagePullPolicy, updateStrategy type, input
  protocol, ingress pathType, leaderElectionMode, inputBufferWaitStrategy,
  S3 client protocol, and boolean-string config fields (true/false)
- port ranges (1-65535) for Service and input ports
- minimums for replicas, PDB minAvailable, and probe timings
- Kubernetes quantity pattern for resource requests/limits and PVC sizes

Verified: default values.yaml still passes helm lint; out-of-range
values (bad Service type, memory quantity, isCloud, S3 protocol) are
now rejected by schema validation.

Co-Authored-By: Claude Opus 4.8 (1M context) <[EMAIL_ADDRESS_REDACTED]>
Add descriptions to every graylog.config.* and datanode.config.* leaf
(TLS, MongoDB, message journal, network, performance, email, plugins,
geolocation, init, and Data Node/OpenSearch/S3 settings). Each maps the
Helm value to its underlying server.conf / datanode.conf key.

Key names verified against the chart's rendered GRAYLOG_* env vars and
the official Graylog server configuration settings reference; wording
for geolocation/plugins aligned with the README values reference table.

Every property leaf in values.schema.json now carries a description
(322 total, up from 18 before this series). Closes #63.

Co-Authored-By: Claude Opus 4.8 (1M context) <[EMAIL_ADDRESS_REDACTED]>
Add rows for graylog.podSecurityContext, graylog.initContainerSecurityContext,
graylog.containerSecurityContext, datanode.podSecurityContext, and
datanode.containerSecurityContext to the Values Reference tables. These
free-form overrides were added in the security-hardening work (#100) but
were never listed, leaving the only drift between values.yaml, the schema,
and the README. Each row documents the default hardened posture.

Co-Authored-By: Claude Opus 4.8 (1M context) <[EMAIL_ADDRESS_REDACTED]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add descriptions to values schema

1 participant