{{/* 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 -}}