Skip to main content

Configuration

Location

The configuration file helmper.yaml can be placed in:

  • Current directory (.)
  • $HOME/.config/helmper/
  • /etc/helmper/

Override configuration location with --f flag

Helmper supports a single flag --f to specify the configuration file. When using the flag it takes precedence over the default location and name of the configuration file. The configuration file --f can be any format (JSON, TOML, YAML, HCL, envfile and Java properties config files, see viper).

Example configuration

Example config
k8s_version: 1.31.1
verbose: true
update: false
all: false
parser:
useCustomValues: false
import:
enabled: true
architecture: "linux/amd64"
copacetic:
enabled: true
ignoreErrors: true
buildkitd:
addr: tcp://0.0.0.0:8888
CACertPath: ""
certPath: ""
keyPath: ""
trivy:
addr: http://0.0.0.0:8887
insecure: true
ignoreUnfixed: true
output:
tars:
folder: /workspace/.out/tars
clean: true
reports:
folder: /workspace/.out/reports
clean: true
cosign:
enabled: true
keyRef: /workspace/.devcontainer/cosign.key
KeyRefPass: ""
allowInsecure: true
allowHTTPRegistry: true
charts:
- name: loki
version: 5.38.0
valuesFilePath: /workspace/.in/values/loki/values.yaml
repo:
name: grafana
url: https://grafana.github.io/helm-charts/
username: ""
password: ""
certFile: ""
keyFile: ""
caFile: ""
insecure_skip_tls_verify: false
pass_credentials_all: false
- name: kyverno
version: 3.1.1
valuesFilePath: /workspace/.in/values/kyverno/values.yaml
repo:
name: kyverno
url: https://kyverno.github.io/kyverno/
- name: keda
version: 2.11.2
repo:
name: kedacore
url: https://kedacore.github.io/charts/
- name: argo-cd
version: ">5.0.0 <7.0.0"
repo:
name: argo
url: https://argoproj.github.io/argo-helm/
- name: cilium
version: "1.15.6"
repo:
name: cilium
url: https://helm.cilium.io/
images:
exclude:
- ref: quay.io/cilium/cilium-envoy
excludeCopacetic:
- ref: quay.io/cilium/startup-script
modify:
- fromValuePath: operator.image.repository
to: quay.io/cilium/operator-generic
- name: prometheus
version: 25.8.0
valuesFilePath: /workspace/.in/values/prometheus/values.yaml
repo:
name: prometheus-community
url: https://prometheus-community.github.io/helm-charts/
images:
- ref: docker.io/library/busybox:latest@sha256:7cc4b5aefd1d0cadf8d97d4350462ba51c694ebca145b08d7d41b41acc8db5aa
patch: false
registries:
- name: registry
url: 0.0.0.0:5000
insecure: true
plainHTTP: true

Configuration options

