This Helm chart is a lightweight way to configure and run our official APM Server Docker image.
Warning When it comes to running the Elastic on Kubernetes infrastructure, we recommend Elastic Cloud on Kubernetes (ECK) as the best way to run and manage the Elastic Stack.
ECK offers many operational benefits for both our basic-tier and our enterprise-tier customers, such as spinning up cluster nodes that were lost on failed infrastructure, seamless upgrades, rolling cluster changes, and much much more.
With the release of the Elastic Stack Helm charts for Elastic version 8.5.1, we are handing over the ongoing maintenance of our Elastic Stack Helm charts to the community and contributors. This repository will finally be archived after 6 months time. Elastic Stacks deployed on Kubernetes through Helm charts will still be fully supported under EOL limitations.
Since we want to provide an even better experience for our customers by running the Elastic Stack on Kubernetes, we will continue maintaining the Helm charts applicable to ECK Custom Resources. These charts can be found in the ECK repository.
Helm charts will currently be maintained for ECK Enterprise-tier customers, however, we encourage the community to engage with the existing Helm charts for the Elastic Stack and continue supporting their ongoing maintenance.
See #1731 for more details.
See supported configurations for more details.
-
Add the Elastic Helm charts repo:
helm repo add elastic https://helm.elastic.co
-
Install it
helm install apm-server elastic/apm-server
-
Clone the git repo:
git clone [email protected]:elastic/helm-charts.git
-
Install it:
helm install apm-server ./helm-charts/apm-server --set imageTag=8.5.1
Please always check CHANGELOG.md and BREAKING_CHANGES.md before upgrading to a new chart version.
-
The default APM Server configuration file for this chart is configured to use an Elasticsearch endpoint as configured by the rest of these Helm charts. This can easily be overridden in the config value
apmConfig.apm-server.yml
. -
Automated testing of this chart is currently only run against GKE (Google Kubernetes Engine).
-
This repo includes several examples of configurations that can be used as a reference. They are also used in the automated testing of this chart.
Parameter | Description | Default |
---|---|---|
affinity |
Configurable affinity | {} |
apmConfig |
Allows you to add any config files in /usr/share/apm-server/config such as apm-server.yml |
see values.yaml |
autoscaling |
Enable the horizontal pod autoscaler | see values.yaml |
envFrom |
Templatable string to be passed to the environment from variables which will be appended to the envFrom: definition for the container |
[] |
extraContainers |
Templatable string of additional containers to be passed to the tpl function |
"" |
extraEnvs |
Extra environment variables which will be appended to the env: definition for the container |
see values.yaml |
extraInitContainers |
Templatable string of additional containers to be passed to the tpl function |
"" |
extraVolumeMounts |
List of additional volumeMounts |
[] |
extraVolumes |
List of additional volumes |
[] |
fullnameOverride |
Overrides the full name of the resources. If not set the name will default to .Release.Name - .Values.nameOverride or .Chart.Name |
"" |
hostAliases |
Configurable hostAliases | [] |
imagePullPolicy |
The Kubernetes imagePullPolicy value | IfNotPresent |
imagePullSecrets |
Configuration for imagePullSecrets so that you can use a private registry for your image | [] |
imageTag |
The APM Server Docker image tag | 8.5.1 |
image |
The APM Server Docker image | docker.elastic.co/apm/apm-server |
ingress |
Configurable ingress to expose the APM Server service | see values.yaml |
labels |
Configurable labels applied to all APM server pods | {} |
lifecycle |
Configurable lifecycle hooks | false |
livenessProbe |
Parameters to pass to liveness probe checks for values such as timeouts and thresholds | see values.yaml |
managedServiceAccount |
Whether the serviceAccount should be managed by this Helm chart. Set this to false in order to manage your own service account and related roles |
true |
nameOverride |
Overrides the chart name for resources. If not set the name will default to .Chart.Name |
"" |
nodeSelector |
Configurable nodeSelector | {} |
podAnnotations |
Configurable annotations applied to all APM Server pods | {} |
podSecurityContext |
Configurable podSecurityContext for APM Server pod execution environment | see values.yaml |
priorityClassName |
The name of the PriorityClass. No default is supplied as the PriorityClass must be created first |
"" |
readinessProbe |
Parameters to pass to readiness probe checks for values such as timeouts and thresholds | see values.yaml |
replicas |
Number of APM servers to run | 1 |
resources |
Allows you to set the resources for the Deployment |
see values.yaml |
secretMounts |
Allows you easily mount a secret as a file inside the Deployment . Useful for mounting certificates and other secrets. See values.yaml for an example |
[] |
serviceAccount |
Custom serviceAccount that APM Server will use during execution. By default will use the serviceAccount created by this chart |
"" |
serviceAccountAnnotations |
Annotations to be added to the ServiceAccount that is created by this chart. | {} |
service |
Configurable service to expose the APM Server service. See values.yaml for an example | see values.yaml |
terminationGracePeriod |
Termination period (in seconds) to wait before killing APM Server pod process on pod shutdown | 30 |
tolerations |
Configurable tolerations | [] |
updateStrategy |
Allows you to change the default updateStrategy for the deployment | see values.yaml |
This Helm chart can use existing Kubernetes secrets to setup credentials or certificates for examples. These secrets should be created outside of this chart and accessed using environment variables and volumes.
An example can be found in examples/security.
Please check CONTRIBUTING.md before any contribution or for any questions about our development and testing process.