This chart helps you deploy heimdall into your Kubernetes cluster using Helm.
|
Note
|
Heimdall follows the Kubernetes support policy and supports at least the three latest minor Kubernetes versions. General functionality cannot be guaranteed for versions older than that. |
This chart supports setting of environment variables for the deployment, e.g. to provide OTEL configuration, which can be configured using either the env or envFrom keys. The latter allows pulling the corresponding values from referenced configmaps or secrets.
If you need to override the name of the heimdall resources such as the deployment or services, the traditional nameOverride and fullnameOverride properties are supported.
If you want to have detailed CPU & memory profiling information, you can enable the profiling service and let your APM scrape the corresponding pprof data. If the profiling service is enabled, the required annotations for Phlare are automatically set.
Since you can obtain the chart from heimdall’s git repository, its Helm repository hosted on GitHub Pages, or as an OCI image, the following examples don’t differentiate between these sources. Instead, the code fragments are using a <chart-reference> placeholder.
If you want to install a release from its sources, perform the following steps first. The actual value for abovesaid <chart-reference> would then be ./charts/heimdall.
-
Clone the heimdall repo:
$ git clone https://github.com/dadrus/heimdall
-
Change your working directory to the root directory of the cloned repository:
$ cd heimdall
If you want to install the release from the Helm repository hosted on GitHub Pages, perform the following steps. The actual value for abovesaid <chart-reference> would then be dadrus/heimdall.
-
Make the chart repository known to Helm
$ helm repo add dadrus https://dadrus.github.io/heimdall/charts
-
Update information of available charts
$ helm repo update
Alternatively, you can use the OCI image (oci://ghcr.io/dadrus/heimdall/chart) published to GHCR, which provides enhanced security. The OCI image is signed and includes SLSA provenance, which can be verified for authenticity and integrity as described in Verification of Heimdall Artifacts.
To install the chart with the release name "my-release" ("my-release" is the name that you choose), perform
$ helm install my-release <chart-reference> \
-n <namespace-to-install-heimdall-into> \
-f <path/to/your/values.yaml> \
-f <path/to/your/heimdall/config.yaml>A list of supported chart values can be found at the end of this README. For heimdall specific configuration, please refer to heimdall’s documentation.
If you have configured heimdall to use the kubernetes provider, heimdall will require the RuleSet CRD being installed in the cluster. The Helm chart is configured to install it automatically on first heimdall installation and if this CRD is not already present in the cluster.
Regardless of the installation method, if heimdall is running in decision mode, you need to connect it to your Ingress Controller or Gateway API implementation. This ensures traffic is validated by heimdall prior to being routed to the downstream services. Check the existing Guides for more information.
The Helm chart upgrades the RuleSet CRD alongside heimdall’s resources only when explicitly enabled by setting the crds.updateEnabled property to true.
If you prefer to manage CRD upgrades manually, you can render and apply the new CRD yourself using the following command:
helm template <release-name> ./charts/heimdall \
--show-only templates/crds/ruleset.yaml \
--set crds.updateEnabled=true \
-n <namespace-heimdall-is-installed-into> \
-f <path/to/your/values.yaml> \
-f <path/to/your/heimdall/config.yaml> | \
kubectl apply -f -|
Note
|
Starting with v0.18.0, Heimdall implements a conversion service that is registered as a webhook in the Please note that the API server requires the conversion service to be accessible via TLS. Therefore, it will only be exposed and configured in the CRD if, and only if, heimdall’s kubernetes provider is configured to expose the corresponding controller service endpoints via TLS. For more information about the migration process and also how to migrate between |
To uninstall/delete the release "my-release", execute
$ helm uninstall my-releaseThis command removes all Kubernetes components associated with the release.
The configuration of heimdall itself is simply added to the root of the helm values. It is not included in the list below, please refer to the [general documentation](https://dadrus.github.io/heimdall/dev/docs/operations/configuration/).
|
Note
|
It is recommended to keep heimdall-specific configuration and chart-specific configuration in separate files and supply both as value files to Helm. This is, however, not strictly required. Example: helm install -f /path/to/chart-values.yaml -f /path/to/heimdall-config.yaml ... |
The following table lists the other configurable parameters of the chart and their default values.
| Parameter | Default Value |
|---|---|
The mode of operation for the heimdall installation. Can be |
|
The image repository to load heimdall image from |
|
The tag of the image to use |
|
The pull policy to apply |
|
Image pull secrets |
|
Enables you to override the name used for heimdall (which is "heimdall") |
|
Enables you to override the name used for the service created for the heimdall deployment |
|
Enables you to set additional annotations for the deployment |
|
Enables you to set additional labels for the deployment |
|
Enables you to set additional annotations for the pod. If metrics are not disabled, the prometheus.io/scrape: "true"
prometheus.io/path: "/metrics"
prometheus.io/port: 9464The used port can be adjusted via the If profiling is enabled, following annotations are added as well phlare.grafana.com/scrape: "true"
phlare.grafana.com/port: 10251The port value in the above annotation depends on the settings for the profiling service. |
|
Enables you to set the security context for the pod |
|
Enables you to set the security context for the deployment |
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000 |
Specifies resource requests and limits for the deployment. Note: Memory usage depends on the cache backend and its configuration. By default, heimdall uses an in-memory cache limited to 128Mi. With Redis (with client-side caching), the limit is also 128Mi. The heimdall process itself requires ~64Mi. Example: deployment:
resources:
limits:
cpu: 125m
memory: 256Mi
requests:
cpu: 125m
memory: 256Mi |
|
Allows specifying the amount of desired replicas (only used if HPA is disabled) |
|
Enables or disables HPA based on CPU and memory utilization If enabled, |
|
Minimal amount of desired replicas |
|
Maximim amount of desired replicas |
|
Target CPU utilization in % to scale up Requires |
|
Target Memory utilization in % to scale up Requires |
|
Node selector settings for the deployment |
|
Tolerations for the deploment |
|
Affinity settings for the deploment |
|
Optional volumes to use |
|
Optional volumeMounts to use |
|
Labels for the |
|
Annotations for the |
|
The main port configured in the |
|
The name of the main port configured in the |
|
The management port configured in the |
|
The name of the port configured in the |
|
Labels for the |
|
Annotations for the |
|
The port configured in the |
|
The name of the port configured in the |
|
Labels for the |
|
Annotations for the |
|
The port configured in the |
|
The name of the port configured in the |
|
Allows setting the |
|
Can be used to specify required annotations for the |
|
Allows setting additional labels for the |
|
Can be used to specify required annotations for the |
|
Allows specifying a namespaceSelector for the |
|
How long the webhook implemented by the admission controller is allowed to run while validating |
|
Environment variables, which should be made available to the heimdall deployment. Variables can be specified as key-value pairs with string values or as an object referencing a ConfigMap or Secret key. E.g. env:
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: grpc
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: http://tempo.tempo.svc.cluster.local:4317
EXAMPLE_KEY:
configMapKeyRef:
name: example-configmap
key: EXAMPLE_KEY |
|
Environment variables, which should be made available to the heimdall deployment, but are pulled from a ConfigMap or Secret resource instead of specified directly. envFrom:
- configMapRef:
name: example-configmap |
|
Optional extra arguments to pass to heimdall when starting. E.g. to start heimdall in decision mode for integration with envoy v3 ext_auth, set it to: extraArgs:
- --envoy-grpc |
|
Controls whether the CRD should be updated. |
|
Defines which |
|
Controls, whether a
|
|
Namespace to deploy the |
|
Enables you to set additional labels for the |
|
The label to use from heimdall’s Pod to retrieve the job name from. |
|
Labels which are transferred from heimdall’s Pod object onto the ingested metrics. |
|
Interval at which Prometheus scrapes the metrics from the target. If set to |
|
Defines the timeout after which Prometheus considers the scrape to be failed. Must be bigger then the scrape interval ( |
|
Relabeling rules to apply to the samples before ingestion. |
|
Defines the relabeling rules to apply the target’s metadata labels. See relabel_config for more details. |
|