From e0437a4237c99a16955d5ec56ff5fe9996c76b57 Mon Sep 17 00:00:00 2001 From: Remigiusz Janeczek Date: Tue, 16 Mar 2021 16:00:26 +0100 Subject: Add helm validator sources Issue-ID: SDC-3185 Signed-off-by: Remigiusz Janeczek Change-Id: I32dea3b4294a90c4dfc75864fb4200f044e7a0b6 --- README.md | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 README.md (limited to 'README.md') diff --git a/README.md b/README.md new file mode 100644 index 0000000..bb506c0 --- /dev/null +++ b/README.md @@ -0,0 +1,76 @@ +# helm-client-validator + +Docker container with Spring-Boot application for validating helm charts. + +#### Development +To build image use: +``` +make build-docker +``` +or +``` +make build-docker-local +``` + +To modify helm versions: + +1. Modify `Dockerfile`, add desired version in line: +```shell script +ENV HELM_SUPPORTED_VERSIONS=3.5.2,3.4.1,3.3.4,2.17.0,2.14.3 +``` +2. In local development, edit file: `Makefile` and add desired version in lines: +```shell script +build-docker-local: + export HELM_SUPPORTED_VERSIONS=3.5.2,3.4.1,3.3.4,2.17.0 +``` +If you want to clean downloaded files run: `make clean-local-files` + +In order to run docker container locally use: +``` +make run-docker +``` +Example charts are located in the following directory: +``` +./charts +``` + +## Available endpoints +* Chart validation: + + `http://localhost:[PORT]/validate` + +#### Request +This should be a POST with `multipart/form-data` encoding with the following fields: + + "versionDesired": [String] - helm version, which will be used for validation. If param not provided then version will be taken from apiVersion + "file": [FILE] - helm chart to be validated packed in .txz format + "isLinted": ["true"/"false"] - if false, there will be an attempt to render the chart without linting it first + "isStrictLinted": ["true"/"false"] - linting should be strict or not + +It is possible to provide helm version in three ways: +1. Select exact version from supported versions e.g. "3.4.1" +2. Select major helm version e.g. "v2" for Helm 2 or "v3" for Helm 3. In this case app will use the latest supported version. +3. In case when field version is not present in request then app gets helm version from "apiVersion" field located in the main chart (Chart.yaml). +Mapping rules: + +apiVersion: v1 -> the latest available helm 2 + +apiVersion: v2 -> the latest available helm 3 + +#### Response +Json with the following fields: + + "valid": ["true"/"false"] - passed linting without errors + "deployable": ["true"/"false"] - passed template rendering without errors + "lintErrors": [ARRAY OF STRINGS] - linting errors + "lintWarnings": [ARRAY OF STRINGS] - linting warnings + "renderErrors": [ARRAY OF STRINGS] - rendering errors + +* Supported versions [GET] + + `http://localhost:[PORT]/versions` + +#### Response +Following Json: + + [ARRAY OF STRINGS] - supported helm versions -- cgit 1.2.3-korg