Skip to content

SocialGouv/helm-schema

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Julien Bouquillon
Nov 11, 2023
573612e · Nov 11, 2023

History

57 Commits
Nov 11, 2023
Aug 4, 2023
Nov 11, 2023
Nov 11, 2023
Aug 3, 2023
Aug 3, 2023
Aug 4, 2023
Nov 11, 2023
Nov 11, 2023
Aug 3, 2023
Nov 11, 2023
Aug 4, 2023
Aug 4, 2023
Aug 29, 2023

Repository files navigation

@socialgouv/helm-schema npm (scoped)

JSON Schema generator for your HELM charts.

Demo : https://socialgouv.github.io/helm-schema

Usage

Example values.yaml, following JSDoc standards

# @param {object} smtp Your SMTP setup
smtp:
  # @param {string} host SMTP hostname
  host:
  # @param {number} [port] SMTP port
  port: 587

# Setup your securityContext to reduce security risks, see https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
# @param {https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.PodSecurityContext} [securityContext]
securityContext:

To generate a JSON schema from your values.yaml :

npx @socialgouv/helm-schema -f values.yaml

Or via TS :

import { toJsonSchema } from "@socialgouv/helm-schema";

import yaml from "./values.yaml";

const schema = toJsonSchema(yaml);

You get such JSON schema in result :

{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": ["smtp"],
  "properties": {
    "smtp": {
      "type": "object",
      "title": "Your SMTP setup",
      "required": ["host"],
      "properties": {
        "host": {
          "type": "string",
          "title": "SMTP hostname"
        },
        "port": {
          "type": "number",
          "title": "SMTP port",
          "default": "587"
        }
      }
    },
    "securityContext": {
      "$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.PodSecurityContext",
      "description": "Setup your securityContext to reduce security risks, see https://kubernetes.io/docs/tasks/configure-pod-container/security-context/"
    }
  }
}

This schema can then be used with your favorite editor for HELM values validation.

⚠️ Be sure to add an $id to the schema if its meant to be referenced from other schemas

Dev

update snapshots : yarn snapshots

Todo

  • multiline comments
  • sections
  • infer types from default values
  • handle arrays