keycloak/.helm/templates/10-postgres.yaml

118 lines
3.5 KiB
YAML
Raw Permalink Normal View History

{{- $pgDb := dig .Values.env .Values.postgres.database._default .Values.postgres.database | quote }}
{{- $pgUser := dig .Values.env .Values.postgres.user._default .Values.postgres.user | quote }}
{{- $pgPassword := dig .Values.env .Values.postgres.password._default .Values.postgres.password | quote }}
{{- $pgStorageSize := dig .Values.env .Values.postgres.storage.size._default .Values.postgres.storage.size | quote }}
{{- $pgStorageClass := dig .Values.env .Values.postgres.storage.class._default .Values.postgres.storage.class | quote }}
{{- $nodeSelector := dig .Values.env .Values.postgres.nodeSelector._default .Values.postgres.nodeSelector }}
{{- $tolerations := dig .Values.env .Values.postgres.tolerations._default .Values.postgres.tolerations }}
2026-09-09 14:06:31 +00:00
---
apiVersion: v1
kind: Secret
metadata:
name: {{ .Chart.Name }}-postgres-env
stringData:
POSTGRES_DB: {{ $pgDb }}
POSTGRES_USER: {{ $pgUser }}
POSTGRES_PASSWORD: {{ $pgPassword }}
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: {{ .Chart.Name }}-postgres
labels:
app: {{ .Chart.Name }}-postgres
spec:
serviceName: postgres
replicas: 1
selector:
matchLabels:
app: {{ .Chart.Name }}-postgres
template:
metadata:
labels:
app: {{ .Chart.Name }}-postgres
spec:
{{- if $nodeSelector }}
nodeSelector: {{ toYaml $nodeSelector | nindent 8 }}
{{- end }}
{{- if $tolerations }}
tolerations: {{ toYaml $tolerations | nindent 6 }}
{{- end }}
{{- with .Values.imagePullSecrets }}
2026-09-09 14:06:31 +00:00
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
2026-09-09 14:06:31 +00:00
containers:
- name: master
image: {{ .Values.image.postgresql }}
2026-09-09 14:06:31 +00:00
imagePullPolicy: IfNotPresent
resources: {{ dig .Values.env .Values.postgres.resources._default .Values.postgres.resources | toYaml | nindent 10 }}
2026-09-09 14:06:31 +00:00
volumeMounts:
- name: data
mountPath: /var/lib/postgresql/data
subPath: postgresql
- name: config
mountPath: /usr/share/postgresql/postgresql.conf.sample
subPath: postgresql.conf.sample
env:
- name: TZ
value: "Europe/Moscow"
envFrom:
- secretRef:
name: {{ .Chart.Name }}-postgres-env
readinessProbe:
tcpSocket:
port: {{ .Values.postgres.port }}
initialDelaySeconds: 5
timeoutSeconds: 1
livenessProbe:
tcpSocket:
port: {{ .Values.postgres.port }}
initialDelaySeconds: 30
periodSeconds: 5
volumes:
- name: config
configMap:
name: {{ .Chart.Name }}-postgres
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ $pgStorageSize }}
{{- if $pgStorageClass }}
storageClassName: {{ $pgStorageClass }}
{{- end }}
---
apiVersion: v1
kind: Service
metadata:
name: postgres
spec:
clusterIP: None
selector:
app: {{ .Chart.Name }}-postgres
ports:
- name: {{ .Chart.Name }}-postgres
port: {{ .Values.postgres.port }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Chart.Name }}-postgres
data:
postgresql.conf.sample: |
listen_addresses = '*'
log_checkpoints = on
log_connections = off
log_disconnections = off
log_duration = on
log_line_prefix = '%m %p %u@%d from %h [vxid:%v txid:%x] [%i]'
log_lock_waits = on
log_statement = 'all'
log_temp_files = 0
log_timezone = 'UTC'