Skip to content

Commit c317ad3

Browse files
committed
chore(postgresql-cluster): move patroni env to helper
1 parent 3a28182 commit c317ad3

3 files changed

Lines changed: 111 additions & 139 deletions

File tree

addons/postgresql-cluster/15/chart/postgresql/templates/_helpers.tpl

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,98 @@ Create the name of the service account to use.
4141
{{ default "default" .Values.serviceAccount.name }}
4242
{{- end -}}
4343
{{- end -}}
44+
45+
{{/*
46+
Create patroni envs.
47+
*/}}
48+
{{- define "patroni.envs" }}
49+
{{- if .Values.kubernetes.configmaps.enable }}
50+
- name: KUBERNETES_USE_CONFIGMAPS
51+
value: "true"
52+
{{- end }}
53+
{{- if .Values.kubernetes.endpoints.enable }}
54+
- name: PATRONI_KUBERNETES_USE_ENDPOINTS
55+
value: 'true'
56+
{{- end }}
57+
- name: PATRONI_KUBERNETES_POD_IP
58+
valueFrom:
59+
fieldRef:
60+
fieldPath: status.podIP
61+
- name: PATRONI_KUBERNETES_NAMESPACE
62+
valueFrom:
63+
fieldRef:
64+
fieldPath: metadata.namespace
65+
- name: PATRONI_KUBERNETES_BYPASS_API_SERVICE
66+
value: 'true'
67+
- name: PATRONI_KUBERNETES_LABELS
68+
value: '{app: {{ template "patroni.fullname" . }},release: {{ .Release.Name }},cluster-name: {{ template "patroni.fullname" . }}}'
69+
- name: PATRONI_SUPERUSER_USERNAME
70+
value: postgres
71+
- name: PATRONI_SUPERUSER_PASSWORD
72+
valueFrom:
73+
secretKeyRef:
74+
name: {{ template "patroni.fullname" . }}
75+
key: password-superuser
76+
- name: PATRONI_REPLICATION_USERNAME
77+
value: standby
78+
- name: PATRONI_REPLICATION_PASSWORD
79+
valueFrom:
80+
secretKeyRef:
81+
name: {{ template "patroni.fullname" . }}
82+
key: password-replication
83+
- name: PATRONI_SCOPE
84+
value: {{ template "patroni.fullname" . }}
85+
- name: PATRONI_NAME
86+
valueFrom:
87+
fieldRef:
88+
fieldPath: metadata.name
89+
- name: PATRONI_POSTGRESQL_DATA_DIR
90+
value: "{{ .Values.persistentVolume.mountPath }}/data"
91+
- name: PATRONI_POSTGRESQL_PGPASS
92+
value: /tmp/pgpass
93+
- name: PATRONI_POSTGRESQL_LISTEN
94+
value: '0.0.0.0:5432'
95+
- name: PATRONI_RESTAPI_LISTEN
96+
value: '0.0.0.0:8008'
97+
{{- end -}}
98+
99+
{{/*
100+
Create wale envs.
101+
*/}}
102+
{{- define "wale.envs" }}
103+
{{- if .Values.walE.enable }}
104+
- name: USE_WALE
105+
value: {{ .Values.walE.enable | quote }}
106+
{{- if .Values.walE.scheduleCronJob }}
107+
- name: BACKUP_SCHEDULE
108+
value: {{ .Values.walE.scheduleCronJob | quote}}
109+
{{- end }}
110+
{{- if .Values.walE.retainBackups }}
111+
- name: BACKUP_NUM_TO_RETAIN
112+
value: {{ .Values.walE.retainBackups | quote}}
113+
{{- end }}
114+
{{- if .Values.walE.s3Bucket }}
115+
- name: WAL_S3_BUCKET
116+
value: {{ .Values.walE.s3Bucket | quote }}
117+
{{else if .Values.walE.gcsBucket }}
118+
- name: WAL_GCS_BUCKET
119+
value: {{ .Values.walE.gcsBucket | quote }}
120+
{{- if .Values.walE.kubernetesSecret }}
121+
- name: GOOGLE_APPLICATION_CREDENTIALS
122+
value: "/etc/credentials/{{.Values.walE.kubernetesSecret}}.json"
123+
{{- end }}
124+
125+
{{- if .Values.walE.backupThresholdMegabytes }}
126+
- name: WALE_BACKUP_THRESHOLD_MEGABYTES
127+
value: {{ .Values.walE.backupThresholdMegabytes | quote }}
128+
{{- end }}
129+
{{- if .Values.walE.backupThresholdPercentage }}
130+
- name: WALE_BACKUP_THRESHOLD_PERCENTAGE
131+
value: {{ .Values.walE.backupThresholdPercentage | quote }}
132+
{{- end }}
133+
{{- else }}
134+
- name: USE_WALE
135+
value: ""
136+
{{- end }}
137+
{{- end }}
138+
{{- end -}}

