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