Skip to content

Commit f57e768

Browse files
committed
chore(postgresql-cluster) add wal-g for backup
1 parent c796972 commit f57e768

19 files changed

Lines changed: 865 additions & 131 deletions

File tree

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

Lines changed: 605 additions & 0 deletions
Large diffs are not rendered by default.

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

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,16 @@ Create the name of the service account to use.
4242
{{- end -}}
4343
{{- end -}}
4444

45+
{{/*
46+
Return true if a cronjob object should be created for Postgresql HA patroni
47+
*/}}
48+
{{- define "patroni.createCronJob" -}}
49+
{{- if and .Values.walG.enable }}
50+
{{- true -}}
51+
{{- else -}}
52+
{{- end -}}
53+
{{- end -}}
54+
4555
{{/*
4656
Return true if a configmap object should be created for Postgresql HA patroni
4757
*/}}
@@ -75,7 +85,7 @@ Create patroni envs.
7585
- name: PATRONI_KUBERNETES_BYPASS_API_SERVICE
7686
value: 'true'
7787
- name: PATRONI_KUBERNETES_LABELS
78-
value: '{app: {{ template "patroni.fullname" . }},release: {{ .Release.Name }},cluster-name: {{ template "patroni.fullname" . }}}'
88+
value: '{application: {{ template "patroni.fullname" . }},release: {{ .Release.Name }},cluster-name: {{ template "patroni.fullname" . }}}'
7989
- name: PATRONI_SUPERUSER_USERNAME
8090
value: postgres
8191
- name: PATRONI_SUPERUSER_PASSWORD
@@ -131,42 +141,44 @@ Create patroni envs.
131141
{{- end -}}
132142

