Configuration
jhelm uses Spring Boot @ConfigurationProperties for all configuration. Properties can be set in application.yaml, application.properties, environment variables, or system properties.
The section below is the practical "how do I set this" guide for operators; the property reference tables further down list every available setting.
|
The repository, registry, and kubeconfig paths default to Helm’s own locations and honor Helm’s
|
1. Configuring jhelm (for operators)
The jhelm CLI is a Spring Boot application, so it reads the settings on this page from three
sources — no Spring knowledge required. Pick whichever fits your environment; they can be
combined, and later ones in this list win:
-
a config file (
application.yamlor.properties), -
an environment variable,
-
a JVM system property (
-D).
The command line itself is reserved for helm-style subcommands and flags
(jhelm install …, -n, --set). Do not pass settings as --jhelm.config-path=… on the
command line — that is a Spring option, not a jhelm flag, and the CLI rejects it as unknown. Use
one of the three sources below.
|
1.1. 1. A YAML (or properties) file
Put an application.yaml next to where you run jhelm (the current directory, or a config/
subdirectory) and it is picked up automatically:
jhelm:
config-path: /etc/jhelm/repositories.yaml
insecure-skip-tls-verify: false
kubernetes:
kubeconfig-path: /home/deploy/.kube/config
The same settings in application.properties form:
jhelm.config-path=/etc/jhelm/repositories.yaml
jhelm.kubernetes.kubeconfig-path=/home/deploy/.kube/config
To keep the file anywhere else, point at it with an environment variable (trailing slash for a directory, or give the full file path):
export SPRING_CONFIG_ADDITIONAL_LOCATION=/etc/jhelm/
jhelm list -n production
1.2. 2. Environment variables
Every property maps to an environment variable: uppercase it and replace . and - with _.
This is usually the simplest option for CI and containers:
export JHELM_CONFIG_PATH=/etc/jhelm/repositories.yaml
export JHELM_KUBERNETES_KUBECONFIG_PATH=/home/deploy/.kube/config
jhelm list -n production
| Property | Environment variable |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
1.3. 3. JVM system properties (-D)
When you launch the jar directly, pass -D<property>=<value> before -jar:
java -Djhelm.config-path=/etc/jhelm/repositories.yaml -jar jhelm.jar list -n production
If jhelm is a wrapper or alias (so you cannot control the java arguments), put the same
-D flags in the standard JVM environment variable instead — the JVM applies them and they
never reach the command parser:
export JAVA_TOOL_OPTIONS="-Djhelm.config-path=/etc/jhelm/repositories.yaml"
jhelm list -n production
1.4. Profiles (environment-specific config)
A profile is a named set of overrides — one file per environment (dev, staging, prod)
layered on top of the base application.yaml. Create application-prod.yaml beside your base
file, then activate it by name:
# application-prod.yaml — only used when the "prod" profile is active
jhelm:
config-path: /etc/jhelm/prod-repositories.yaml
insecure-skip-tls-verify: false
export SPRING_PROFILES_ACTIVE=prod # or: java -Dspring.profiles.active=prod -jar jhelm.jar …
jhelm list -n production
You can also keep every environment in a single file, separated by ---, gating each block with
spring.config.activate.on-profile:
jhelm:
template-cache-enabled: true # shared by all profiles
---
spring:
config:
activate:
on-profile: prod
jhelm:
insecure-skip-tls-verify: false
1.5. Spring Boot references
These external pages cover the mechanics in more depth (jhelm uses them unchanged):
-
Externalized Configuration — files, environment variables,
-D, and their precedence. -
Profile-specific files — how
application-<profile>.yamland---documents are selected.
2. Core Properties (jhelm.*)
Provided by JhelmCoreAutoConfiguration when jhelm-core is on the classpath.
| Property | Type | Default | Description |
|---|---|---|---|
|
|
|
Path to the Helm repository configuration file. Defaults to |
|
|
|
Path to the OCI registry auth configuration file. Uses a platform-specific default location when not set. |
|
|
|
Skip TLS certificate verification when downloading charts over HTTP. |
|
|
|
Enable caching of parsed template ASTs in an LRU cache. Improves rendering performance for repeated chart renders. |
|
|
|
Maximum number of parsed templates to keep in the LRU cache. Only applies when |
3. Kubernetes Properties (jhelm.kubernetes.*)
Provided by JhelmKubeAutoConfiguration when jhelm-kube is on the classpath.
| Property | Type | Default | Description |
|---|---|---|---|
|
|
|
Path to the kubeconfig file. When not set, uses standard Kubernetes auto-detection: |
4. Precedence
When the same setting is supplied in more than one place, Spring Boot resolves it in this order
(highest wins): JVM system properties (-D) > environment variables > profile-specific file
(application-<profile>.yaml) > base application.yaml. So a -D flag or an environment
variable always overrides a value baked into a config file — handy for a one-off override in CI
without editing the file.