Elastic Stack Helm chart
ECK
Starting from ECK 2.4.0, a Helm chart is available for managing Elastic Stack resources using the ECK Operator. It is available from the Elastic Helm repository and can be added to your Helm repository list by running the following command:
helm repo add elastic https://helm.elastic.co
helm repo update
The minimum supported version of Helm is 3.2.0.
The Elastic Stack (eck-stack) Helm chart is built on top of individual charts such as eck-elasticsearch and eck-kibana. For more details on its structure and dependencies, refer to the chart repository.
The chart enables you to deploy the core components (Elasticsearch and Kibana) together, along with other Elastic Stack applications if needed, under the same chart release. The following sections guide you through the installation process for multiple use cases. Choose the command that best fits your setup.
All the provided examples deploy the applications in a namespace named elastic-stack. Consider adapting the commands to your use case.
Similar to the quickstart examples for Elasticsearch and Kibana, this section describes how to setup an Elasticsearch cluster with a simple Kibana instance managed by ECK, and how to customize a deployment using the eck-stack Helm chart’s values.
# Install an eck-managed Elasticsearch and Kibana using the default values, which deploys the quickstart examples.
helm install es-kb-quickstart elastic/eck-stack -n elastic-stack --create-namespace
You can find example Helm values files for deploying and managing more advanced Elasticsearch and Kibana setups in the project repository.
To use one or more of these example configurations, use the --values Helm option, as seen in the following section.
# Install an eck-managed Elasticsearch and Kibana using the Elasticsearch node roles example with hot, warm, and cold data tiers, and the Kibana example customizing the http service.
helm install es-quickstart elastic/eck-stack -n elastic-stack --create-namespace \
--values https://raw.githubusercontent.com/elastic/cloud-on-k8s/3.2/deploy/eck-stack/examples/elasticsearch/hot-warm-cold.yaml \
--values https://raw.githubusercontent.com/elastic/cloud-on-k8s/3.2/deploy/eck-stack/examples/kibana/http-configuration.yaml
The following section builds upon the previous section, and allows installing Fleet Server, and Fleet-managed Elastic Agents along with Elasticsearch and Kibana.
# Install an eck-managed Elasticsearch, Kibana, Fleet Server, and managed Elastic Agents using custom values.
helm install eck-stack-with-fleet elastic/eck-stack \
--values https://raw.githubusercontent.com/elastic/cloud-on-k8s/3.2/deploy/eck-stack/examples/agent/fleet-agents.yaml -n elastic-stack
The following section builds upon the previous sections, and allows installing Logstash along with Elasticsearch, Kibana and Beats.
# Install an eck-managed Elasticsearch, Kibana, Beats and Logstash using custom values.
helm install eck-stack-with-logstash elastic/eck-stack \
--values https://raw.githubusercontent.com/elastic/cloud-on-k8s/3.2/deploy/eck-stack/examples/logstash/basic-eck.yaml -n elastic-stack
The following section builds upon the previous sections, and allows installing a standalone Elastic APM Server along with Elasticsearch and Kibana.
# Install an eck-managed Elasticsearch, Kibana, and standalone APM Server using custom values.
helm install eck-stack-with-apm-server elastic/eck-stack \
--values https://raw.githubusercontent.com/elastic/cloud-on-k8s/3.2/deploy/eck-stack/examples/apm-server/basic.yaml -n elastic-stack
Enterprise Search is not available in Elastic Stack versions 9.0 and later. For an example deployment of Elasticsearch version 8.x, Kibana 8.x, and an 8.x Enterprise Search server using the Helm chart, refer to the previous ECK documentation.
You can install individual components in one of two ways using the provided Helm charts:
- Using Helm values with the
eck-stackchart to include only the components you need - Using the individual Helm charts directly, without using the
eck-stackchart
The following examples show how to install only Elasticsearch using each approach.
This example installs only Elasticsearch by deploying the eck-stack chart and excluding Kibana. By default, the chart deploys both Elasticsearch and Kibana.
helm install es-quickstart elastic/eck-stack -n elastic-stack --create-namespace --set=eck-kibana.enabled=false
This example installs Elasticsearch by deploying the eck-elasticsearch chart on its own.
helm install es-quickstart elastic/eck-elasticsearch -n elastic-stack --create-namespace
Whether you want to upgrade your Elastic Stack components to a new version or modify the configuration of your existing installation (known as a release), you use the helm upgrade command. The key principle is to use the same options and values you used during installation, along with any changes you want to apply.
The helm upgrade command requires the following arguments:
- The name of the release to update, which must match the name used with
helm install. - The chart name, which must be the same chart used during installation.
When using helm upgrade, you must include all the options and values from your original installation command (for example, custom values files and --set options). Helm does not retain your previous configuration, so omitting them causes values to revert to their default settings.
By default, helm upgrade uses the latest available version of the chart unless the --version option is specified. Refer to View chart versions to list the available chart versions or the version associated with an installed release.
There is an important distinction between the Helm chart version and the Elastic Stack component version:
- Chart version: The version of the Helm chart itself (for example,
eck-stackversion 0.17.0). You can specify this using the--versionflag in your Helminstallorupgradecommands. - Component version: The version of a Elastic Stack component (for example, Elasticsearch 8.15.0 or Kibana 8.15.0). You can specify this in your values file or by using
--setparameters.
Each chart version defines default Elastic Stack component versions. Unless explicitly overridden, installing or upgrading the chart deploys those default versions.
All examples in this section assume that your release was installed using the eck-stack Helm chart. Adapt the examples if you deployed the individual charts directly.
To upgrade an installed release named es-kb-quickstart to the latest version of the Helm chart, do the following:
helm repo update
helm upgrade es-kb-quickstart elastic/eck-stack -n elastic-stack
- Refresh the local chart cache.
By default, upgrading the Helm chart also upgrades the Elastic Stack components to the versions associated with that chart version. To override this behavior, you can explicitly set the Elastic Stack component versions to use, as shown in the following section.
If for example you want to upgrade the Elastic Stack components to a later version that is not the default for the Helm chart, you can explicitly set the component versions using Helm values or --set options.
The following examples show both ways to upgrade the release to the latest available version of the Helm chart and all Elastic Stack components to version 9.2.2.
Use --set options to override the component versions directly from the command line:
helm repo update
helm upgrade es-kb-quickstart elastic/eck-stack -n elastic-stack \
--set eck-elasticsearch.version={{version.stack}} \
--set eck-kibana.version={{version.stack}}
- Refresh the local chart cache.
- Specify versions for all the components you deploy. Components without an explicitly defined version continue to use the default versions provided by the chart.
If you already use a values file for this release, update it to include the following settings. Otherwise, create a new values file (for example, custom-values.yaml) with the following content:
eck-elasticsearch:
version: 9.2.2
eck-kibana:
version: 9.2.2
- Specify versions for all the components you deploy. Components without an explicitly defined version continue to use the default versions provided by the chart.
Then upgrade the release using the values file:
helm repo update
helm upgrade es-kb-quickstart elastic/eck-stack -n elastic-stack -f custom-values.yaml
- Refresh the local chart cache.
To apply configuration changes to an existing release, run helm upgrade with the complete configuration you want the release to use. This includes both the current configuration and any new changes.
For example, if you installed the quickstart release and want to scale the Elasticsearch cluster to three nodes and expose the Kibana service using a LoadBalancer, do the following:
- Create a values file with the desired configuration, and save it as
custom-values.yaml:
eck-elasticsearch:
nodeSets:
- name: default
count: 3
eck-kibana:
http:
service:
spec:
# This deploys a load balancer in a cloud service provider, where supported.
type: LoadBalancer
- Apply the configuration using
helm upgrade:
helm upgrade es-kb-quickstart elastic/eck-stack \
-n elastic-stack \
-f custom-values.yaml
The previous example also upgrades the Elastic Stack components if a newer Helm chart version is available. To avoid this, identify the chart version currently used by your release and include the --version option when running helm upgrade.
Ingress is a standard Kubernetes concept. While ECK-managed workloads can be publicly exposed using ingress resources, and we provide example configurations, setting up an Ingress controller requires in-house Kubernetes expertise.
If ingress configuration is challenging or unsupported in your environment, consider using standard LoadBalancer services as a simpler alternative.
Both Elasticsearch and Kibana support Ingress, which can be enabled using the following options:
If an individual chart is used (not eck-stack)
The following command installs an Elasticsearch cluster using the eck-elasticsearch chart and configures an ingress resource:
helm install es-quickstart elastic/eck-elasticsearch -n elastic-stack --create-namespace \
--set=ingress.enabled=true --set=ingress.hosts[0].host=elasticsearch.example.com --set=ingress.hosts[0].path="/"
If eck-stack chart is used
The following command deploys the basic Elasticsearch and Kibana example with ingress resources for both components:
helm install es-kb-quickstart elastic/eck-stack -n elastic-stack --create-namespace \
--set=eck-elasticsearch.ingress.enabled=true --set=eck-elasticsearch.ingress.hosts[0].host=elasticsearch.example.com --set=eck-elasticsearch.ingress.hosts[0].path="/" \
--set=eck-kibana.ingress.enabled=true --set=eck-kibana.ingress.hosts[0].host=kibana.example.com --set=eck-kibana.ingress.hosts[0].path="/"
For illustration purposes, the ingress objects created by the previous command look similar to the following:
# Source: eck-stack/charts/eck-elasticsearch/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: elasticsearch
labels:
...
spec:
rules:
- host: "elasticsearch.example.com"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: elasticsearch-es-http
port:
number: 9200
---
# Source: eck-stack/charts/eck-kibana/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: es-kb-quickstart-eck-kibana
labels:
...
spec:
rules:
- host: "kibana.example.com"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: es-kb-quickstart-eck-kibana-kb-http
port:
number: 5601
You can view all configurable values of the Elastic Stack helm chart of the individual charts by running the following:
helm show values elastic/eck-stack
helm show values elastic/eck-elasticsearch
helm show values elastic/eck-kibana
helm show values elastic/eck-agent
helm show values elastic/eck-beats
helm show values elastic/eck-apm-server
helm show values elastic/eck-fleet-server
helm show values elastic/eck-logstash
To view the available versions of a Helm chart, update the local chart cache and use the helm repo search command with --versions option:
helm repo update
helm repo search elastic/eck-stack --versions
- Applicable to
eck-stackor the individual charts
To view the version associated with an installed release, check the CHART column of the helm list command output. For example:
$ helm list -n elastic-stack
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
es-kb-quickstart elastic-stack 2 2025-12-17 11:24:06.156007 +0100 CET deployed eck-stack-0.17.0