addons/postgresql-cluster/15/chart/postgresql/templates/statefulset.yaml

Lines changed: 13 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -31,123 +31,7 @@ spec:
3131
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
3232
imagePullPolicy: {{ .Values.image.pullPolicy }}
3333
env:
34-
{{- if .Values.kubernetes.dcs.enable }}
35-
- name: PATRONI_KUBERNETES_POD_IP
36-
valueFrom:
37-
fieldRef:
38-
fieldPath: status.podIP
39-
- name: PATRONI_KUBERNETES_NAMESPACE
40-
valueFrom:
41-
fieldRef:
42-
fieldPath: metadata.namespace
43-
- name: PATRONI_KUBERNETES_BYPASS_API_SERVICE
44-
value: 'true'
45-
- name: PATRONI_KUBERNETES_USE_ENDPOINTS
46-
value: 'true'
47-
- name: PATRONI_KUBERNETES_LABELS
48-
value: '{app: {{ template "patroni.fullname" . }},release: {{ .Release.Name }},cluster-name: {{ template "patroni.fullname" . }}}'
49-
- name: PATRONI_SUPERUSER_USERNAME
50-
value: postgres
51-
- name: PATRONI_SUPERUSER_PASSWORD
52-
valueFrom:
53-
secretKeyRef:
54-
name: {{ template "patroni.fullname" . }}
55-
key: password-superuser
56-
- name: PATRONI_REPLICATION_USERNAME
57-
value: standby
58-
- name: PATRONI_REPLICATION_PASSWORD
59-
valueFrom:
60-
secretKeyRef:
61-
name: {{ template "patroni.fullname" . }}
62-
key: password-replication
63-
- name: PATRONI_SCOPE
64-
value: {{ template "patroni.fullname" . }}
65-
- name: PATRONI_NAME
66-
valueFrom:
67-
fieldRef:
68-
fieldPath: metadata.name
69-
- name: PATRONI_POSTGRESQL_DATA_DIR
70-
value: "{{ .Values.persistentVolume.mountPath }}/data"
71-
- name: PATRONI_POSTGRESQL_PGPASS
72-
value: /tmp/pgpass
73-
- name: PATRONI_POSTGRESQL_LISTEN
74-
value: '0.0.0.0:5432'
75-
- name: PATRONI_RESTAPI_LISTEN
76-
value: '0.0.0.0:8008'
77-
78-
{{- if .Values.kubernetes.configmaps.enable }}
79-
- name: KUBERNETES_USE_CONFIGMAPS
80-
value: "true"
81-
{{- end }}
82-
{{- end }}
83-
{{- if .Values.etcd.enable }}
84-
{{- if .Values.etcd.deployChart }}
85-
- name: ETCD_DISCOVERY_DOMAIN
86-
value: {{default (printf "%s-etcd" .Release.Name | trunc 63) .Values.etcd.discovery }}
87-
{{- else }}
88-
- name: ETCD_HOST
89-
value: {{ .Values.etcd.host | quote }}
90-
{{- end }}
91-
{{- else if .Values.zookeeper.enable }}
92-
{{- if .Values.zookeeper.deployChart }}
93-
- name: ZOOKEEPER_HOSTS
94-
value: {{(printf "'%s-zookeeper-headless:2181'" .Release.Name | trunc 63)}}
95-
{{- else }}
96-
- name: ZOOKEEPER_HOSTS
97-
value: {{ .Values.zookeeper.hosts | quote }}
98-
{{- end }}
99-
{{- else if .Values.consul.enable }}
100-
{{- if .Values.consul.deployChart }}
101-
- name: PATRONI_CONSUL_HOST
102-
value: {{(printf "'%s-consul'" .Release.Name | trunc 63)}}
103-
{{- else }}
104-
- name: PATRONI_CONSUL_HOST
105-
value: {{ .Values.consul.host | quote }}
106-
{{- end }}
107-
{{- end }}
108-
- name: SCOPE
109-
value: {{ template "patroni.fullname" . }}
110-
{{- if .Values.walE.enable }}
111-
- name: USE_WALE
112-
value: {{ .Values.walE.enable | quote }}
113-
{{- if .Values.walE.scheduleCronJob }}
114-
- name: BACKUP_SCHEDULE
115-
value: {{ .Values.walE.scheduleCronJob | quote}}
116-
{{- end }}
117-
{{- if .Values.walE.retainBackups }}
118-
- name: BACKUP_NUM_TO_RETAIN
119-
value: {{ .Values.walE.retainBackups | quote}}
120-
{{- end }}
121-
{{- if .Values.walE.s3Bucket }}
122-
- name: WAL_S3_BUCKET
123-
value: {{ .Values.walE.s3Bucket | quote }}
124-
{{else if .Values.walE.gcsBucket }}
125-
- name: WAL_GCS_BUCKET
126-
value: {{ .Values.walE.gcsBucket | quote }}
127-
{{- if .Values.walE.kubernetesSecret }}
128-
- name: GOOGLE_APPLICATION_CREDENTIALS
129-
value: "/etc/credentials/{{.Values.walE.kubernetesSecret}}.json"
130-
{{- end }}
131-
{{- end }}
132-
{{- if .Values.walE.backupThresholdMegabytes }}
133-
- name: WALE_BACKUP_THRESHOLD_MEGABYTES
134-
value: {{ .Values.walE.backupThresholdMegabytes | quote }}
135-
{{- end }}
136-
{{- if .Values.walE.backupThresholdPercentage }}
137-
- name: WALE_BACKUP_THRESHOLD_PERCENTAGE
138-
value: {{ .Values.walE.backupThresholdPercentage | quote }}
139-
{{- end }}
140-
{{- else }}
141-
- name: USE_WALE
142-
value: ""
143-
{{- end }}
144-
- name: PGROOT
145-
value: "{{ .Values.persistentVolume.mountPath }}/pgroot"
146-
- name: POD_NAMESPACE
147-
valueFrom:
148-
fieldRef:
149-
apiVersion: v1
150-
fieldPath: metadata.namespace
34+
{{- include "patroni.envs" . | indent 8 }}
15135
{{- if .Values.env }}
15236
{{- range $key, $val := .Values.env }}
15337
- name: {{ $key | quote | upper }}
@@ -174,6 +58,18 @@ spec:
17458
periodSeconds: 10
17559
successThreshold: 1
17660
timeoutSeconds: 5
61+
lifecycle:
62+
preStop:
63+
exec:
64+
command:
65+
- /usr/bin/env
66+
- bash
67+
- -c
68+
- |
69+
# switch leader pod if the current pod is the leader
70+
if curl --fail http://localhost:8008/read-write; then
71+
init-stack patronictl switchover --force
72+
fi
17773
ports:
17874
- containerPort: 8008
17975
protocol: TCP
@@ -182,7 +78,6 @@ spec:
18278
volumeMounts:
18379
- name: storage-volume
18480
mountPath: "{{ .Values.persistentVolume.mountPath }}"
185-
volumeMounts: "{{ .Values.persistentVolume.subPath }}"
18681
# - mountPath: /etc/patroni
18782
# name: patroni-config
18883
# readOnly: true