133143
{{/*
134-
Create wale envs.
144+
Create walg envs.
135145
*/}}
136-
{{- define "wale.envs" }}
137-
{{- if .Values.walE.enable }}
138-
- name: USE_WALE
139-
value: {{ .Values.walE.enable | quote }}
140-
{{- if .Values.walE.scheduleCronJob }}
146+
{{- define "walg.envs" }}
147+
{{- if .Values.walG.enable }}
148+
- name: USE_WALG
149+
value: {{ .Values.walG.enable | quote }}
150+
{{- if .Values.walG.scheduleCronJob }}
141151
- name: BACKUP_SCHEDULE
142-
value: {{ .Values.walE.scheduleCronJob | quote}}
152+
value: {{ .Values.walG.scheduleCronJob | quote}}
143153
{{- end }}
144-
{{- if .Values.walE.retainBackups }}
154+
{{- if .Values.walG.retainBackups }}
145155
- name: BACKUP_NUM_TO_RETAIN
146-
value: {{ .Values.walE.retainBackups | quote}}
156+
value: {{ .Values.walG.retainBackups | quote}}
147157
{{- end }}
148-
{{- if .Values.walE.s3Bucket }}
149-
- name: WAL_S3_BUCKET
150-
value: {{ .Values.walE.s3Bucket | quote }}
151-
{{else if .Values.walE.gcsBucket }}
152-
- name: WAL_GCS_BUCKET
153-
value: {{ .Values.walE.gcsBucket | quote }}
154-
{{- if .Values.walE.kubernetesSecret }}
155-
- name: GOOGLE_APPLICATION_CREDENTIALS
156-
value: "/etc/credentials/{{.Values.walE.kubernetesSecret}}.json"
158+
{{- if .Values.walG.backupThresholdMegabytes }}
159+
- name: WALG_BACKUP_THRESHOLD_MEGABYTES
160+
value: {{ .Values.walG.backupThresholdMegabytes | quote }}
157161
{{- end }}
158-
159-
{{- if .Values.walE.backupThresholdMegabytes }}
160-
- name: WALE_BACKUP_THRESHOLD_MEGABYTES
161-
value: {{ .Values.walE.backupThresholdMegabytes | quote }}
162-
{{- end }}
163-
{{- if .Values.walE.backupThresholdPercentage }}
162+
{{- if .Values.walG.backupThresholdPercentage }}
164163
- name: WALE_BACKUP_THRESHOLD_PERCENTAGE
165-
value: {{ .Values.walE.backupThresholdPercentage | quote }}
164+
value: {{ .Values.walG.backupThresholdPercentage | quote }}
165+
{{- end }}
166+
{{- if .Values.walG.s3.used }}
167+
- name: AWS_ACCESS_KEY_ID
168+
value: {{ .Values.walG.s3.awsAccessKeyId | quote }}
169+
- name: AWS_SECRET_ACCESS_KEY
170+
value: {{ .Values.walG.s3.awsSecretAccessKey | quote }}
171+
- name: WALG_S3_PREFIX
172+
value: {{ .Values.walG.s3.walGS3Prefix | quote }}
173+
- name: AWS_ENDPOINT
174+
value: {{ .Values.walG.s3.awsEndpoint | quote }}
175+
- name: AWS_S3_FORCE_PATH_STYLE
176+
value: {{ .Values.walG.s3.awsS3ForcePathStyle | quote }}
177+
- name: AWS_REGION
178+
value: {{ .Values.walG.s3.awsRegion | quote }}
166179
{{- end }}
167180
{{- else }}
168-
- name: USE_WALE
181+
- name: USE_WALG
169182
value: ""
170183
{{- end }}
171184
{{- end }}
172-
{{- end -}}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
{{- /*
2+
Copyright VMware, Inc.
3+
SPDX-License-Identifier: APACHE-2.0
4+
*/}}
5+
{{- if (include "patroni.createCronJob" .) }}
6+
apiVersion: {{ include "common.capabilities.cronjob.apiVersion" . }}
7+
kind: CronJob
8+
metadata:
9+
name: {{ include "patroni.fullname" . }}-backup
10+
namespace: {{ include "common.names.namespace" . | quote }}
11+
labels: {{- include "common.labels.standard" . | nindent 4 }}
12+
{{- if .Values.commonLabels }}
13+
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
14+
{{- end }}
15+
application: {{ template "patroni.fullname" . }}
16+
cluster-name: {{ template "patroni.fullname" . }}
17+
{{- if .Values.commonAnnotations }}
18+
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
19+
{{- end }}
20+
21+
spec:
22+
schedule: "*/1 * * * *"
23+
failedJobsHistoryLimit: 1
24+
successfulJobsHistoryLimit: 1
25+
jobTemplate:
26+
spec:
27+
template:
28+
spec:
29+
restartPolicy: OnFailure
30+
containers:
31+
- name: {{ .Chart.Name }}-backup
32+
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
33+
imagePullPolicy: Always
34+
#imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
35+
command:
36+
- /usr/bin/env
37+
- bash
38+
- -c
39+
- |
40+
echo "sleeping ...."
41+
sleep 10000
42+
echo "Successfull"
43+
init-stack /opt/drycc/wal-g/bin/wal-g backup-push
44+
init-stack /opt/drycc/wal-g/bin/wal-g delete
45+
env:
46+
{{- include "walg.envs" . | indent 14 }}
47+
- name: PGHOST
48+
value: {{ include "patroni.fullname" . }}-repl
49+
- name: PGPASSWORD
50+
valueFrom:
51+
secretKeyRef:
52+
name: {{ template "patroni.fullname" . }}
53+
key: password-replication
54+
- name: PGUSER
55+
value: standby
56+
- name: PGPORT
57+
value: "5432"
58+
{{- end -}}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ metadata:
88
{{- if .Values.commonLabels }}
99
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
1010
{{- end }}
11+
app.kubernetes.io/component: patroni
1112
cluster-name: {{ template "patroni.fullname" . }}
1213
{{- if .Values.commonAnnotations }}
1314
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ metadata:
55
name: {{ template "patroni.fullname" . }}
66
namespace: {{ include "common.names.namespace" . | quote }}
77
labels:
8-
app: {{ template "patroni.fullname" . }}
8+
application: {{ template "patroni.fullname" . }}
99
chart: {{ template "patroni.chart" . }}
1010
release: {{ .Release.Name }}
1111
heritage: {{ .Release.Service }}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ metadata:
55
name: {{ template "patroni.fullname" . }}
66
namespace: {{ include "common.names.namespace" . | quote }}
77
labels:
8-
app: {{ template "patroni.fullname" . }}
8+
application: {{ template "patroni.fullname" . }}
99
chart: {{ template "patroni.chart" . }}
1010
release: {{ .Release.Name }}
1111
heritage: {{ .Release.Service }}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ metadata:
44
name: {{ template "patroni.fullname" . }}
55
namespace: {{ include "common.names.namespace" . | quote }}
66
labels:
7-
app: {{ template "patroni.fullname" . }}
7+
application: {{ template "patroni.fullname" . }}
88
chart: {{ template "patroni.chart" . }}
99
release: {{ .Release.Name }}
1010
heritage: {{ .Release.Service }}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ metadata:
55
name: {{ template "patroni.serviceAccountName" . }}
66
namespace: {{ include "common.names.namespace" . | quote }}
77
labels:
8-
app: {{ template "patroni.fullname" . }}
8+
application: {{ template "patroni.fullname" . }}
99
chart: {{ template "patroni.chart" . }}
1010
release: {{ .Release.Name }}
1111
heritage: {{ .Release.Service }}

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

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ metadata:
55
namespace: {{ include "common.names.namespace" . | quote }}
66
labels: {{- include "common.labels.standard" . | nindent 4 }}
77
app.kubernetes.io/component: patroni
8-
app: {{ template "patroni.fullname" . }}
8+
application: {{ template "patroni.fullname" . }}
99
chart: {{ template "patroni.chart" . }}
1010
release: {{ .Release.Name }}
1111
heritage: {{ .Release.Service }}
@@ -16,16 +16,20 @@ spec:
1616
selector:
1717
matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }}
1818
app.kubernetes.io/component: patroni
19-
app: {{ template "patroni.fullname" . }}
19+
application: {{ template "patroni.fullname" . }}
20+
chart: {{ template "patroni.chart" . }}
2021
release: {{ .Release.Name }}
22+
heritage: {{ .Release.Service }}
2123
cluster-name: {{ template "patroni.fullname" . }}
2224
template:
2325
metadata:
2426
name: {{ template "patroni.fullname" . }}
2527
labels: {{- include "common.labels.standard" . | nindent 8 }}
2628
app.kubernetes.io/component: patroni
27-
app: {{ template "patroni.fullname" . }}
29+
application: {{ template "patroni.fullname" . }}
30+
chart: {{ template "patroni.chart" . }}
2831
release: {{ .Release.Name }}
32+
heritage: {{ .Release.Service }}
2933
cluster-name: {{ template "patroni.fullname" . }}
3034
spec:
3135
serviceAccountName: {{ template "patroni.serviceAccountName" . }}
@@ -91,13 +95,6 @@ spec:
9195
- mountPath: "/opt/drycc/postgresql/scripts/"
9296
name: patroni-config
9397
# readOnly: true
94-
{{- if .Values.walE.enable }}
95-
{{- if .Values.walE.kubernetesSecret }}
96-
- name: {{ .Values.walE.kubernetesSecret }}
97-
mountPath: /etc/credentials
98-
readOnly: true
99-
{{- end }}
100-
{{- end }}
10198
resources:
10299
{{ toYaml .Values.resources | indent 10 }}
103100
{{- if .Values.metrics.enabled }}
@@ -171,13 +168,6 @@ spec:
171168
- name: patroni-config
172169
configMap:
173170
name: {{ template "common.names.fullname" . }}-cm
174-
{{- if .Values.walE.enable }}
175-
{{- if .Values.walE.kubernetesSecret }}
176-
- name: {{ .Values.walE.kubernetesSecret }}
177-
secret:
178-
secretName: {{ .Values.walE.kubernetesSecret }}
179-
{{- end }}
180-
{{- end }}
181171
{{- if not .Values.persistentVolume.enabled }}
182172
- name: storage-volume
183173
emptyDir: {}
@@ -191,7 +181,7 @@ spec:
191181
{{ toYaml .Values.persistentVolume.annotations | indent 8 }}
192182
{{- end }}
193183
labels:
194-
app: {{ template "patroni.fullname" . }}
184+
application: {{ template "patroni.fullname" . }}
195185
release: {{ .Release.Name }}
196186
heritage: {{ .Release.Service }}
197187
spec:

addons/postgresql-cluster/15/chart/postgresql-cluster/templates/svc-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ kind: Service
44
metadata:
55
name: {{ template "patroni.fullname" . }}-config
66
labels:
7-
app: {{ template "patroni.fullname" . }}
7+
application: {{ template "patroni.fullname" . }}
88
release: {{ .Release.Name }}
99
cluster-name: {{ template "patroni.fullname" . }}
1010
spec:

0 commit comments

Comments
 (0)