Files
meguri/helm/meguri/templates/_helpers.tpl
T
2026-10-07 14:22:37 +01:00

85 lines
3.0 KiB
Smarty

{{- define "meguri.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 40 | trimSuffix "-" -}}
{{- end -}}
{{- define "meguri.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 40 | trimSuffix "-" -}}
{{- else if contains .Chart.Name .Release.Name -}}
{{- .Release.Name | trunc 40 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 40 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- define "meguri.selectorLabels" -}}
app.kubernetes.io/name: {{ include "meguri.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{- define "meguri.labels" -}}
helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{ include "meguri.selectorLabels" . }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{- define "meguri.image" -}}
{{- printf "%s:%s" .Values.image.repository (default .Chart.AppVersion .Values.image.tag) -}}
{{- end -}}
{{- define "meguri.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{- default (include "meguri.fullname" .) .Values.serviceAccount.name -}}
{{- else -}}
{{- default "default" .Values.serviceAccount.name -}}
{{- end -}}
{{- end -}}
{{/* The configuration file exactly as the application reads it. */}}
{{- define "meguri.instanceConfig" -}}
{{- toYaml .Values.instanceConfig -}}
{{- end -}}
{{/* Fails the render early with a readable message. Outputs nothing. */}}
{{- define "meguri.requirements" -}}
{{- $_ := required "publicUrl is required: the exact browser origin, for example https://meguri.example.internal" .Values.publicUrl -}}
{{- $_ := required "secretName is required: a Secret with DATABASE_URL (and MEGURI_OIDC_CLIENT_SECRET when oidc is configured)" .Values.secretName -}}
{{- end -}}
{{- define "meguri.cloudSqlProxy" -}}
- name: cloud-sql-proxy
restartPolicy: Always
image: {{ .Values.cloudSqlProxy.image | quote }}
args:
{{- if .Values.cloudSqlProxy.privateIp }}
- --private-ip
{{- end }}
- --structured-logs
- --port={{ .Values.cloudSqlProxy.port }}
- --health-check
- --http-address=0.0.0.0
- --http-port=9090
- {{ required "cloudSqlProxy.instanceConnectionName is required when the proxy is enabled" .Values.cloudSqlProxy.instanceConnectionName | quote }}
securityContext:
allowPrivilegeEscalation: false
capabilities: {drop: [ALL]}
resources:
{{- toYaml .Values.cloudSqlProxy.resources | nindent 4 }}
startupProbe:
httpGet: {path: /startup, port: 9090}
periodSeconds: 2
failureThreshold: 30
{{- end -}}
{{/* Environment shared by the application and the migrate Job. */}}
{{- define "meguri.env" -}}
- {name: MEGURI_BIND, value: "0.0.0.0:3000"}
- {name: MEGURI_PUBLIC_URL, value: {{ .Values.publicUrl | trimSuffix "/" | quote }}}
- {name: MEGURI_CONFIG_FILE, value: /etc/meguri/config.yaml}
- {name: RUST_LOG, value: {{ .Values.logLevel | quote }}}
{{- with .Values.extraEnv }}
{{ toYaml . }}
{{- end }}
{{- end -}}