You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
273 lines
8.8 KiB
273 lines
8.8 KiB
{{/*
|
|
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 "seaweedfs.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 -}}
|
|
|
|
{{/*
|
|
Create chart name and version as used by the chart label.
|
|
*/}}
|
|
{{- define "seaweedfs.chart" -}}
|
|
{{- printf "%s-helm" .Chart.Name | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Expand the name of the chart.
|
|
*/}}
|
|
{{- define "seaweedfs.name" -}}
|
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Inject extra environment vars in the format key:value, if populated
|
|
*/}}
|
|
{{- define "seaweedfs.extraEnvironmentVars" -}}
|
|
{{- if .extraEnvironmentVars -}}
|
|
{{- range $key, $value := .extraEnvironmentVars }}
|
|
- name: {{ $key }}
|
|
value: {{ $value | quote }}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/* Return the proper filer image */}}
|
|
{{- define "filer.image" -}}
|
|
{{- if .Values.filer.imageOverride -}}
|
|
{{- $imageOverride := .Values.filer.imageOverride -}}
|
|
{{- printf "%s" $imageOverride -}}
|
|
{{- else -}}
|
|
{{- include "common.image" . }}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/* Return the proper master image */}}
|
|
{{- define "master.image" -}}
|
|
{{- if .Values.master.imageOverride -}}
|
|
{{- $imageOverride := .Values.master.imageOverride -}}
|
|
{{- printf "%s" $imageOverride -}}
|
|
{{- else -}}
|
|
{{- include "common.image" . }}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/* Return the proper s3 image */}}
|
|
{{- define "s3.image" -}}
|
|
{{- if .Values.s3.imageOverride -}}
|
|
{{- $imageOverride := .Values.s3.imageOverride -}}
|
|
{{- printf "%s" $imageOverride -}}
|
|
{{- else -}}
|
|
{{- include "common.image" . }}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/* Return the proper sftp image */}}
|
|
{{- define "sftp.image" -}}
|
|
{{- if .Values.sftp.imageOverride -}}
|
|
{{- $imageOverride := .Values.sftp.imageOverride -}}
|
|
{{- printf "%s" $imageOverride -}}
|
|
{{- else -}}
|
|
{{- include "common.image" . }}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/* Return the proper volume image */}}
|
|
{{- define "volume.image" -}}
|
|
{{- if .Values.volume.imageOverride -}}
|
|
{{- $imageOverride := .Values.volume.imageOverride -}}
|
|
{{- printf "%s" $imageOverride -}}
|
|
{{- else -}}
|
|
{{- include "common.image" . }}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/* Computes the container image name for all components (if they are not overridden) */}}
|
|
{{- define "common.image" -}}
|
|
{{- $registryName := default .Values.image.registry .Values.global.registry | toString -}}
|
|
{{- $repositoryName := default .Values.image.repository .Values.global.repository | toString -}}
|
|
{{- $name := .Values.global.imageName | toString -}}
|
|
{{- $tag := default .Chart.AppVersion .Values.image.tag | toString -}}
|
|
{{- if $repositoryName -}}
|
|
{{- $name = printf "%s/%s" (trimSuffix "/" $repositoryName) (base $name) -}}
|
|
{{- end -}}
|
|
{{- if $registryName -}}
|
|
{{- printf "%s/%s:%s" $registryName $name $tag -}}
|
|
{{- else -}}
|
|
{{- printf "%s:%s" $name $tag -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/* check if any Volume PVC exists */}}
|
|
{{- define "volume.pvc_exists" -}}
|
|
{{- if or (or (eq .Values.volume.data.type "persistentVolumeClaim") (and (eq .Values.volume.idx.type "persistentVolumeClaim") .Values.volume.dir_idx )) (eq .Values.volume.logs.type "persistentVolumeClaim") -}}
|
|
{{- printf "true" -}}
|
|
{{- else -}}
|
|
{{- printf "" -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/* check if any Filer PVC exists */}}
|
|
{{- define "filer.pvc_exists" -}}
|
|
{{- if or (eq .Values.filer.data.type "persistentVolumeClaim") (eq .Values.filer.logs.type "persistentVolumeClaim") -}}
|
|
{{- printf "true" -}}
|
|
{{- else -}}
|
|
{{- printf "" -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/* check if any Master PVC exists */}}
|
|
{{- define "master.pvc_exists" -}}
|
|
{{- if or (eq .Values.master.data.type "persistentVolumeClaim") (eq .Values.master.logs.type "persistentVolumeClaim") -}}
|
|
{{- printf "true" -}}
|
|
{{- else -}}
|
|
{{- printf "" -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/* check if any InitContainers exist for Volumes */}}
|
|
{{- define "volume.initContainers_exists" -}}
|
|
{{- if or (not (empty .Values.volume.idx )) (not (empty .Values.volume.initContainers )) -}}
|
|
{{- printf "true" -}}
|
|
{{- else -}}
|
|
{{- printf "" -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/* Return the proper imagePullSecrets */}}
|
|
{{- define "seaweedfs.imagePullSecrets" -}}
|
|
{{- with .Values.global.imagePullSecrets }}
|
|
imagePullSecrets:
|
|
{{- if kindIs "string" . }}
|
|
- name: {{ . }}
|
|
{{- else }}
|
|
{{- range . }}
|
|
{{- if kindIs "string" . }}
|
|
- name: {{ . }}
|
|
{{- else }}
|
|
- {{ toYaml . }}
|
|
{{- end}}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Renders a value that contains template perhaps with scope if the scope is present.
|
|
Usage:
|
|
{{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $ ) }}
|
|
{{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $ "scope" $app ) }}
|
|
*/}}
|
|
{{- define "common.tplvalues.render" -}}
|
|
{{- $value := typeIs "string" .value | ternary .value (.value | toYaml) }}
|
|
{{- if contains "{{" (toJson .value) }}
|
|
{{- if .scope }}
|
|
{{- tpl (cat "{{- with $.RelativeScope -}}" $value "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
|
|
{{- else }}
|
|
{{- tpl $value .context }}
|
|
{{- end }}
|
|
{{- else }}
|
|
{{- $value }}
|
|
{{- end }}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Converts a Kubernetes quantity like "256Mi" or "2G" to a float64 in base units,
|
|
handling both binary (Ki, Mi, Gi) and decimal (m, k, M) suffixes; numeric inputs
|
|
Usage:
|
|
{{ include "common.resource-quantity" "10Gi" }}
|
|
*/}}
|
|
{{- define "common.resource-quantity" -}}
|
|
{{- $value := . -}}
|
|
{{- $unit := 1.0 -}}
|
|
{{- if typeIs "string" . -}}
|
|
{{- $base2 := dict "Ki" 0x1p10 "Mi" 0x1p20 "Gi" 0x1p30 "Ti" 0x1p40 "Pi" 0x1p50 "Ei" 0x1p60 -}}
|
|
{{- $base10 := dict "m" 1e-3 "k" 1e3 "M" 1e6 "G" 1e9 "T" 1e12 "P" 1e15 "E" 1e18 -}}
|
|
{{- range $k, $v := merge $base2 $base10 -}}
|
|
{{- if hasSuffix $k $ -}}
|
|
{{- $value = trimSuffix $k $ -}}
|
|
{{- $unit = $v -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- mulf (float64 $value) $unit -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
getOrGeneratePassword will check if a password exists in a secret and return it,
|
|
or generate a new random password if it doesn't exist.
|
|
*/}}
|
|
{{- define "getOrGeneratePassword" -}}
|
|
{{- $params := . -}}
|
|
{{- $namespace := $params.namespace -}}
|
|
{{- $secretName := $params.secretName -}}
|
|
{{- $key := $params.key -}}
|
|
{{- $length := default 16 $params.length -}}
|
|
|
|
{{- $existingSecret := lookup "v1" "Secret" $namespace $secretName -}}
|
|
{{- if and $existingSecret (index $existingSecret.data $key) -}}
|
|
{{- index $existingSecret.data $key | b64dec -}}
|
|
{{- else -}}
|
|
{{- randAlphaNum $length -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Compute the master service address to be used in cluster env vars.
|
|
If allInOne is enabled, point to the all-in-one service; otherwise, point to the master service.
|
|
*/}}
|
|
{{- define "seaweedfs.cluster.masterAddress" -}}
|
|
{{- $serviceNameSuffix := "-master" -}}
|
|
{{- if .Values.allInOne.enabled -}}
|
|
{{- $serviceNameSuffix = "-all-in-one" -}}
|
|
{{- end -}}
|
|
{{- printf "%s%s.%s:%d" (include "seaweedfs.name" .) $serviceNameSuffix .Release.Namespace (int .Values.master.port) -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Compute the filer service address to be used in cluster env vars.
|
|
If allInOne is enabled, point to the all-in-one service; otherwise, point to the filer-client service.
|
|
*/}}
|
|
{{- define "seaweedfs.cluster.filerAddress" -}}
|
|
{{- $serviceNameSuffix := "-filer-client" -}}
|
|
{{- if .Values.allInOne.enabled -}}
|
|
{{- $serviceNameSuffix = "-all-in-one" -}}
|
|
{{- end -}}
|
|
{{- printf "%s%s.%s:%d" (include "seaweedfs.name" .) $serviceNameSuffix .Release.Namespace (int .Values.filer.port) -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Generate comma-separated list of master server addresses.
|
|
Usage: {{ include "seaweedfs.masterServers" . }}
|
|
Output example: ${SEAWEEDFS_FULLNAME}-master-0.${SEAWEEDFS_FULLNAME}-master.namespace:9333,${SEAWEEDFS_FULLNAME}-master-1...
|
|
*/}}
|
|
{{- define "seaweedfs.masterServers" -}}
|
|
{{- $fullname := include "seaweedfs.name" . -}}
|
|
{{- range $index := until (.Values.master.replicas | int) -}}
|
|
{{- if $index }},{{ end -}}
|
|
${SEAWEEDFS_FULLNAME}-master-{{ $index }}.${SEAWEEDFS_FULLNAME}-master.{{ $.Release.Namespace }}:{{ $.Values.master.port }}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Generate master server argument value, using global.masterServer if set, otherwise the generated list.
|
|
Usage: {{ include "seaweedfs.masterServerArg" . }}
|
|
*/}}
|
|
{{- define "seaweedfs.masterServerArg" -}}
|
|
{{- if .Values.global.masterServer -}}
|
|
{{- .Values.global.masterServer -}}
|
|
{{- else -}}
|
|
{{- include "seaweedfs.masterServers" . -}}
|
|
{{- end -}}
|
|
{{- end -}}
|