130 lines
4.5 KiB
Smarty
130 lines
4.5 KiB
Smarty
|
{{/* vim: set filetype=mustache: */}}
|
||
|
|
||
|
{{/*
|
||
|
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).
|
||
|
*/}}
|
||
|
{{- define "redis-ha.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).
|
||
|
*/}}
|
||
|
{{- define "redis-ha.fullname" -}}
|
||
|
{{- if .Values.fullnameOverride -}}
|
||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||
|
{{- else -}}
|
||
|
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||
|
{{- if contains $name .Release.Name -}}
|
||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||
|
{{- else -}}
|
||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||
|
{{- end -}}
|
||
|
{{- end -}}
|
||
|
{{- end -}}
|
||
|
|
||
|
|
||
|
{{/*
|
||
|
Return sysctl image
|
||
|
*/}}
|
||
|
{{- define "redis.sysctl.image" -}}
|
||
|
{{- $registryName := default "docker.io" .Values.sysctlImage.registry -}}
|
||
|
{{- $tag := default "latest" .Values.sysctlImage.tag | toString -}}
|
||
|
{{- printf "%s/%s:%s" $registryName .Values.sysctlImage.repository $tag -}}
|
||
|
{{- end -}}
|
||
|
|
||
|
{{- /*
|
||
|
Credit: @technosophos
|
||
|
https://github.com/technosophos/common-chart/
|
||
|
labels.standard prints the standard Helm labels.
|
||
|
The standard labels are frequently used in metadata.
|
||
|
*/ -}}
|
||
|
{{- define "labels.standard" -}}
|
||
|
app: {{ template "redis-ha.name" . }}
|
||
|
heritage: {{ .Release.Service | quote }}
|
||
|
release: {{ .Release.Name | quote }}
|
||
|
chart: {{ template "chartref" . }}
|
||
|
{{- end -}}
|
||
|
|
||
|
{{- /*
|
||
|
Credit: @technosophos
|
||
|
https://github.com/technosophos/common-chart/
|
||
|
chartref prints a chart name and version.
|
||
|
It does minimal escaping for use in Kubernetes labels.
|
||
|
Example output:
|
||
|
zookeeper-1.2.3
|
||
|
wordpress-3.2.1_20170219
|
||
|
*/ -}}
|
||
|
{{- define "chartref" -}}
|
||
|
{{- replace "+" "_" .Chart.Version | printf "%s-%s" .Chart.Name -}}
|
||
|
{{- end -}}
|
||
|
|
||
|
{{/*
|
||
|
Create the name of the service account to use
|
||
|
*/}}
|
||
|
{{- define "redis-ha.serviceAccountName" -}}
|
||
|
{{- if .Values.serviceAccount.create -}}
|
||
|
{{ default (include "redis-ha.fullname" .) .Values.serviceAccount.name }}
|
||
|
{{- else -}}
|
||
|
{{ default "default" .Values.serviceAccount.name }}
|
||
|
{{- end -}}
|
||
|
{{- end -}}
|
||
|
|
||
|
{{- define "redis-ha.masterGroupName" -}}
|
||
|
{{- $masterGroupName := tpl ( .Values.redis.masterGroupName | default "") . -}}
|
||
|
{{- $validMasterGroupName := regexMatch "^[\\w-\\.]+$" $masterGroupName -}}
|
||
|
{{- if $validMasterGroupName -}}
|
||
|
{{ $masterGroupName }}
|
||
|
{{- else -}}
|
||
|
{{ required "A valid .Values.redis.masterGroupName entry is required (matching ^[\\w-\\.]+$)" ""}}
|
||
|
{{- end -}}
|
||
|
{{- end -}}
|
||
|
|
||
|
{{/*
|
||
|
Return the appropriate apiVersion for poddisruptionbudget.
|
||
|
*/}}
|
||
|
{{- define "redis-ha.podDisruptionBudget.apiVersion" -}}
|
||
|
{{- if .Capabilities.APIVersions.Has "policy/v1" }}
|
||
|
{{- print "policy/v1" -}}
|
||
|
{{- else -}}
|
||
|
{{- print "policy/v1beta1" -}}
|
||
|
{{- end -}}
|
||
|
{{- end -}}
|
||
|
|
||
|
{{/*
|
||
|
Return true if the detected platform is Openshift
|
||
|
Usage:
|
||
|
{{- include "common.compatibility.isOpenshift" . -}}
|
||
|
*/}}
|
||
|
{{- define "compatibility.isOpenshift" -}}
|
||
|
{{- if .Capabilities.APIVersions.Has "security.openshift.io/v1" -}}
|
||
|
{{- true -}}
|
||
|
{{- end -}}
|
||
|
{{- end -}}
|
||
|
|
||
|
{{/*
|
||
|
Render a compatible securityContext depending on the platform. By default it is maintained as it is. In other platforms like Openshift we remove default user/group values that do not work out of the box with the restricted-v1 SCC
|
||
|
Usage:
|
||
|
{{- include "compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) -}}
|
||
|
*/}}
|
||
|
{{- define "compatibility.renderSecurityContext" -}}
|
||
|
{{- $adaptedContext := .secContext -}}
|
||
|
|
||
|
{{- if (((.context.Values.global).compatibility).openshift) -}}
|
||
|
{{- if or (eq .context.Values.global.compatibility.openshift.adaptSecurityContext "force") (and (eq .context.Values.global.compatibility.openshift.adaptSecurityContext "auto") (include "compatibility.isOpenshift" .context)) -}}
|
||
|
{{/* Remove incompatible user/group values that do not work in Openshift out of the box */}}
|
||
|
{{- $adaptedContext = omit $adaptedContext "fsGroup" "runAsUser" "runAsGroup" -}}
|
||
|
{{- if not .secContext.seLinuxOptions -}}
|
||
|
{{/* If it is an empty object, we remove it from the resulting context because it causes validation issues */}}
|
||
|
{{- $adaptedContext = omit $adaptedContext "seLinuxOptions" -}}
|
||
|
{{- end -}}
|
||
|
{{- end -}}
|
||
|
{{- end -}}
|
||
|
{{/* Remove fields that are disregarded when running the container in privileged mode */}}
|
||
|
{{- if $adaptedContext.privileged -}}
|
||
|
{{- $adaptedContext = omit $adaptedContext "capabilities" "seLinuxOptions" -}}
|
||
|
{{- end -}}
|
||
|
{{- omit $adaptedContext "enabled" | toYaml -}}
|
||
|
{{- end -}}
|