[bitnami/elasticsearch] Elasticsearch hpa (#6562)

* Added Elasticsearch HPAs

* Updated elasticsearch chart version, added autoscaling to readme. Also tidied up the readme by splitting big table into groups

* Update bitnami/elasticsearch/templates/master-hpa.yaml

Co-authored-by: Alejandro Moreno <amorenoc@vmware.com>

Co-authored-by: Alejandro Moreno <amorenoc@vmware.com>
This commit is contained in:
mahgo
2021-06-07 18:27:06 +10:00
committed by GitHub
parent a05c4b9f86
commit 5937747f5c
6 changed files with 194 additions and 5 deletions

View File

@@ -25,4 +25,4 @@ name: elasticsearch
sources:
- https://github.com/bitnami/bitnami-docker-elasticsearch
- https://www.elastic.co/products/elasticsearch
version: 15.2.4
version: 15.3.0

View File

@@ -52,19 +52,26 @@ $ helm delete --purge my-release
The following table lists the configurable parameters of the Elasticsearch chart and their default values.
### Global parameters
| Parameter | Description | Default |
|---------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|
| `global.imageRegistry` | Global Docker image registry | `nil` |
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
| `global.storageClass` | Global storage class for dynamic provisioning | `nil` |
| `global.coordinating.name` | Coordinating-only node pod name at global level to be used also in the Kibana subchart | `coordinating-only` |
### Common parameters
| Parameter | Description | Default |
|---------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|
| `image.registry` | Elasticsearch image registry | `docker.io` |
| `image.repository` | Elasticsearch image repository | `bitnami/elasticsearch` |
| `image.tag` | Elasticsearch image tag | `{TAG_NAME}` |
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
| `nameOverride` | String to partially override common.names.fullname template with a string (will prepend the release name) | `nil` |
| `fullnameOverride` | String to fully override common.names.fullname template with a string | `nil` |
| `nameOverride` | String to partially override common.names.fullname template with a string (will prepend the release name) | `nil` |
| `fullnameOverride` | String to fully override common.names.fullname template with a string | `nil` |
| `name` | Elasticsearch cluster name | `elastic` |
| `plugins` | Comma, semi-colon or space separated list of plugins to install at initialization | `nil` |
| `snapshotRepoPath` | File System snapshot repository path | `nil` |
@@ -77,6 +84,12 @@ The following table lists the configurable parameters of the Elasticsearch chart
| `extraEnvVars` | Array containing extra env vars to be added to all pods (evaluated as a template) | `[]` |
| `extraEnvVarsConfigMap` | ConfigMap containing extra env vars to be added to all pods (evaluated as a template) | `nil` |
| `extraEnvVarsSecret` | Secret containing extra env vars to be added to all pods (evaluated as a template) | `nil` |
| `clusterDomain` | Kubernetes cluster domain | `cluster.local` |
### Master parameters
| Parameter | Description | Default |
|---------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|
| `master.name` | Master-eligible node pod name | `master` |
| `master.replicas` | Desired number of Elasticsearch master-eligible nodes | `2` |
| `master.updateStrategy.type` | Update strategy for Master statefulset | `RollingUpdate` |
@@ -129,7 +142,16 @@ The following table lists the configurable parameters of the Elasticsearch chart
| `master.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
| `master.serviceAccount.create` | Enable creation of ServiceAccount for the master node | `false` |
| `master.serviceAccount.name` | Name of the created serviceAccount | Generated using the `elasticsearch.master.fullname` template |
| `clusterDomain` | Kubernetes cluster domain | `cluster.local` |
| `master.autoscaling.enabled` | Enable autoscaling for master replicas | `false` |
| `master.autoscaling.minReplicas` | Minimum number of master replicas | `2` |
| `master.autoscaling.maxReplicas` | Maximum number of master replicas | `11` |
| `master.autoscaling.targetCPU` | Target CPU utilization percentage for master replica autoscaling | `nil` |
| `master.autoscaling.targetMemory` | Target Memory utilization percentage for master replica autoscaling | `nil` |
### Coordinating parameters
| Parameter | Description | Default |
|---------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|
| `coordinating.replicas` | Desired number of Elasticsearch coordinating-only nodes | `2` |
| `coordinating.hostAliases` | Add deployment host aliases | `[]` |
| `coordinating.updateStrategy.type` | Update strategy for Coordinating Deployment | `RollingUpdate` |
@@ -173,6 +195,15 @@ The following table lists the configurable parameters of the Elasticsearch chart
| `coordinating.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
| `coordinating.serviceAccount.create` | Enable creation of ServiceAccount for the coordinating-only node | `false` |
| `coordinating.serviceAccount.name` | Name of the created serviceAccount | Generated using the `elasticsearch.coordinating.fullname` |
| `coordinating.autoscaling.enabled` | Enable autoscaling for coordinating replicas | `false` |
| `coordinating.autoscaling.minReplicas` | Minimum number of coordinating replicas | `2` |
| `coordinating.autoscaling.maxReplicas` | Maximum number of coordinating replicas | `11` |
| `coordinating.autoscaling.targetCPU` | Target CPU utilization percentage for coordinating replica autoscaling | `nil` |
| `coordinating.autoscaling.targetMemory` | Target Memory utilization percentage for coordinating replica autoscaling | `nil` |
### Data parameters
| Parameter | Description | Default |
|---------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|
| `data.name` | Data node pod name | `data` |
| `data.replicas` | Desired number of Elasticsearch data nodes | `2` |
| `data.hostAliases` | Add deployment host aliases | `[]` |
@@ -221,6 +252,16 @@ The following table lists the configurable parameters of the Elasticsearch chart
| `data.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
| `data.serviceAccount.create` | Enable creation of ServiceAccount for the data node | `false` |
| `data.serviceAccount.name` | Name of the created serviceAccount | Generated using the `elasticsearch.data.fullname` template |
| `data.autoscaling.enabled` | Enable autoscaling for data replicas | `false` |
| `data.autoscaling.minReplicas` | Minimum number of data replicas | `2` |
| `data.autoscaling.maxReplicas` | Maximum number of data replicas | `11` |
| `data.autoscaling.targetCPU` | Target CPU utilization percentage for data replica autoscaling | `nil` |
| `data.autoscaling.targetMemory` | Target Memory utilization percentage for data replica autoscaling | `nil` |
### Ingest parameters
| Parameter | Description | Default |
|---------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|
| `ingest.enabled` | Enable ingest nodes | `false` |
| `ingest.name` | Ingest node pod name | `ingest` |
| `ingest.replicas` | Desired number of Elasticsearch ingest nodes | `2` |
@@ -263,6 +304,11 @@ The following table lists the configurable parameters of the Elasticsearch chart
| `ingest.readinessProbe.timeoutSeconds` | When the probe times out (ingest nodes pod) | `5` |
| `ingest.readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (ingest nodes pod) | `1` |
| `ingest.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
### Curator parameters
| Parameter | Description | Default |
|---------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|
| `curator.enabled` | Enable Elasticsearch Curator cron job | `false` |
| `curator.name` | Elasticsearch Curator pod name | `curator` |
| `curator.image.registry` | Elasticsearch Curator image registry | `docker.io` |
@@ -303,6 +349,11 @@ The following table lists the configurable parameters of the Elasticsearch chart
| `curator.envFromSecrets` | Environment variables from secrets to the cronjob container | `{}` |
| `curator.envFromSecrets.*.from.secret` | - `secretKeyRef.name` used for environment variable | |
| `curator.envFromSecrets.*.from.key` | - `secretKeyRef.key` used for environment variable | |
### Metrics parameters
| Parameter | Description | Default |
|---------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|
| `metrics.enabled` | Enable prometheus exporter | `false` |
| `metrics.name` | Metrics pod name | `metrics` |
| `metrics.extraArgs` | Extra arguments to add to the default exporter command | `[]` |
@@ -329,12 +380,22 @@ The following table lists the configurable parameters of the Elasticsearch chart
| `metrics.serviceMonitor.interval` | Interval at which metrics should be scraped. | `nil` (Prometheus Operator default value) |
| `metrics.serviceMonitor.scrapeTimeout` | Timeout after which the scrape is ended | `nil` (Prometheus Operator default value) |
| `metrics.serviceMonitor.selector` | Prometheus instance selector labels | `nil` |
### Sysctl Image parameters
| Parameter | Description | Default |
|---------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|
| `sysctlImage.enabled` | Enable kernel settings modifier image | `true` |
| `sysctlImage.registry` | Kernel settings modifier image registry | `docker.io` |
| `sysctlImage.repository` | Kernel settings modifier image repository | `bitnami/bitnami-shell` |
| `sysctlImage.tag` | Kernel settings modifier image tag | `"10"` |
| `sysctlImage.pullPolicy` | Kernel settings modifier image pull policy | `Always` |
| `sysctlImage.resources` | Init container resource requests/limit | `requests: {}, limits: {}` |
### VolumePermissions parameters
| Parameter | Description | Default |
|---------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|
| `volumePermissions.enabled` | Enable init container that changes volume permissions in the data directory (for cases where the default k8s `runAsUser` and `fsUser` values do not work ) | `false` |
| `volumePermissions.image.registry` | Init container volume-permissions image registry | `docker.io` |
| `volumePermissions.image.repository` | Init container volume-permissions image name | `bitnami/bitnami-shell` |

View File

@@ -0,0 +1,35 @@
{{- if .Values.coordinating.autoscaling.enabled }}
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: {{ include "elasticsearch.coordinating.fullname" . }}
namespace: {{ .Release.Namespace | quote }}
labels: {{- include "common.labels.standard" . | nindent 4 }}
app.kubernetes.io/component: coordinating-only
{{- if .Values.commonLabels }}
{{- include "common.tplvalues.render" (dict "value" .Values.commonLabels "context" $) | nindent 4 }}
{{- end }}
{{- if .Values.commonAnnotations }}
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
{{- end }}
spec:
scaleTargetRef:
apiVersion: {{ template "common.capabilities.deployment.apiVersion" . }}
kind: Deployment
name: {{ include "elasticsearch.coordinating.fullname" . }}
minReplicas: {{ .Values.coordinating.autoscaling.minReplicas }}
maxReplicas: {{ .Values.coordinating.autoscaling.maxReplicas }}
metrics:
{{- if .Values.coordinating.autoscaling.targetCPU }}
- type: Resource
resource:
name: cpu
targetAverageUtilization: {{ .Values.coordinating.autoscaling.targetCPU }}
{{- end }}
{{- if .Values.coordinating.autoscaling.targetMemory }}
- type: Resource
resource:
name: memory
targetAverageUtilization: {{ .Values.coordinating.autoscaling.targetMemory }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,35 @@
{{- if .Values.data.autoscaling.enabled }}
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: {{ include "elasticsearch.data.fullname" . }}
namespace: {{ .Release.Namespace | quote }}
labels: {{- include "common.labels.standard" . | nindent 4 }}
app.kubernetes.io/component: data
{{- if .Values.commonLabels }}
{{- include "common.tplvalues.render" (dict "value" .Values.commonLabels "context" $) | nindent 4 }}
{{- end }}
{{- if .Values.commonAnnotations }}
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
{{- end }}
spec:
scaleTargetRef:
apiVersion: {{ template "common.capabilities.statefulset.apiVersion" . }}
kind: StatefulSet
name: {{ include "elasticsearch.data.fullname" . }}
minReplicas: {{ .Values.data.autoscaling.minReplicas }}
maxReplicas: {{ .Values.data.autoscaling.maxReplicas }}
metrics:
{{- if .Values.data.autoscaling.targetCPU }}
- type: Resource
resource:
name: cpu
targetAverageUtilization: {{ .Values.data.autoscaling.targetCPU }}
{{- end }}
{{- if .Values.data.autoscaling.targetMemory }}
- type: Resource
resource:
name: memory
targetAverageUtilization: {{ .Values.data.autoscaling.targetMemory }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,35 @@
{{- if .Values.master.autoscaling.enabled }}
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: {{ include "elasticsearch.master.fullname" . }}
namespace: {{ .Release.Namespace | quote }}
labels: {{- include "common.labels.standard" . | nindent 4 }}
app.kubernetes.io/component: master
{{- if .Values.commonLabels }}
{{- include "common.tplvalues.render" (dict "value" .Values.commonLabels "context" $) | nindent 4 }}
{{- end }}
{{- if .Values.commonAnnotations }}
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
{{- end }}
spec:
scaleTargetRef:
apiVersion: {{ template "common.capabilities.statefulset.apiVersion" . }}
kind: StatefulSet
name: {{ include "elasticsearch.master.fullname" . }}
minReplicas: {{ .Values.master.autoscaling.minReplicas }}
maxReplicas: {{ .Values.master.autoscaling.maxReplicas }}
metrics:
{{- if .Values.master.autoscaling.targetCPU }}
- type: Resource
resource:
name: cpu
targetAverageUtilization: {{ .Values.master.autoscaling.targetCPU }}
{{- end }}
{{- if .Values.master.autoscaling.targetMemory }}
- type: Resource
resource:
name: memory
targetAverageUtilization: {{ .Values.master.autoscaling.targetMemory }}
{{- end }}
{{- end }}

View File

@@ -384,6 +384,14 @@ master:
## The name of the ServiceAccount to use.
## If not set and create is true, a name is generated using the fullname template
# name:
## Autoscaling configuration
##
autoscaling:
enabled: false
minReplicas: 2
maxReplicas: 11
# targetCPU: 50
# targetMemory: 50
## Elasticsearch coordinating-only node parameters
##
@@ -543,6 +551,14 @@ coordinating:
## If not set and create is true, a name is generated using the fullname template
##
# name:
## Autoscaling configuration
##
autoscaling:
enabled: false
minReplicas: 2
maxReplicas: 11
# targetCPU: 50
# targetMemory: 50
## Elasticsearch data node parameters
##
@@ -722,7 +738,14 @@ data:
## If not set and create is true, a name is generated using the fullname template
##
# name:
## Autoscaling configuration
##
autoscaling:
enabled: false
minReplicas: 2
maxReplicas: 11
# targetCPU: 50
# targetMemory: 50
## Elasticsearch ingest node parameters
##
ingest: