mirror of
https://github.com/helm/charts.git
synced 2026-08-23 22:37:45 +00:00
[stable/elasticsearch] Add ServiceAccounts for each components + PodSecurityPolicy (#8529)
* [stable/elasticsearch] Add ServiceAccounts for each components Signed-off-by: Ludovic Cavajani <lcavajani@suse.com> * Add PodSecurityPolicy support Signed-off-by: Ludovic Cavajani <lcavajani@suse.com> * minor fixes Signed-off-by: Ludovic Cavajani <lcavajani@suse.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
name: elasticsearch
|
||||
home: https://www.elastic.co/products/elasticsearch
|
||||
version: 1.11.1
|
||||
version: 1.12.0
|
||||
appVersion: 6.4.2
|
||||
description: Flexible and powerful open source, distributed real-time search and analytics
|
||||
engine.
|
||||
|
||||
@@ -122,6 +122,13 @@ The following table lists the configurable parameters of the elasticsearch chart
|
||||
| `data.antiAffinity` | Data anti-affinity policy | `soft` |
|
||||
| `data.nodeAffinity` | Data node affinity policy | `{}` |
|
||||
| `extraInitContainers` | Additional init container passed through the tpl | `` |
|
||||
| `podSecurityPolicy.enabled` | Specify if a Pod Security Policy must be created | `false` |
|
||||
| `serviceAccounts.client.create` | If true, create the client service account | `true` |
|
||||
| `serviceAccounts.client.name` | Name of the client service account to use or create | `{{ elasticsearch.client.fullname }}` |
|
||||
| `serviceAccounts.master.create` | If true, create the master service account | `true` |
|
||||
| `serviceAccounts.master.name` | Name of the master service account to use or create | `{{ elasticsearch.master.fullname }}` |
|
||||
| `serviceAccounts.data.create` | If true, create the data service account | `true` |
|
||||
| `serviceAccounts.data.name` | Name of the data service account to use or create | `{{ elasticsearch.data.fullname }}` |
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
|
||||
|
||||
|
||||
@@ -46,3 +46,36 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this
|
||||
{{- define "elasticsearch.master.fullname" -}}
|
||||
{{ template "elasticsearch.fullname" . }}-{{ .Values.master.name }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use for the client component
|
||||
*/}}
|
||||
{{- define "elasticsearch.serviceAccountName.client" -}}
|
||||
{{- if .Values.serviceAccounts.client.create -}}
|
||||
{{ default (include "elasticsearch.client.fullname" .) .Values.serviceAccounts.client.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.serviceAccounts.client.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use for the data component
|
||||
*/}}
|
||||
{{- define "elasticsearch.serviceAccountName.data" -}}
|
||||
{{- if .Values.serviceAccounts.data.create -}}
|
||||
{{ default (include "elasticsearch.data.fullname" .) .Values.serviceAccounts.data.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.serviceAccounts.data.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use for the master component
|
||||
*/}}
|
||||
{{- define "elasticsearch.serviceAccountName.master" -}}
|
||||
{{- if .Values.serviceAccounts.master.create -}}
|
||||
{{ default (include "elasticsearch.master.fullname" .) .Values.serviceAccounts.master.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.serviceAccounts.master.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -21,6 +21,7 @@ spec:
|
||||
{{ toYaml .Values.client.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
serviceAccountName: {{ template "elasticsearch.serviceAccountName.client" . }}
|
||||
{{- if .Values.client.priorityClassName }}
|
||||
priorityClassName: "{{ .Values.client.priorityClassName }}"
|
||||
{{- end }}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{{- if .Values.serviceAccounts.client.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "elasticsearch.name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||
component: "{{ .Values.client.name }}"
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
name: {{ template "elasticsearch.client.fullname" . }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,12 @@
|
||||
{{- if .Values.serviceAccounts.data.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "elasticsearch.name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||
component: "{{ .Values.data.name }}"
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
name: {{ template "elasticsearch.data.fullname" . }}
|
||||
{{- end }}
|
||||
@@ -22,6 +22,7 @@ spec:
|
||||
{{ toYaml .Values.data.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
serviceAccountName: {{ template "elasticsearch.serviceAccountName.data" . }}
|
||||
{{- if .Values.data.priorityClassName }}
|
||||
priorityClassName: "{{ .Values.data.priorityClassName }}"
|
||||
{{- end }}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{{- if .Values.serviceAccounts.master.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "elasticsearch.name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||
component: "{{ .Values.master.name }}"
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
name: {{ template "elasticsearch.master.fullname" . }}
|
||||
{{- end }}
|
||||
@@ -22,6 +22,7 @@ spec:
|
||||
{{ toYaml .Values.master.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
serviceAccountName: {{ template "elasticsearch.serviceAccountName.master" . }}
|
||||
{{- if .Values.master.priorityClassName }}
|
||||
priorityClassName: "{{ .Values.master.priorityClassName }}"
|
||||
{{- end }}
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
{{- if .Values.podSecurityPolicy.enabled }}
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: PodSecurityPolicy
|
||||
metadata:
|
||||
name: {{ template "elasticsearch.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "elasticsearch.name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
annotations:
|
||||
seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*'
|
||||
seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default'
|
||||
apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default'
|
||||
spec:
|
||||
privileged: true
|
||||
allowPrivilegeEscalation: true
|
||||
volumes:
|
||||
- 'configMap'
|
||||
- 'secret'
|
||||
- 'emptyDir'
|
||||
- 'persistentVolumeClaim'
|
||||
hostNetwork: false
|
||||
hostPID: false
|
||||
hostIPC: false
|
||||
runAsUser:
|
||||
rule: 'RunAsAny'
|
||||
runAsGroup:
|
||||
rule: 'RunAsAny'
|
||||
seLinux:
|
||||
rule: 'RunAsAny'
|
||||
supplementalGroups:
|
||||
rule: 'RunAsAny'
|
||||
fsGroup:
|
||||
rule: 'MustRunAs'
|
||||
ranges:
|
||||
- min: 1000
|
||||
max: 1000
|
||||
readOnlyRootFilesystem: false
|
||||
hostPorts:
|
||||
- min: 1
|
||||
max: 65535
|
||||
{{- end }}
|
||||
@@ -0,0 +1,18 @@
|
||||
{{- if .Values.podSecurityPolicy.enabled }}
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ template "elasticsearch.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "elasticsearch.name" . }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
namespace: {{ .Release.Namespace }}
|
||||
rules:
|
||||
- apiGroups: ['extensions']
|
||||
resources: ['podsecuritypolicies']
|
||||
verbs: ['use']
|
||||
resourceNames:
|
||||
- {{ template "elasticsearch.fullname" . }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,26 @@
|
||||
{{- if .Values.podSecurityPolicy.enabled }}
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ template "elasticsearch.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "elasticsearch.name" . }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
roleRef:
|
||||
kind: Role
|
||||
name: {{ template "elasticsearch.fullname" . }}
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "elasticsearch.serviceAccountName.client" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "elasticsearch.serviceAccountName.data" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "elasticsearch.serviceAccountName.master" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{- end }}
|
||||
|
||||
@@ -3,6 +3,25 @@
|
||||
# Declare variables to be passed into your templates.
|
||||
appVersion: "6.4.2"
|
||||
|
||||
## Define serviceAccount names for components. Defaults to component's fully qualified name.
|
||||
##
|
||||
serviceAccounts:
|
||||
client:
|
||||
create: true
|
||||
name:
|
||||
master:
|
||||
create: true
|
||||
name:
|
||||
data:
|
||||
create: true
|
||||
name:
|
||||
|
||||
## Specify if a Pod Security Policy for node-exporter must be created
|
||||
## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/
|
||||
##
|
||||
podSecurityPolicy:
|
||||
enabled: false
|
||||
|
||||
image:
|
||||
repository: "docker.elastic.co/elasticsearch/elasticsearch-oss"
|
||||
tag: "6.4.2"
|
||||
|
||||
Reference in New Issue
Block a user