KeyTypeDefaultRequiredDescription
k8s_versionstring"1.31.1"falseSome charts use images eliciting their tag based on the kube-apiserver version. Therefore, tell Helmper which version you run to import the correct version.
verboseboolfalsefalseToggle verbose output
updateboolfalsefalseToggle update to latest chart version for each specified chart in charts
allboolfalsefalseToggle import of all images regardless if they exist in the registries defined in registries
parserobjectnilfalseAdjust how Helmper parses charts
parser.disableImageDetectionboolfalsefalseDisable Image detection
parser.useCustomValuesboolfalsefalseUse user defined values for image parsing
importobjectnilfalseIf import is enabled, images will be pushed to the defined registries. If copacetic is enabled, images will be patched if possible. Finally, in the import section Cosign can be configured to sign the images after pushing to the registries. See table blow for full configuration options.
import.enabledboolfalsefalseEnable import of charts and artifacts to registries
import.replaceRegistryReferencesboolfalsefalseReplace occurrences of old registry with import target registry
import.architecture*stringnilfalseSpecify desired container image architecture
import.copacetic.enabledboolfalsefalseEnable Copacetic
import.copacetic.ignoreErrorsbooltruefalseIgnore errors during Copacetic patching
import.copacetic.buildkitd.addrstringtrueAddress to Buildkit
import.copacetic.buildkitd.CACertPathstring""falsePath to certificate authority used for authentication
import.copacetic.buildkitd.certPathstring""falsePath to certificate used for authentication
import.copacetic.buildkitd.keyPathstring""falsePath to key used for authentication
import.copacetic.trivy.addrstringtrueAddress to Trivy
import.copacetic.trivy.insecureboolfalsefalseDisable TLS verification
import.copacetic.trivy.ignoreUnfixedboolfalsefalseIgnore unfixed vulnerabilities
import.copacetic.output.tars.folderstringtruePath to output folder
import.copacetic.output.tars.cleanbooltruefalseRemove artifacts after running Helmper
import.copacetic.output.reports.folderstringtruePath to output folder
import.copacetic.output.reports.cleanbooltruefalseRemove artifacts after running Helmper
import.cosign.enabledboolfalsefalseEnables signing with Cosign
import.cosign.keyRefstringtruePath to Cosign private key
import.cosign.keyRefPassstringtrueCosign private key password
import.cosign.pubKeyRefstringfalsePath to Cosign public key
import.cosign.allowInsecureboolfalsefalseDisable TLS verification
import.cosign.allowHTTPRegistryboolfalsefalseAllow HTTP instead of HTTPS
chartslist(object)[]falseDefines which charts to target
charts[].namestringtrueChart name
charts[].versionstringtrueDesired version of chart. Supports semver literal or semver ranges (semantic version spec 2.0)
charts[].plainHTTPboolfalsefalseUse HTTP instead of HTTPS for repository protocol
charts[].valuesFilePathstring""falsePath to custom values.yaml to customize importing
charts[].imagesobjectnilfalseCustomization options for images in chart
charts[].images.excludelist(object)[]falseDefines which images to exclude from processing
charts[].images.exclude[].refstring""falseContainer Image reference
charts[].images.excludeCopaceticlist(object)[]falseDefines which images to exclude from copacetic patching if copa is enabled
charts[].images.excludeCopacetic[].refstring""falseContainer Image reference
charts[].images.modifylist(object)[]falseDefines which image references to modify before import
charts[].images.modify[].fromstring""falseDefines which image reference should be replaced with to
charts[].images.modify[].fromValuesPathstring""falseDefines which path in the charts default Helm Values to override with to
charts[].images.modify[].tostring Name of the repository""falseDefines new value to be inserted
charts[].repoobjecttrueHelm Repository spec
charts[].repo.namestringtrueName of the repository
charts[].repo.urlstringtrueURL to the repository
charts[].repo.usernamestring""falseUsername to repository for Basic Auth
charts[].repo.passwordstring""falsePassword to Username for Basic Auth
charts[].repo.certFilestring""falsePath to certificate file for Certificate Auth
charts[].repo.keyFilestring""falsePath to key file for Key Auth
charts[].repo.caFilestring""falsePath to custom certificate authority
charts[].repo.insecure_skip_tls_verifyboolfalsefalseSkip TLS verify / Disable SSL
charts[].repo.pass_credentials_allboolfalsefalsePass credentials to dependency charts repositories
imageslist(object)[]falseAdditional container images to include in import
images.refstringtrueContainer image reference
images.patch*boolnilfalseDefine if container image should be patched with Trivy/Copacetic
registrieslist(object)[]falseDefines which registries to import to
registries[].namestringtrueName of registry
registries[].urlstringtrueURL to registry
registries[].insecureboolfalsefalseDisable SSL certificate validation
registries[].plainHTTPboolfalsefalseEnable use of HTTP instead of HTTPS
registries[].sourcePrefixboolfalsefalseAppend source registry name to source image repository
mirrorslist(object)[]falseEnable use of registry mirrors
mirrors.registrystring""trueRegistry to configure mirror for fx docker.io
mirrors.mirrorstring""trueRegistry Mirror URL

Charts

The charts configuration option defines which charts to import.

