Add openmetadata chart
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
Watch all cluster members come up.
|
||||
$ kubectl get pods --namespace={{ .Release.Namespace }} -l app.kubernetes.io/component={{ template "opensearch.uname" . }} -w
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "opensearch.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "opensearch.fullname" -}}
|
||||
{{- if contains .Chart.Name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "opensearch.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "opensearch.labels" -}}
|
||||
helm.sh/chart: {{ include "opensearch.chart" . }}
|
||||
{{ include "opensearch.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
app.kubernetes.io/component: {{ include "opensearch.uname" . }}
|
||||
{{- with .Values.labels }}
|
||||
{{ toYaml . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "opensearch.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "opensearch.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{- define "opensearch.uname" -}}
|
||||
{{- if empty .Values.fullnameOverride -}}
|
||||
{{- if empty .Values.nameOverride -}}
|
||||
{{ .Values.clusterName }}-{{ .Values.nodeGroup }}
|
||||
{{- else -}}
|
||||
{{ .Values.nameOverride }}-{{ .Values.nodeGroup }}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{ .Values.fullnameOverride }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "opensearch.masterService" -}}
|
||||
{{- if empty .Values.masterService -}}
|
||||
{{- if empty .Values.fullnameOverride -}}
|
||||
{{- if empty .Values.nameOverride -}}
|
||||
{{ .Values.clusterName }}-master
|
||||
{{- else -}}
|
||||
{{ .Values.nameOverride }}-master
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{ .Values.fullnameOverride }}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{ .Values.masterService }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "opensearch.serviceName" -}}
|
||||
{{- if eq .Values.nodeGroup "master" }}
|
||||
{{- include "opensearch.masterService" . }}
|
||||
{{- else }}
|
||||
{{- include "opensearch.uname" . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "opensearch.endpoints" -}}
|
||||
{{- $replicas := int (toString (.Values.replicas)) }}
|
||||
{{- $uname := (include "opensearch.uname" .) }}
|
||||
{{- range $i, $e := untilStep 0 $replicas 1 -}}
|
||||
{{ $uname }}-{{ $i }},
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "opensearch.majorVersion" -}}
|
||||
{{- if .Values.majorVersion }}
|
||||
{{- .Values.majorVersion }}
|
||||
{{- else }}
|
||||
{{- $version := semver (coalesce .Values.image.tag .Chart.AppVersion "1") }}
|
||||
{{- $version.Major }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- define "opensearch.dockerRegistry" -}}
|
||||
{{- if eq .Values.global.dockerRegistry "" -}}
|
||||
{{- .Values.global.dockerRegistry -}}
|
||||
{{- else -}}
|
||||
{{- .Values.global.dockerRegistry | trimSuffix "/" | printf "%s/" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "opensearch.roles" -}}
|
||||
{{- range $.Values.roles -}}
|
||||
{{ . }},
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the appropriate apiVersion for ingress.
|
||||
*/}}
|
||||
{{- define "opensearch.ingress.apiVersion" -}}
|
||||
{{- if and (.Capabilities.APIVersions.Has "networking.k8s.io/v1") (semverCompare ">= 1.19-0" .Capabilities.KubeVersion.Version) -}}
|
||||
{{- print "networking.k8s.io/v1" -}}
|
||||
{{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" -}}
|
||||
{{- print "networking.k8s.io/v1beta1" -}}
|
||||
{{- else -}}
|
||||
{{- print "extensions/v1beta1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return if ingress is stable.
|
||||
*/}}
|
||||
{{- define "opensearch.ingress.isStable" -}}
|
||||
{{- eq (include "opensearch.ingress.apiVersion" .) "networking.k8s.io/v1" -}}
|
||||
{{- end -}}
|
||||
{{/*
|
||||
Return if ingress supports ingressClassName.
|
||||
*/}}
|
||||
{{- define "opensearch.ingress.supportsIngressClassName" -}}
|
||||
{{- or (eq (include "opensearch.ingress.isStable" .) "true") (and (eq (include "opensearch.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" .Capabilities.KubeVersion.Version)) -}}
|
||||
{{- end -}}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
{{- $root := . }}
|
||||
{{- if .Values.config }}
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ template "opensearch.uname" . }}-config
|
||||
labels:
|
||||
{{- include "opensearch.labels" . | nindent 4 }}
|
||||
data:
|
||||
{{- range $configName, $configYaml := .Values.config }}
|
||||
{{ $configName }}: |
|
||||
{{- if (eq (kindOf $configYaml) "map")}}
|
||||
{{- tpl (toYaml $configYaml) $root | nindent 4 }}
|
||||
{{- else -}}
|
||||
{{- tpl $configYaml $root | nindent 4 }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
{{ range .Values.extraObjects }}
|
||||
---
|
||||
{{- if typeIs "string" . }}
|
||||
{{ tpl . $ }}
|
||||
{{- else }}
|
||||
{{ tpl (toYaml .) $ }}
|
||||
{{- end }}
|
||||
{{ end }}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
{{- if .Values.ingress.enabled -}}
|
||||
{{- $fullName := include "opensearch.serviceName" . -}}
|
||||
{{- $servicePort := .Values.httpPort -}}
|
||||
{{- $ingressPath := .Values.ingress.path -}}
|
||||
{{- $ingressApiIsStable := eq (include "opensearch.ingress.isStable" .) "true" -}}
|
||||
{{- $ingressSupportsIngressClassName := eq (include "opensearch.ingress.supportsIngressClassName" .) "true" -}}
|
||||
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: networking.k8s.io/v1
|
||||
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: networking.k8s.io/v1beta1
|
||||
{{- else -}}
|
||||
apiVersion: extensions/v1beta1
|
||||
{{- end }}
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $fullName }}
|
||||
labels:
|
||||
{{- include "opensearch.labels" . | nindent 4 }}
|
||||
{{- with .Values.ingress.ingressLabels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if and $ingressSupportsIngressClassName .Values.ingress.ingressClassName }}
|
||||
ingressClassName: {{ .Values.ingress.ingressClassName }}
|
||||
{{- end -}}
|
||||
{{- if .Values.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ . | quote }}
|
||||
http:
|
||||
paths:
|
||||
- path: {{ $ingressPath }}
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: {{ $fullName }}
|
||||
port:
|
||||
number: {{ $servicePort }}
|
||||
{{- end }}
|
||||
{{- else -}}
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ . | quote }}
|
||||
http:
|
||||
paths:
|
||||
- path: {{ $ingressPath }}
|
||||
backend:
|
||||
serviceName: {{ $fullName }}
|
||||
servicePort: {{ $servicePort }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
{{- if .Values.networkPolicy.create -}}
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: NetworkPolicy
|
||||
metadata:
|
||||
name: {{ template "opensearch.uname" . }}-opensearch-net
|
||||
labels:
|
||||
{{- include "opensearch.labels" . | nindent 4 }}
|
||||
spec:
|
||||
ingress:
|
||||
- from:
|
||||
- podSelector:
|
||||
matchLabels:
|
||||
{{ template "opensearch.uname" . }}-transport-client: "true"
|
||||
podSelector:
|
||||
matchLabels:
|
||||
{{ template "opensearch.uname" . }}-transport-client: "true"
|
||||
{{- end }}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
{{- if .Values.maxUnavailable }}
|
||||
{{- if semverCompare ">=1.21-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: policy/v1
|
||||
{{- else -}}
|
||||
apiVersion: policy/v1beta1
|
||||
{{- end }}
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: "{{ template "opensearch.uname" . }}-pdb"
|
||||
labels:
|
||||
{{- include "opensearch.labels" . | nindent 4 }}
|
||||
spec:
|
||||
maxUnavailable: {{ .Values.maxUnavailable }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "opensearch.selectorLabels" . | nindent 6 }}
|
||||
{{- end }}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
{{- if semverCompare "<1.25-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
{{- if .Values.podSecurityPolicy.create -}}
|
||||
{{- $fullName := include "opensearch.uname" . -}}
|
||||
apiVersion: policy/v1beta1
|
||||
kind: PodSecurityPolicy
|
||||
metadata:
|
||||
name: {{ default $fullName .Values.podSecurityPolicy.name | quote }}
|
||||
labels:
|
||||
{{- include "opensearch.labels" . | nindent 4 }}
|
||||
spec:
|
||||
{{ toYaml .Values.podSecurityPolicy.spec | indent 2 }}
|
||||
{{- if .Values.sysctl.enabled }}
|
||||
allowedUnsafeSysctls:
|
||||
- vm.max_map_count
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,22 @@
|
||||
{{- if .Values.rbac.create -}}
|
||||
{{- $fullName := include "opensearch.uname" . -}}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ $fullName | quote }}
|
||||
labels:
|
||||
{{- include "opensearch.labels" . | nindent 4 }}
|
||||
rules:
|
||||
- apiGroups:
|
||||
- extensions
|
||||
resources:
|
||||
- podsecuritypolicies
|
||||
resourceNames:
|
||||
{{- if eq .Values.podSecurityPolicy.name "" }}
|
||||
- {{ $fullName | quote }}
|
||||
{{- else }}
|
||||
- {{ .Values.podSecurityPolicy.name | quote }}
|
||||
{{- end }}
|
||||
verbs:
|
||||
- use
|
||||
{{- end -}}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
{{- if .Values.rbac.create -}}
|
||||
{{- $fullName := include "opensearch.uname" . -}}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ $fullName | quote }}
|
||||
labels:
|
||||
{{- include "opensearch.labels" . | nindent 4 }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
{{- if eq .Values.rbac.serviceAccountName "" }}
|
||||
name: {{ $fullName | quote }}
|
||||
{{- else }}
|
||||
name: {{ .Values.rbac.serviceAccountName | quote }}
|
||||
{{- end }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
roleRef:
|
||||
kind: Role
|
||||
name: {{ $fullName | quote }}
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
{{- end -}}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{{- if .Values.securityConfig.config.data -}}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ include "opensearch.uname" . }}-securityconfig
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "opensearch.labels" . | nindent 4 }}
|
||||
type: Opaque
|
||||
stringData:
|
||||
{{- range $key, $val := .Values.securityConfig.config.data }}
|
||||
{{ $key }}: |
|
||||
{{- if (eq (kindOf $val) "map")}}
|
||||
{{- tpl (toYaml $val) $ | nindent 4 }}
|
||||
{{- else }}
|
||||
{{- tpl $val $ | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
---
|
||||
kind: Service
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ template "opensearch.serviceName" . }}
|
||||
labels:
|
||||
{{- include "opensearch.labels" . | nindent 4 }}
|
||||
{{- if .Values.service.labels }}
|
||||
{{ toYaml .Values.service.labels | indent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
{{ toYaml .Values.service.annotations | indent 4 }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
{{- if (semverCompare ">= 1.23-0" .Capabilities.KubeVersion.Version) }}
|
||||
{{- if .Values.service.ipFamilyPolicy }}
|
||||
ipFamilyPolicy: {{ .Values.service.ipFamilyPolicy }}
|
||||
{{- end }}
|
||||
{{- if .Values.service.ipFamilies }}
|
||||
ipFamilies: {{ .Values.service.ipFamilies }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
selector:
|
||||
{{- include "opensearch.selectorLabels" . | nindent 4 }}
|
||||
ports:
|
||||
- name: {{ .Values.service.httpPortName | default "http" }}
|
||||
protocol: TCP
|
||||
port: {{ .Values.httpPort }}
|
||||
{{- if .Values.service.nodePort }}
|
||||
nodePort: {{ .Values.service.nodePort }}
|
||||
{{- end }}
|
||||
- name: {{ .Values.service.transportPortName | default "transport" }}
|
||||
protocol: TCP
|
||||
port: {{ .Values.transportPort }}
|
||||
- name: {{ .Values.service.metricsPortName | default "metrics" }}
|
||||
protocol: TCP
|
||||
port: {{ .Values.metricsPort }}
|
||||
{{- if .Values.service.loadBalancerIP }}
|
||||
loadBalancerIP: {{ .Values.service.loadBalancerIP }}
|
||||
{{- end }}
|
||||
{{- with .Values.service.loadBalancerSourceRanges }}
|
||||
loadBalancerSourceRanges:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.service.externalTrafficPolicy }}
|
||||
externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy }}
|
||||
{{- end }}
|
||||
---
|
||||
kind: Service
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ template "opensearch.serviceName" . }}-headless
|
||||
labels:
|
||||
{{- include "opensearch.labels" . | nindent 4 }}
|
||||
{{- if .Values.service.labelsHeadless }}
|
||||
{{ toYaml .Values.service.labelsHeadless | indent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
|
||||
{{- if .Values.service.headless.annotations }}
|
||||
{{ toYaml .Values.service.headless.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
clusterIP: None # This is needed for statefulset hostnames like opensearch-0 to resolve
|
||||
# Create endpoints also if the related pod isn't ready
|
||||
publishNotReadyAddresses: true
|
||||
selector:
|
||||
{{- include "opensearch.selectorLabels" . | nindent 4 }}
|
||||
ports:
|
||||
- name: {{ .Values.service.httpPortName | default "http" }}
|
||||
port: {{ .Values.httpPort }}
|
||||
- name: {{ .Values.service.transportPortName | default "transport" }}
|
||||
port: {{ .Values.transportPort }}
|
||||
- name: {{ .Values.service.metricsPortName | default "metrics" }}
|
||||
port: {{ .Values.metricsPort }}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
{{- if and .Values.serviceMonitor.enabled .Values.serviceMonitor.basicAuth.enabled (not .Values.serviceMonitor.basicAuth.existingSecret) }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ template "opensearch.uname" . }}-service-monitor-credentials
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "opensearch.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceMonitor.labels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
data:
|
||||
username: {{ .Values.serviceMonitor.basicAuth.username | b64enc | quote }}
|
||||
password: {{ .Values.serviceMonitor.basicAuth.password | b64enc | quote }}
|
||||
{{- end }}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
{{- if .Values.serviceMonitor.enabled }}
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: ServiceMonitor
|
||||
metadata:
|
||||
name: {{ template "opensearch.uname" . }}-service-monitor
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "opensearch.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceMonitor.labels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "opensearch.selectorLabels" . | nindent 6 }}
|
||||
endpoints:
|
||||
- port: {{ .Values.service.httpPortName | default "http" }}
|
||||
interval: {{ .Values.serviceMonitor.interval }}
|
||||
path: {{ .Values.serviceMonitor.path }}
|
||||
scheme: {{ .Values.serviceMonitor.scheme }}
|
||||
{{- with .Values.serviceMonitor.tlsConfig }}
|
||||
tlsConfig:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.serviceMonitor.basicAuth.enabled }}
|
||||
basicAuth:
|
||||
username:
|
||||
{{- if .Values.serviceMonitor.basicAuth.existingSecret }}
|
||||
name: {{ .Values.serviceMonitor.basicAuth.existingSecret }}
|
||||
{{- else }}
|
||||
name: {{ template "opensearch.uname" . }}-service-monitor-credentials
|
||||
{{- end }}
|
||||
key: username
|
||||
password:
|
||||
{{- if .Values.serviceMonitor.basicAuth.existingSecret }}
|
||||
name: {{ .Values.serviceMonitor.basicAuth.existingSecret }}
|
||||
{{- else }}
|
||||
name: {{ template "opensearch.uname" . }}-service-monitor-credentials
|
||||
{{- end }}
|
||||
key: password
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
{{- if .Values.rbac.create -}}
|
||||
{{- $fullName := include "opensearch.uname" . -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
{{- if eq .Values.rbac.serviceAccountName "" }}
|
||||
name: {{ $fullName | quote }}
|
||||
{{- else }}
|
||||
name: {{ .Values.rbac.serviceAccountName | quote }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "opensearch.labels" . | nindent 4 }}
|
||||
annotations:
|
||||
{{- with .Values.rbac.serviceAccountAnnotations }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
+595
@@ -0,0 +1,595 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: {{ template "opensearch.uname" . }}
|
||||
labels:
|
||||
{{- include "opensearch.labels" . | nindent 4 }}
|
||||
annotations:
|
||||
majorVersion: "{{ include "opensearch.majorVersion" . }}"
|
||||
{{- with .Values.openSearchAnnotations }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
serviceName: {{ template "opensearch.serviceName" . }}-headless
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "opensearch.selectorLabels" . | nindent 6 }}
|
||||
{{- if .Values.singleNode }}
|
||||
replicas: 1
|
||||
{{- else }}
|
||||
replicas: {{ .Values.replicas }}
|
||||
{{- end }}
|
||||
podManagementPolicy: {{ .Values.podManagementPolicy }}
|
||||
updateStrategy:
|
||||
type: {{ .Values.updateStrategy }}
|
||||
{{- if .Values.persistence.enabled }}
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: {{ template "opensearch.uname" . }}
|
||||
{{- if or .Values.persistence.labels.enabled .Values.persistence.labels.additionalLabels }}
|
||||
labels:
|
||||
{{- if .Values.persistence.labels.enabled }}
|
||||
{{- include "opensearch.labels" . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.persistence.labels.additionalLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.persistence.annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
accessModes:
|
||||
{{- range .Values.persistence.accessModes }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.persistence.size | quote }}
|
||||
{{- if .Values.persistence.storageClass }}
|
||||
{{- if (eq "-" .Values.persistence.storageClass) }}
|
||||
storageClassName: ""
|
||||
{{- else }}
|
||||
storageClassName: "{{ .Values.persistence.storageClass }}"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
name: "{{ template "opensearch.uname" . }}"
|
||||
labels:
|
||||
{{- include "opensearch.labels" . | nindent 8 }}
|
||||
annotations:
|
||||
{{- range $key, $value := .Values.podAnnotations }}
|
||||
{{ $key }}: {{ $value | quote }}
|
||||
{{- end }}
|
||||
{{- /* This forces a restart if the configmap has changed */}}
|
||||
{{- if .Values.config }}
|
||||
configchecksum: {{ include (print .Template.BasePath "/configmap.yaml") . | sha256sum | trunc 63 }}
|
||||
{{- end }}
|
||||
{{- if .Values.securityConfig.config.data }}
|
||||
securityconfigchecksum: {{ include (print .Template.BasePath "/securityconfig.yaml") . | sha256sum | trunc 63 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.schedulerName }}
|
||||
schedulerName: "{{ .Values.schedulerName }}"
|
||||
{{- end }}
|
||||
securityContext:
|
||||
{{ toYaml .Values.podSecurityContext | indent 8 }}
|
||||
{{- if .Values.sysctl.enabled }}
|
||||
sysctls:
|
||||
- name: vm.max_map_count
|
||||
value: {{ .Values.sysctlVmMaxMapCount | quote }}
|
||||
{{- end }}
|
||||
{{- if .Values.fsGroup }}
|
||||
fsGroup: {{ .Values.fsGroup }} # Deprecated value, please use .Values.podSecurityContext.fsGroup
|
||||
{{- end }}
|
||||
{{- if and .Values.rbac.create (eq .Values.rbac.serviceAccountName "") }}
|
||||
serviceAccountName: "{{ template "opensearch.uname" . }}"
|
||||
automountServiceAccountToken: {{ ne .Values.rbac.automountServiceAccountToken false }}
|
||||
{{- else if and .Values.rbac.create (ne .Values.rbac.serviceAccountName "") }}
|
||||
serviceAccountName: {{ .Values.rbac.serviceAccountName | quote }}
|
||||
automountServiceAccountToken: {{ ne .Values.rbac.automountServiceAccountToken false }}
|
||||
{{- else }}
|
||||
automountServiceAccountToken: {{ ne .Values.rbac.automountServiceAccountToken false }}
|
||||
{{- end }}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 6 }}
|
||||
{{- end }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if or (eq .Values.antiAffinity "hard") (eq .Values.antiAffinity "soft") (eq .Values.antiAffinity "custom") .Values.nodeAffinity .Values.podAffinity }}
|
||||
{{- if .Values.priorityClassName }}
|
||||
priorityClassName: {{ .Values.priorityClassName }}
|
||||
{{- end }}
|
||||
affinity:
|
||||
{{- end }}
|
||||
{{- if eq .Values.antiAffinity "hard" }}
|
||||
podAntiAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
- labelSelector:
|
||||
matchExpressions:
|
||||
- key: app.kubernetes.io/instance
|
||||
operator: In
|
||||
values:
|
||||
- {{ .Release.Name }}
|
||||
- key: app.kubernetes.io/name
|
||||
operator: In
|
||||
values:
|
||||
- {{ include "opensearch.name" . }}
|
||||
topologyKey: {{ .Values.antiAffinityTopologyKey }}
|
||||
{{- else if eq .Values.antiAffinity "soft" }}
|
||||
podAntiAffinity:
|
||||
preferredDuringSchedulingIgnoredDuringExecution:
|
||||
- weight: 1
|
||||
podAffinityTerm:
|
||||
topologyKey: {{ .Values.antiAffinityTopologyKey }}
|
||||
labelSelector:
|
||||
matchExpressions:
|
||||
- key: app.kubernetes.io/instance
|
||||
operator: In
|
||||
values:
|
||||
- {{ .Release.Name }}
|
||||
- key: app.kubernetes.io/name
|
||||
operator: In
|
||||
values:
|
||||
- {{ include "opensearch.name" . }}
|
||||
{{- else if eq .Values.antiAffinity "custom" }}
|
||||
{{- with .Values.customAntiAffinity }}
|
||||
podAntiAffinity:
|
||||
{{ toYaml . | indent 10 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.podAffinity }}
|
||||
podAffinity:
|
||||
{{ toYaml . | indent 10 }}
|
||||
{{- end }}
|
||||
{{- with .Values.nodeAffinity }}
|
||||
nodeAffinity:
|
||||
{{ toYaml . | indent 10 }}
|
||||
{{- end }}
|
||||
{{- if .Values.topologySpreadConstraints }}
|
||||
topologySpreadConstraints:
|
||||
{{- toYaml .Values.topologySpreadConstraints | nindent 8 }}
|
||||
{{- end }}
|
||||
terminationGracePeriodSeconds: {{ .Values.terminationGracePeriod }}
|
||||
volumes:
|
||||
{{- if .Values.config }}
|
||||
- name: config
|
||||
configMap:
|
||||
name: {{ template "opensearch.uname" . }}-config
|
||||
- emptyDir: {}
|
||||
name: config-emptydir
|
||||
{{- end }}
|
||||
{{- range .Values.secretMounts }}
|
||||
- name: {{ .name | required "secretMount .name is required" }}
|
||||
secret:
|
||||
secretName: {{ .secretName | required "secretMount .secretName is required" }}
|
||||
{{- if .defaultMode }}
|
||||
defaultMode: {{ .defaultMode }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if and .Values.securityConfig.config.data .Values.securityConfig.config.securityConfigSecret }}
|
||||
{{ fail "Only one of .Values.securityConfig.config.data and .Values.securityConfig.config.securityConfigSecret may be defined. Please see the comment in values.yaml describing usage." }}
|
||||
{{- end }}
|
||||
{{- if .Values.securityConfig.config.data }}
|
||||
- name: security-config-data
|
||||
secret:
|
||||
secretName: {{ include "opensearch.uname" . }}-securityconfig
|
||||
{{- end }}
|
||||
{{- with .Values.securityConfig.config.securityConfigSecret }}
|
||||
- name: security-config-complete
|
||||
secret:
|
||||
secretName: {{ . | quote }}
|
||||
{{- end }}
|
||||
{{- if .Values.securityConfig.actionGroupsSecret }}
|
||||
- name: action-groups
|
||||
secret:
|
||||
secretName: {{ .Values.securityConfig.actionGroupsSecret }}
|
||||
{{- end }}
|
||||
{{- if .Values.securityConfig.configSecret }}
|
||||
- name: security-config
|
||||
secret:
|
||||
secretName: {{ .Values.securityConfig.configSecret }}
|
||||
{{- end }}
|
||||
{{- if .Values.securityConfig.internalUsersSecret }}
|
||||
- name: internal-users-config
|
||||
secret:
|
||||
secretName: {{ .Values.securityConfig.internalUsersSecret }}
|
||||
{{- end }}
|
||||
{{- if .Values.securityConfig.rolesSecret }}
|
||||
- name: roles
|
||||
secret:
|
||||
secretName: {{ .Values.securityConfig.rolesSecret }}
|
||||
{{- end }}
|
||||
{{- if .Values.securityConfig.rolesMappingSecret }}
|
||||
- name: role-mapping
|
||||
secret:
|
||||
secretName: {{ .Values.securityConfig.rolesMappingSecret }}
|
||||
{{- end -}}
|
||||
{{- if .Values.securityConfig.tenantsSecret }}
|
||||
- name: tenants
|
||||
secret:
|
||||
secretName: {{ .Values.securityConfig.tenantsSecret }}
|
||||
{{- end }}
|
||||
{{- if .Values.keystore }}
|
||||
- name: keystore
|
||||
emptyDir: {}
|
||||
{{- range .Values.keystore }}
|
||||
- name: keystore-{{ .secretName }}
|
||||
secret: {{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{ end }}
|
||||
{{- if .Values.extraVolumes }}
|
||||
# Currently some extra blocks accept strings
|
||||
# to continue with backwards compatibility this is being kept
|
||||
# whilst also allowing for yaml to be specified too.
|
||||
{{- if eq "string" (printf "%T" .Values.extraVolumes) }}
|
||||
{{ tpl .Values.extraVolumes . | indent 6 }}
|
||||
{{- else }}
|
||||
{{ toYaml .Values.extraVolumes | indent 6 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{ toYaml .Values.imagePullSecrets | indent 8 }}
|
||||
{{- end }}
|
||||
enableServiceLinks: {{ .Values.enableServiceLinks }}
|
||||
{{- if .Values.hostAliases }}
|
||||
hostAliases: {{ toYaml .Values.hostAliases | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if or (.Values.extraInitContainers) (.Values.keystore) (.Values.persistence.enabled) (.Values.sysctlInit.enabled) (.Values.config) }}
|
||||
initContainers:
|
||||
{{- if and .Values.persistence.enabled .Values.persistence.enableInitChown }}
|
||||
- name: fsgroup-volume
|
||||
image: "{{ template "opensearch.dockerRegistry" . }}{{ .Values.persistence.image | default "busybox" }}:{{ .Values.persistence.imageTag | default "latest" }}"
|
||||
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
|
||||
command: ['sh', '-c']
|
||||
args:
|
||||
- 'chown -R 1000:1000 /usr/share/opensearch/data'
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
resources:
|
||||
{{- toYaml .Values.initResources | nindent 10 }}
|
||||
volumeMounts:
|
||||
- name: "{{ template "opensearch.uname" . }}"
|
||||
mountPath: {{ .Values.opensearchHome }}/data
|
||||
{{- end }}
|
||||
{{- if .Values.sysctlInit.enabled }}
|
||||
- name: sysctl
|
||||
image: "{{ template "opensearch.dockerRegistry" . }}{{ .Values.sysctlInit.image | default "busybox" }}:{{ .Values.sysctlInit.imageTag | default "latest" }}"
|
||||
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
set -xe
|
||||
DESIRED="{{ .Values.sysctlVmMaxMapCount }}"
|
||||
CURRENT=$(sysctl -n vm.max_map_count)
|
||||
if [ "$DESIRED" -gt "$CURRENT" ]; then
|
||||
sysctl -w vm.max_map_count=$DESIRED
|
||||
fi
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
privileged: true
|
||||
resources:
|
||||
{{- toYaml .Values.initResources | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- if .Values.config }}
|
||||
- name: configfile
|
||||
image: "{{ template "opensearch.dockerRegistry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
#!/usr/bin/env bash
|
||||
cp -r /tmp/configfolder/* /tmp/config/
|
||||
securityContext:
|
||||
{{ toYaml .Values.securityContext | indent 10 }}
|
||||
resources:
|
||||
{{- toYaml .Values.initResources | nindent 10 }}
|
||||
volumeMounts:
|
||||
- mountPath: /tmp/config/
|
||||
name: config-emptydir
|
||||
{{- range $path, $config := .Values.config }}
|
||||
- name: config
|
||||
mountPath: /tmp/configfolder/{{ $path }}
|
||||
subPath: {{ $path }}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
{{- if .Values.keystore }}
|
||||
- name: keystore
|
||||
image: "{{ template "opensearch.dockerRegistry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
{{ .Values.opensearchHome }}/bin/opensearch-keystore create
|
||||
|
||||
for i in /tmp/keystoreSecrets/*/*; do
|
||||
[ -f "$i" ] || continue
|
||||
key=$(basename $i)
|
||||
echo "Adding file $i to keystore key $key"
|
||||
{{ .Values.opensearchHome }}/bin/opensearch-keystore add-file "$key" "$i"
|
||||
done
|
||||
|
||||
# Add the bootstrap password since otherwise the opensearch entrypoint tries to do this on startup
|
||||
if [ ! -z ${PASSWORD+x} ]; then
|
||||
echo 'Adding env $PASSWORD to keystore as key bootstrap.password'
|
||||
echo "$PASSWORD" | {{ .Values.opensearchHome }}/bin/opensearch-keystore add -x bootstrap.password
|
||||
fi
|
||||
|
||||
cp -a {{ .Values.opensearchHome }}/config/opensearch.keystore /tmp/keystore/
|
||||
env: {{ toYaml .Values.extraEnvs | nindent 10 }}
|
||||
envFrom: {{ toYaml .Values.envFrom | nindent 10 }}
|
||||
securityContext:
|
||||
{{ toYaml .Values.securityContext | indent 10 }}
|
||||
resources:
|
||||
{{- toYaml .Values.initResources | nindent 10 }}
|
||||
volumeMounts:
|
||||
- name: keystore
|
||||
mountPath: /tmp/keystore
|
||||
{{- range .Values.keystore }}
|
||||
- name: keystore-{{ .secretName }}
|
||||
mountPath: /tmp/keystoreSecrets/{{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.extraInitContainers }}
|
||||
# Currently some extra blocks accept strings
|
||||
# to continue with backwards compatibility this is being kept
|
||||
# whilst also allowing for yaml to be specified too.
|
||||
{{- if eq "string" (printf "%T" .Values.extraInitContainers) }}
|
||||
{{ tpl .Values.extraInitContainers . | indent 6 }}
|
||||
{{- else }}
|
||||
{{ toYaml .Values.extraInitContainers | indent 6 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: "{{ template "opensearch.name" . }}"
|
||||
securityContext:
|
||||
{{ toYaml .Values.securityContext | indent 10 }}
|
||||
{{- if .Values.plugins.enabled }}
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
{{- range $plugin := .Values.plugins.removeList }}
|
||||
if ./bin/opensearch-plugin list | grep -q {{ $plugin }}; then
|
||||
./bin/opensearch-plugin remove {{ $plugin }}
|
||||
fi
|
||||
{{- end }}
|
||||
|
||||
{{- range $plugin := .Values.plugins.installList }}
|
||||
./bin/opensearch-plugin install -b {{ $plugin }}
|
||||
{{- end }}
|
||||
|
||||
bash opensearch-docker-entrypoint.sh
|
||||
{{- end }}
|
||||
|
||||
image: "{{ template "opensearch.dockerRegistry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
|
||||
readinessProbe:
|
||||
{{ toYaml .Values.readinessProbe | indent 10 }}
|
||||
{{- if .Values.livenessProbe }}
|
||||
livenessProbe:
|
||||
{{ toYaml .Values.livenessProbe | indent 10 }}
|
||||
{{- end }}
|
||||
{{- if semverCompare ">=1.16-0" .Capabilities.KubeVersion.Version }}
|
||||
startupProbe:
|
||||
{{ toYaml .Values.startupProbe | indent 10 }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: {{ .Values.httpPort }}
|
||||
{{- if .Values.httpHostPort }}
|
||||
hostPort: {{ .Values.httpHostPort }}
|
||||
{{- end }}
|
||||
- name: transport
|
||||
containerPort: {{ .Values.transportPort }}
|
||||
{{- if .Values.transportHostPort }}
|
||||
hostPort: {{ .Values.transportHostPort }}
|
||||
{{- end }}
|
||||
- name: metrics
|
||||
containerPort: {{ .Values.metricsPort }}
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 10 }}
|
||||
env:
|
||||
- name: node.name
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.name
|
||||
{{- if (and (has "master" .Values.roles) (not .Values.singleNode)) }}
|
||||
- name: cluster.initial_master_nodes
|
||||
value: "{{ template "opensearch.endpoints" . }}"
|
||||
{{- end }}
|
||||
- name: discovery.seed_hosts
|
||||
value: "{{ template "opensearch.masterService" . }}-headless"
|
||||
- name: cluster.name
|
||||
value: "{{ .Values.clusterName }}"
|
||||
- name: network.host
|
||||
value: "{{ .Values.networkHost }}"
|
||||
- name: OPENSEARCH_JAVA_OPTS
|
||||
value: "{{ .Values.opensearchJavaOpts }}"
|
||||
- name: node.roles
|
||||
value: "{{ template "opensearch.roles" . }}"
|
||||
{{- if .Values.singleNode }}
|
||||
- name: discovery.type
|
||||
value: "single-node"
|
||||
{{- end }}
|
||||
{{- if .Values.extraEnvs }}
|
||||
{{ toYaml .Values.extraEnvs | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.envFrom }}
|
||||
envFrom:
|
||||
{{ toYaml .Values.envFrom | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.opensearchLifecycle }}
|
||||
lifecycle:
|
||||
{{ toYaml .Values.opensearchLifecycle | indent 10 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
{{- if .Values.persistence.enabled }}
|
||||
- name: "{{ template "opensearch.uname" . }}"
|
||||
mountPath: {{ .Values.opensearchHome }}/data
|
||||
{{- end }}
|
||||
{{- if .Values.keystore }}
|
||||
- name: keystore
|
||||
mountPath: {{ .Values.opensearchHome }}/config/opensearch.keystore
|
||||
subPath: opensearch.keystore
|
||||
{{- end }}
|
||||
{{- if .Values.securityConfig.enabled }}
|
||||
{{- if .Values.securityConfig.actionGroupsSecret }}
|
||||
- mountPath: {{ .Values.securityConfig.path }}/action_groups.yml
|
||||
name: action-groups
|
||||
subPath: action_groups.yml
|
||||
{{- end }}
|
||||
{{- if .Values.securityConfig.configSecret }}
|
||||
- mountPath: {{ .Values.securityConfig.path }}/config.yml
|
||||
name: security-config
|
||||
subPath: config.yml
|
||||
{{- end }}
|
||||
{{- if .Values.securityConfig.internalUsersSecret }}
|
||||
- mountPath: {{ .Values.securityConfig.path }}/internal_users.yml
|
||||
name: internal-users-config
|
||||
subPath: internal_users.yml
|
||||
{{- end }}
|
||||
{{- if .Values.securityConfig.rolesSecret }}
|
||||
- mountPath: {{ .Values.securityConfig.path }}/roles.yml
|
||||
name: roles
|
||||
subPath: roles.yml
|
||||
{{- end }}
|
||||
{{- if .Values.securityConfig.rolesMappingSecret }}
|
||||
- mountPath: {{ .Values.securityConfig.path }}/roles_mapping.yml
|
||||
name: role-mapping
|
||||
subPath: roles_mapping.yml
|
||||
{{- end }}
|
||||
{{- if .Values.securityConfig.tenantsSecret }}
|
||||
- mountPath: {{ .Values.securityConfig.path }}/tenants.yml
|
||||
name: tenants
|
||||
subPath: tenants.yml
|
||||
{{- end }}
|
||||
{{- if .Values.securityConfig.config.data }}
|
||||
{{- if .Values.securityConfig.config.dataComplete }}
|
||||
- mountPath: {{ .Values.securityConfig.path }}
|
||||
name: security-config-data
|
||||
{{- else }}
|
||||
{{- range $key, $_ := .Values.securityConfig.config.data }}
|
||||
- mountPath: {{ $.Values.securityConfig.path }}/{{ $key }}
|
||||
name: security-config-data
|
||||
subPath: {{ $key }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- else if .Values.securityConfig.config.securityConfigSecret }}
|
||||
- mountPath: {{ .Values.securityConfig.path }}
|
||||
name: security-config-complete
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- range .Values.secretMounts }}
|
||||
- name: {{ .name | required "secretMount .name is required" }}
|
||||
mountPath: {{ .path | required "secretMount .path is required" }}
|
||||
{{- if .subPath }}
|
||||
subPath: {{ .subPath }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- range $path, $config := .Values.config }}
|
||||
- name: config-emptydir
|
||||
mountPath: {{ $.Values.opensearchHome }}/config/{{ $path }}
|
||||
subPath: {{ $path }}
|
||||
{{- end -}}
|
||||
{{- if .Values.extraVolumeMounts }}
|
||||
# Currently some extra blocks accept strings
|
||||
# to continue with backwards compatibility this is being kept
|
||||
# whilst also allowing for yaml to be specified too.
|
||||
{{- if eq "string" (printf "%T" .Values.extraVolumeMounts) }}
|
||||
{{ tpl .Values.extraVolumeMounts . | indent 8 }}
|
||||
{{- else }}
|
||||
{{ toYaml .Values.extraVolumeMounts | indent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.masterTerminationFix }}
|
||||
{{- if has "master" .Values.roles }}
|
||||
# This sidecar will prevent slow master re-election
|
||||
- name: opensearch-master-graceful-termination-handler
|
||||
image: "{{ template "opensearch.dockerRegistry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
|
||||
command:
|
||||
- "sh"
|
||||
- -c
|
||||
- |
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
|
||||
http () {
|
||||
local path="${1}"
|
||||
if [ -n "${USERNAME}" ] && [ -n "${PASSWORD}" ]; then
|
||||
BASIC_AUTH="-u ${USERNAME}:${PASSWORD}"
|
||||
else
|
||||
BASIC_AUTH=''
|
||||
fi
|
||||
curl -XGET -s -k --fail ${BASIC_AUTH} {{ .Values.protocol }}://{{ template "opensearch.masterService" . }}:{{ .Values.httpPort }}${path}
|
||||
}
|
||||
|
||||
cleanup () {
|
||||
while true ; do
|
||||
local master="$(http "/_cat/master?h=node" || echo "")"
|
||||
if [[ $master == "{{ template "opensearch.masterService" . }}"* && $master != "${NODE_NAME}" ]]; then
|
||||
echo "This node is not master."
|
||||
break
|
||||
fi
|
||||
echo "This node is still master, waiting gracefully for it to step down"
|
||||
sleep 1
|
||||
done
|
||||
|
||||
exit 0
|
||||
}
|
||||
|
||||
trap cleanup SIGTERM
|
||||
|
||||
sleep infinity &
|
||||
wait $!
|
||||
resources:
|
||||
{{- toYaml .Values.sidecarResources | nindent 10 }}
|
||||
env:
|
||||
- name: NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.name
|
||||
{{- if .Values.extraEnvs }}
|
||||
{{ toYaml .Values.extraEnvs | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.envFrom }}
|
||||
envFrom:
|
||||
{{ toYaml .Values.envFrom | indent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.lifecycle }}
|
||||
lifecycle:
|
||||
{{ toYaml .Values.lifecycle | indent 10 }}
|
||||
{{- end }}
|
||||
{{- if .Values.extraContainers }}
|
||||
# Currently some extra blocks accept strings
|
||||
# to continue with backwards compatibility this is being kept
|
||||
# whilst also allowing for yaml to be specified too.
|
||||
{{- if eq "string" (printf "%T" .Values.extraContainers) }}
|
||||
{{ tpl .Values.extraContainers . | indent 6 }}
|
||||
{{- else }}
|
||||
{{ toYaml .Values.extraContainers | indent 6 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
Reference in New Issue
Block a user