feat(helm): add _helpers.tpl with naming, labels, and URL builders
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
142
infrastructure/helm/templates/_helpers.tpl
Normal file
142
infrastructure/helm/templates/_helpers.tpl
Normal file
@@ -0,0 +1,142 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "tod.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Fully qualified app name (truncated to 63 chars for DNS compliance).
|
||||
*/}}
|
||||
{{- define "tod.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 }}
|
||||
|
||||
{{/*
|
||||
Chart name and version for the chart label.
|
||||
*/}}
|
||||
{{- define "tod.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels applied to all resources.
|
||||
*/}}
|
||||
{{- define "tod.labels" -}}
|
||||
helm.sh/chart: {{ include "tod.chart" . }}
|
||||
{{ include "tod.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels (used in Deployments/Services to match pods).
|
||||
*/}}
|
||||
{{- define "tod.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "tod.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Component labels — call with: include "tod.componentLabels" (dict "context" . "component" "api")
|
||||
*/}}
|
||||
{{- define "tod.componentLabels" -}}
|
||||
{{ include "tod.labels" .context }}
|
||||
app.kubernetes.io/component: {{ .component }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Component selector labels — call with: include "tod.componentSelectorLabels" (dict "context" . "component" "api")
|
||||
*/}}
|
||||
{{- define "tod.componentSelectorLabels" -}}
|
||||
{{ include "tod.selectorLabels" .context }}
|
||||
app.kubernetes.io/component: {{ .component }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Database URL (superuser, async — used by API for runtime queries).
|
||||
*/}}
|
||||
{{- define "tod.databaseUrl" -}}
|
||||
{{- if .Values.postgres.enabled }}
|
||||
{{- printf "postgresql+asyncpg://%s:%s@%s-postgres:%d/%s" .Values.postgres.auth.username .Values.secrets.dbPassword (include "tod.fullname" .) (int .Values.postgres.service.port) .Values.postgres.auth.database }}
|
||||
{{- else }}
|
||||
{{- .Values.postgres.externalUrl }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Database URL (superuser, sync — for Alembic migrations).
|
||||
*/}}
|
||||
{{- define "tod.syncDatabaseUrl" -}}
|
||||
{{- if .Values.postgres.enabled }}
|
||||
{{- printf "postgresql+psycopg2://%s:%s@%s-postgres:%d/%s" .Values.postgres.auth.username .Values.secrets.dbPassword (include "tod.fullname" .) (int .Values.postgres.service.port) .Values.postgres.auth.database }}
|
||||
{{- else }}
|
||||
{{- .Values.postgres.externalUrl | replace "asyncpg" "psycopg2" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Database URL (app_user, RLS-enforced — used by API for tenant-scoped queries).
|
||||
*/}}
|
||||
{{- define "tod.appUserDatabaseUrl" -}}
|
||||
{{- if .Values.postgres.enabled }}
|
||||
{{- printf "postgresql+asyncpg://%s:%s@%s-postgres:%d/%s" .Values.postgres.auth.appUsername .Values.secrets.dbAppPassword (include "tod.fullname" .) (int .Values.postgres.service.port) .Values.postgres.auth.database }}
|
||||
{{- else }}
|
||||
{{- .Values.postgres.externalUrl }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Database URL (poller_user, bypasses RLS — uses postgres:// not postgresql+asyncpg://).
|
||||
*/}}
|
||||
{{- define "tod.pollerDatabaseUrl" -}}
|
||||
{{- if .Values.postgres.enabled }}
|
||||
{{- printf "postgres://poller_user:%s@%s-postgres:%d/%s" .Values.secrets.dbPollerPassword (include "tod.fullname" .) (int .Values.postgres.service.port) .Values.postgres.auth.database }}
|
||||
{{- else }}
|
||||
{{- .Values.postgres.externalPollerUrl | default .Values.postgres.externalUrl }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Redis URL.
|
||||
*/}}
|
||||
{{- define "tod.redisUrl" -}}
|
||||
{{- if .Values.redis.enabled }}
|
||||
{{- printf "redis://%s-redis:%d/0" (include "tod.fullname" .) (int .Values.redis.service.port) }}
|
||||
{{- else }}
|
||||
{{- .Values.redis.externalUrl | default "redis://localhost:6379/0" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
NATS URL.
|
||||
*/}}
|
||||
{{- define "tod.natsUrl" -}}
|
||||
{{- if .Values.nats.enabled }}
|
||||
{{- printf "nats://%s-nats:%d" (include "tod.fullname" .) (int .Values.nats.service.port) }}
|
||||
{{- else }}
|
||||
{{- .Values.nats.externalUrl | default "nats://localhost:4222" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
OpenBao address.
|
||||
*/}}
|
||||
{{- define "tod.openbaoAddr" -}}
|
||||
{{- if .Values.openbao.enabled }}
|
||||
{{- printf "http://%s-openbao:%d" (include "tod.fullname" .) 8200 }}
|
||||
{{- else }}
|
||||
{{- .Values.openbao.externalAddr | default "http://localhost:8200" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
Reference in New Issue
Block a user