KeyTypeDefaultRequiredDescription
charts[].namestringtrueChart name
charts[].versionstringtrueDesired version of chart. Supports semver literal or semver ranges (semantic version spec 2.0)
charts[].valuesFilePathstring""falsePath to custom values.yaml to customize importing
charts[].imagesobjectnilfalseCustomization options for images in chart
charts[].images.excludelist(object)[]falseDefines which images to exclude from processing
charts[].images.exclude.refstring""falseContainer Image reference
charts[].images.excludeCopaceticlist(object)[]falseDefines which images to exclude from copacetic patching if copa is enabled
charts[].images.excludeCopacetic.refstring""falseContainer Image reference
charts[].images.modifylist(object)[]falseDefines which image references to modify before import
charts[].images.modify[].fromstring""falseDefines which image reference should be replaced with to
charts[].images.modify[].fromValuesPathstring""falseDefines which path in the charts default Helm Values to override with to
charts[].images.modify[].tostring""falseDefines new value to be inserted

The version supports Semantic Versioning 2.0.0 format versions as Helm.

Semver cheatsheet

Chart sources

Helm Repository

Helmper supports all configuration options for Helm Repositories available in the Helm CLI helm repo add:

KeyTypeDefaultRequiredDescription
charts[].repo.namestringtrueName of the repository
charts[].repo.urlstringtrueURL to the repository
charts[].repo.usernamestring""falseUsername to repository for Basic Auth
charts[].repo.passwordstring""falsePassword to Username for Basic Auth
charts[].repo.certFilestring""falsePath to certificate file for Certificate Auth
charts[].repo.keyFilestring""falsePath to key file for Key Auth
charts[].repo.caFilestring""falsePath to custom certificate authority
charts[].repo.insecure_skip_tls_verifyboolfalsefalseSkip TLS verify / Disable SSL
charts[].repo.pass_credentials_allboolfalsefalsePass credentials to dependency charts repositories

OCI Registry

Not implemented yet. Coming soon.

Images

Helmper provides the option to include additional images in the import flow not extracted from one of the defined Helm Charts. Simply define the additional images in the images configuration option.

Buildkit

addr

Here are the supported formats for import.copacetic.buildkit.addr configuration option:

  • unix:///path/to/buildkit.sock - Connect to buildkit over unix socket.
  • tcp://$BUILDKIT_ADDR:$PORT - Connect to buildkit over TCP. (not recommended for security reasons)
  • docker://<docker connection spec> - Connect to docker, currently only unix sockets are supported, e.g. docker://unix:///var/run/docker.sock (or just docker://).
  • docker-container://my-buildkit-container - Connect to a buildkitd running in a docker container.
  • buildx://my-builder - Connect to a buildx builder (or buildx:// for the currently selected builder). Note: only container-backed buildx instances are currently supported
  • nerdctl-container://my-container-name - Similar to docker-container but uses nerdctl.
  • podman-container://my-container-name - Similar to docker-container but uses podman.
  • ssh://myhost - Connect to a buildkit instance over SSH. Format of the host spec should mimic the SSH command.
  • kubepod://mypod - Connect to buildkit running in a Kubernetes pod. Can also specify kubectl context and pod namespace (kubepod://mypod?context=foo&namespace=notdefault).

See more details in the Copacetic Documentation

mTLS

Helmper supports setting required configuration options for enabling mTLS with an expose Buildkit instance over TCP, although the following configuration options:

  • import.copacetic.buildkitd.CACertPath
  • import.copacetic.buildkitd.certPath
  • import.copacetic.buildkitd.keyPath

Read more in the official docs by moby/buildkit.

Cosign

keyRef

keyRef as support for local files, through remote protocols <some provider>://<some key> or environment variables env://[ENV_VAR]. Read more about all options in the Cosign Docs.

pubKeyRef

pubKeyRef defines the path to the public key used to verify chart and image signatures. pubKeyRef can be omitted when using remote protocol for keyRef as remote KMS protocols usually works with key-pairs. If keyRef is a path to a local file, and pubKeyRef is not define, pubKeyRef will be set to the same path as keyRef, with .pub instead of .key, fx /home/you/keypair/cosign.key becomes /home/you/keypair/cosign.pub.

local

local file
cosign.key

remote

Kubernetes Secret
Kubernetes Secret
k8s://[NAMESPACE]/[KEY]
Azure Key Vault
Azure Key vault
azurekms://[VAULT_NAME][VAULT_URI]/[KEY]

keyRefPass

Helmper supports specifying the password directly in the helmper.yaml as keyRefPass. Alternatively you can use the COSIGN_PASSWORD environment variable to specify the password.

If you use any of the remote options for keyRef you can leave the keyRefPass unspecified.