Helm Charts Input Type
This will allow kapitan, during compilation, to overwrite the values in user-specified helm charts using its inventory by calling the Go & Sprig template libraries. The helm charts can be specified via local path, and users may download the helm chart via external-dependency feature (of http[s] type).
Author: @yoshi-1224
Specification
This feature basically follows the helm template
command available.
This will run after the fetching of the external dependencies takes place, such that users can simultaneously specify the fetch as well as the import of a helm chart dependency.
Semantics
kapitan:
compile:
- input_type: helm
input_path: <path_to_chart_dir>
output_path: <output_path>
set-file:
- <optional_file_path>
- ...
values_file: <optional_values_file>
namespace: <optional_namespace>
This mostly maps to the options available to helm template
command (refer to here).
Implementation details
C-binding between Helm (Go) and Kapitan (Python) will be created. Helm makes use of two template libraries, namely, text/template and Sprig. The code for helm template
command will be converted into shared object (.so) using CGo, which exposes C interface that kapitan (i.e. CPython) could use.
The source code for helm template
command is found here. This file will be modified to
- remove redundant options
- expose C-interface for Kapitan
Dependencies
- (possibly) pybindgen