addons/postgresql-cluster/15/chart/postgresql/values.yaml

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ image:
55
# https://github.com/zalando/spilo/tree/master/postgres-appliance
66
repository: registry.drycc.cc/drycc-addons/patroni
77
tag: 3.2
8+
# IfNotPresent , Always
89
pullPolicy: 'IfNotPresent'
910

1011
# Credentials used by Patroni
@@ -18,29 +19,10 @@ credentials:
1819
# Distribution Configuration stores
1920
# Please note that only one of the following stores should be enabled.
2021
kubernetes:
21-
dcs:
22+
endpoints:
2223
enable: true
2324
configmaps:
2425
enable: false
25-
etcd:
26-
enable: false
27-
deployChart: false
28-
# If not deploying etcd chart, fill-in value for etcd service
29-
# <service>.<namespace>.svc.cluster.local
30-
host:
31-
# Leave blank to use vendored etcd chart
32-
discovery:
33-
zookeeper:
34-
enable: false
35-
deployChart: false
36-
# If not deploying etcd chart, fill-in list of ZooKeeper members in format:
37-
# 'host1:port1','host2:port2','etc...'
38-
hosts:
39-
consul:
40-
enable: false
41-
deployChart: false
42-
# Leave blank to use vendored consul chart
43-
hosts:
4426

4527
# Extra custom environment variables.
4628
env: {}
@@ -136,7 +118,7 @@ metrics:
136118
networkPolicy:
137119
## @param networkPolicy.enabled Enable creation of NetworkPolicy resources
138120
##
139-
enabled: false
121+
enabled: true
140122
## @param networkPolicy.allowExternal The Policy model to apply.
141123
## When set to false, only pods with the correct
142124
## client label will have network access to the port MySQL is listening

0 commit comments

Comments
 (0)