diff --git a/incubator/elasticsearch/Chart.yaml b/incubator/elasticsearch/Chart.yaml index 096dd52647..bae2e4cf56 100755 --- a/incubator/elasticsearch/Chart.yaml +++ b/incubator/elasticsearch/Chart.yaml @@ -1,6 +1,6 @@ name: elasticsearch home: https://www.elastic.co/products/elasticsearch -version: 1.8.2 +version: 1.9.0 appVersion: 6.4.2 description: Flexible and powerful open source, distributed real-time search and analytics engine. diff --git a/incubator/elasticsearch/README.md b/incubator/elasticsearch/README.md index 3c4adf9fd8..5824660df7 100644 --- a/incubator/elasticsearch/README.md +++ b/incubator/elasticsearch/README.md @@ -83,6 +83,8 @@ The following table lists the configurable parameters of the elasticsearch chart | `client.serviceType` | Client service type | `ClusterIP` | | `client.loadBalancerIP` | Client loadBalancerIP | `{}` | | `client.loadBalancerSourceRanges` | Client loadBalancerSourceRanges | `{}` | +| `client.antiAffinity` | Client anti-affinity policy | `soft` | +| `client.nodeAffinity` | Client node affinity policy | `{}` | | `master.exposeHttp` | Expose http port 9200 on master Pods for monitoring, etc | `false` | | `master.name` | Master component name | `master` | | `master.replicas` | Master node replicas (deployment) | `2` | @@ -98,6 +100,8 @@ The following table lists the configurable parameters of the elasticsearch chart | `master.persistence.size` | Master persistent volume size | `4Gi` | | `master.persistence.storageClass` | Master persistent volume Class | `nil` | | `master.persistence.accessMode` | Master persistent Access Mode | `ReadWriteOnce` | +| `master.antiAffinity` | Master anti-affinity policy | `soft` | +| `master.nodeAffinity` | Master node affinity policy | `{}` | | `data.exposeHttp` | Expose http port 9200 on data Pods for monitoring, etc | `false` | | `data.replicas` | Data node replicas (statefulset) | `2` | | `data.resources` | Data node resources requests & limits | `{} - cpu limit must be an integer` | @@ -113,6 +117,7 @@ The following table lists the configurable parameters of the elasticsearch chart | `data.tolerations` | Data tolerations | `[]` | | `data.terminationGracePeriodSeconds` | Data termination grace period (seconds) | `3600` | | `data.antiAffinity` | Data anti-affinity policy | `soft` | +| `data.nodeAffinity` | Data node affinity policy | `{}` | | `extraInitContainers` | Additional init container passed through the tpl | `` | Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. diff --git a/incubator/elasticsearch/templates/client-deployment.yaml b/incubator/elasticsearch/templates/client-deployment.yaml index e822582cdb..7ab2cd1285 100644 --- a/incubator/elasticsearch/templates/client-deployment.yaml +++ b/incubator/elasticsearch/templates/client-deployment.yaml @@ -26,8 +26,10 @@ spec: {{- end }} securityContext: fsGroup: 1000 - {{- if eq .Values.client.antiAffinity "hard" }} + {{- if or .Values.client.antiAffinity .Values.client.nodeAffinity }} affinity: + {{- end }} + {{- if eq .Values.client.antiAffinity "hard" }} podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - topologyKey: "kubernetes.io/hostname" @@ -37,7 +39,6 @@ spec: release: "{{ .Release.Name }}" component: "{{ .Values.client.name }}" {{- else if eq .Values.client.antiAffinity "soft" }} - affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 @@ -49,6 +50,10 @@ spec: release: "{{ .Release.Name }}" component: "{{ .Values.client.name }}" {{- end }} + {{- with .Values.client.nodeAffinity }} + nodeAffinity: +{{ toYaml . | indent 10 }} + {{- end }} {{- if .Values.client.nodeSelector }} nodeSelector: {{ toYaml .Values.client.nodeSelector | indent 8 }} diff --git a/incubator/elasticsearch/templates/data-statefulset.yaml b/incubator/elasticsearch/templates/data-statefulset.yaml index a91aefd2d2..c05f6f7978 100644 --- a/incubator/elasticsearch/templates/data-statefulset.yaml +++ b/incubator/elasticsearch/templates/data-statefulset.yaml @@ -27,8 +27,10 @@ spec: {{- end }} securityContext: fsGroup: 1000 - {{- if eq .Values.data.antiAffinity "hard" }} + {{- if or .Values.data.antiAffinity .Values.data.nodeAffinity }} affinity: + {{- end }} + {{- if eq .Values.data.antiAffinity "hard" }} podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - topologyKey: "kubernetes.io/hostname" @@ -38,7 +40,6 @@ spec: release: "{{ .Release.Name }}" component: "{{ .Values.data.name }}" {{- else if eq .Values.data.antiAffinity "soft" }} - affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 @@ -50,6 +51,10 @@ spec: release: "{{ .Release.Name }}" component: "{{ .Values.data.name }}" {{- end }} + {{- with .Values.data.nodeAffinity }} + nodeAffinity: +{{ toYaml . | indent 10 }} + {{- end }} {{- if .Values.data.nodeSelector }} nodeSelector: {{ toYaml .Values.data.nodeSelector | indent 8 }} diff --git a/incubator/elasticsearch/templates/master-statefulset.yaml b/incubator/elasticsearch/templates/master-statefulset.yaml index cd3aa9e0fa..737ee33e4e 100644 --- a/incubator/elasticsearch/templates/master-statefulset.yaml +++ b/incubator/elasticsearch/templates/master-statefulset.yaml @@ -27,8 +27,10 @@ spec: {{- end }} securityContext: fsGroup: 1000 - {{- if eq .Values.master.antiAffinity "hard" }} + {{- if or .Values.master.antiAffinity .Values.master.nodeAffinity }} affinity: + {{- end }} + {{- if eq .Values.master.antiAffinity "hard" }} podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - topologyKey: "kubernetes.io/hostname" @@ -38,7 +40,6 @@ spec: release: "{{ .Release.Name }}" component: "{{ .Values.master.name }}" {{- else if eq .Values.master.antiAffinity "soft" }} - affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 @@ -50,6 +51,10 @@ spec: release: "{{ .Release.Name }}" component: "{{ .Values.master.name }}" {{- end }} + {{- with .Values.master.nodeAffinity }} + nodeAffinity: +{{ toYaml . | indent 10 }} + {{- end }} {{- if .Values.master.nodeSelector }} nodeSelector: {{ toYaml .Values.master.nodeSelector | indent 8 }} diff --git a/incubator/elasticsearch/values.yaml b/incubator/elasticsearch/values.yaml index 8cb38ddc01..1ed2ef3284 100644 --- a/incubator/elasticsearch/values.yaml +++ b/incubator/elasticsearch/values.yaml @@ -37,6 +37,7 @@ client: # example: client-svc-foo heapSize: "512m" antiAffinity: "soft" + nodeAffinity: {} nodeSelector: {} tolerations: [] resources: @@ -67,6 +68,7 @@ master: size: "4Gi" # storageClass: "ssd" antiAffinity: "soft" + nodeAffinity: {} nodeSelector: {} tolerations: [] resources: @@ -100,6 +102,7 @@ data: # storageClass: "ssd" terminationGracePeriodSeconds: 3600 antiAffinity: "soft" + nodeAffinity: {} nodeSelector: {} tolerations: [] resources: