rebase this chart on cnpg provided chart
All checks were successful
release-charts-postgres-cluster / release (push) Successful in 18s
All checks were successful
release-charts-postgres-cluster / release (push) Successful in 18s
This commit is contained in:
@@ -7,18 +7,22 @@ backup:
|
||||
endpointURL: {{ .Values.backup.endpointURL }}
|
||||
{{- if .Values.backup.endpointCA }}
|
||||
endpointCA:
|
||||
name: {{ .Values.backup.endpointCA }}
|
||||
key: ca-bundle.crt
|
||||
name: {{ .Values.backup.endpointCA.name }}
|
||||
key: {{ .Values.backup.endpointCA.key }}
|
||||
{{- end }}
|
||||
serverName: "{{ include "cluster.name" . }}-backup-{{ .Values.backup.backupIndex }}"
|
||||
tags:
|
||||
{{- with .Values.backup.tags }}
|
||||
{{- . | toYaml | nindent 6 }}
|
||||
serverName: "{{ include "cluster.backupName" . }}-backup-{{ .Values.backup.backupIndex }}"
|
||||
wal:
|
||||
compression: {{ .Values.backup.wal.compression }}
|
||||
{{- with .Values.backup.wal.encryption}}
|
||||
encryption: {{ . }}
|
||||
{{- end }}
|
||||
historyTags:
|
||||
{{- with .Values.backup.historyTags }}
|
||||
{{- . | toYaml | nindent 6 }}
|
||||
maxParallel: {{ .Values.backup.wal.maxParallel }}
|
||||
data:
|
||||
compression: {{ .Values.backup.data.compression }}
|
||||
{{- with .Values.backup.data.encryption }}
|
||||
encryption: {{ . }}
|
||||
{{- end }}
|
||||
jobs: {{ .Values.backup.data.jobs }}
|
||||
s3Credentials:
|
||||
accessKeyId:
|
||||
name: {{ include "cluster.backupCredentials" . }}
|
||||
@@ -26,25 +30,5 @@ backup:
|
||||
secretAccessKey:
|
||||
name: {{ include "cluster.backupCredentials" . }}
|
||||
key: ACCESS_SECRET_KEY
|
||||
wal:
|
||||
{{- if .Values.backup.wal.compression }}
|
||||
compression: {{ .Values.backup.wal.compression }}
|
||||
{{- end }}
|
||||
{{- if .Values.backup.wal.encryption }}
|
||||
encryption: {{ .Values.backup.wal.encryption }}
|
||||
{{- end }}
|
||||
{{- if .Values.backup.wal.maxParallel }}
|
||||
maxParallel: {{ .Values.backup.wal.maxParallel }}
|
||||
{{- end }}
|
||||
data:
|
||||
{{- if .Values.backup.data.compression }}
|
||||
compression: {{ .Values.backup.data.compression }}
|
||||
{{- end }}
|
||||
{{- if .Values.backup.data.encryption }}
|
||||
encryption: {{ .Values.backup.data.encryption }}
|
||||
{{- end }}
|
||||
{{- if .Values.backup.data.jobs }}
|
||||
jobs: {{ .Values.backup.data.jobs }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
@@ -1,16 +1,20 @@
|
||||
{{- define "cluster.bootstrap" -}}
|
||||
bootstrap:
|
||||
|
||||
{{- if eq .Values.mode "standalone" }}
|
||||
bootstrap:
|
||||
initdb:
|
||||
{{- with .Values.bootstrap.initdb }}
|
||||
{{- with (omit . "postInitApplicationSQL") }}
|
||||
{{- . | toYaml | nindent 4 }}
|
||||
{{- with .Values.cluster.initdb }}
|
||||
{{- with (omit . "postInitApplicationSQL" "owner" "import") }}
|
||||
{{- . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.cluster.initdb.owner }}
|
||||
owner: {{ tpl .Values.cluster.initdb.owner . }}
|
||||
{{- end }}
|
||||
{{- if eq .Values.type "tensorchord" }}
|
||||
dataChecksums: true
|
||||
{{- end }}
|
||||
{{- if or (eq .Values.type "postgis") (eq .Values.type "timescaledb") (eq .Values.type "tensorchord") (.Values.bootstrap.initdb.postInitApplicationSQL) }}
|
||||
{{- if or (eq .Values.type "postgis") (eq .Values.type "timescaledb") (eq .Values.type "tensorchord") (.Values.cluster.initdb.postInitApplicationSQL) }}
|
||||
postInitApplicationSQL:
|
||||
{{- if eq .Values.type "postgis" }}
|
||||
- CREATE EXTENSION IF NOT EXISTS postgis;
|
||||
@@ -29,65 +33,117 @@ bootstrap:
|
||||
- GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA vectors TO "app";
|
||||
- GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "app";
|
||||
{{- end }}
|
||||
{{- with .Values.bootstrap.initdb }}
|
||||
{{- range .postInitApplicationSQL }}
|
||||
{{- printf "- %s" . | nindent 6 }}
|
||||
{{- end }}
|
||||
{{- with .Values.cluster.initdb }}
|
||||
{{- range .postInitApplicationSQL }}
|
||||
{{- printf "- %s" . | nindent 6 }}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- else if eq .Values.mode "replica" }}
|
||||
|
||||
{{- else if eq .Values.mode "recovery" -}}
|
||||
bootstrap:
|
||||
|
||||
{{- if eq .Values.recovery.method "pgBaseBackup" }}
|
||||
pg_basebackup:
|
||||
source: pgBaseBackupSource
|
||||
{{ with .Values.recovery.pgBaseBackup.database }}
|
||||
database: {{ . }}
|
||||
{{- end }}
|
||||
{{ with .Values.recovery.pgBaseBackup.owner }}
|
||||
owner: {{ . }}
|
||||
{{- end }}
|
||||
{{ with .Values.recovery.pgBaseBackup.secret }}
|
||||
secret:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
externalClusters:
|
||||
{{- include "cluster.externalSourceCluster" (list "pgBaseBackupSource" .Values.recovery.pgBaseBackup.source) | nindent 2 }}
|
||||
|
||||
{{- else if eq .Values.recovery.method "import" }}
|
||||
initdb:
|
||||
{{- with .Values.cluster.initdb }}
|
||||
{{- with (omit . "owner" "import" "postInitApplicationSQL") }}
|
||||
{{- . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.cluster.initdb.owner }}
|
||||
owner: {{ tpl .Values.cluster.initdb.owner . }}
|
||||
{{- end }}
|
||||
import:
|
||||
type: {{ .Values.replica.importType }}
|
||||
source:
|
||||
externalCluster: importSource
|
||||
type: {{ .Values.recovery.import.type }}
|
||||
databases:
|
||||
{{- if and (gt (len .Values.replica.importDatabases) 1) (eq .Values.replica.importType "microservice") }}
|
||||
{{- if and (gt (len .Values.recovery.import.databases) 1) (eq .Values.recovery.import.type "microservice") }}
|
||||
{{ fail "Too many databases in import type of microservice!" }}
|
||||
{{- else}}
|
||||
{{- with .Values.replica.importDatabases }}
|
||||
{{- with .Values.recovery.import.databases }}
|
||||
{{- . | toYaml | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if eq .Values.replica.importType "monolith" }}
|
||||
{{- if eq .Values.recovery.import.type "monolith" }}
|
||||
roles:
|
||||
{{- with .Values.replica.importRoles }}
|
||||
{{- . | toYaml | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if and (.Values.replica.postImportApplicationSQL) (eq .Values.replica.importType "microservice") }}
|
||||
{{- if and (.Values.recovery.import.postImportApplicationSQL) (eq .Values.recovery.import.type "microservice") }}
|
||||
postImportApplicationSQL:
|
||||
{{- with .Values.replica.postImportApplicationSQL }}
|
||||
{{- with .Values.recovery.import.postImportApplicationSQL }}
|
||||
{{- . | toYaml | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
source:
|
||||
externalCluster: "{{ include "cluster.name" . }}-cluster"
|
||||
{{- with .Values.bootstrap.initdb }}
|
||||
{{- with (omit . "postInitApplicationSQL") }}
|
||||
{{- . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
schemaOnly: {{ .Values.recovery.import.schemaOnly }}
|
||||
{{ with .Values.recovery.import.pgDumpExtraOptions }}
|
||||
pgDumpExtraOptions:
|
||||
{{- . | toYaml | nindent 8 }}
|
||||
{{- end }}
|
||||
{{ with .Values.recovery.import.pgRestoreExtraOptions }}
|
||||
pgRestoreExtraOptions:
|
||||
{{- . | toYaml | nindent 8 }}
|
||||
{{- end }}
|
||||
externalClusters:
|
||||
- name: "{{ include "cluster.name" . }}-cluster"
|
||||
{{- with .Values.replica.externalCluster }}
|
||||
{{- . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- else if eq .Values.mode "recovery" }}
|
||||
{{- include "cluster.externalSourceCluster" (list "importSource" .Values.recovery.import.source) | nindent 2 }}
|
||||
|
||||
{{- else if eq .Values.mode "backup" }}
|
||||
recovery:
|
||||
{{- with .Values.recovery.pitrTarget.time }}
|
||||
{{- with .Values.recovery.backup.pitrTarget.time }}
|
||||
recoveryTarget:
|
||||
targetTime: {{ . }}
|
||||
{{- end }}
|
||||
{{ with .Values.recovery.backup.database }}
|
||||
database: {{ . }}
|
||||
{{- end }}
|
||||
{{ with .Values.recovery.backup.owner }}
|
||||
owner: {{ . }}
|
||||
{{- end }}
|
||||
backup:
|
||||
name: {{ .Values.recovery.backup.backupName }}
|
||||
|
||||
{{- else if eq .Values.mode "objectStore" }}
|
||||
recovery:
|
||||
{{- with .Values.recovery.objectStore.pitrTarget.time }}
|
||||
recoveryTarget:
|
||||
targetTime: {{ . }}
|
||||
{{- end }}
|
||||
{{ with .Values.recovery.objectStore.database }}
|
||||
database: {{ . }}
|
||||
{{- end }}
|
||||
{{ with .Values.recovery.objectStore.owner }}
|
||||
owner: {{ . }}
|
||||
{{- end }}
|
||||
source: {{ include "cluster.recoveryServerName" . }}
|
||||
|
||||
externalClusters:
|
||||
- name: {{ include "cluster.recoveryServerName" . }}
|
||||
barmanObjectStore:
|
||||
serverName: {{ include "cluster.recoveryServerName" . }}
|
||||
destinationPath: {{ .Values.recovery.destinationPath }}
|
||||
endpointURL: {{ .Values.recovery.endpointURL }}
|
||||
{{- with .Values.recovery.endpointCA }}
|
||||
endpointURL: {{ .Values.recovery.objectStore.endpointURL }}
|
||||
destinationPath: {{ .Values.recovery.objectStore.destinationPath }}
|
||||
{{- if .Values.recovery.objectStore.endpointCA }}
|
||||
endpointCA:
|
||||
name: {{ . }}
|
||||
key: ca-bundle.crt
|
||||
name: {{ .Values.recovery.objectStore.endpointCA.name }}
|
||||
key: {{ .Values.recovery.objectStore.endpointCA.key }}
|
||||
{{- end }}
|
||||
s3Credentials:
|
||||
accessKeyId:
|
||||
@@ -97,26 +153,24 @@ externalClusters:
|
||||
name: {{ include "cluster.recoveryCredentials" . }}
|
||||
key: ACCESS_SECRET_KEY
|
||||
wal:
|
||||
{{- if .Values.recovery.wal.compression }}
|
||||
compression: {{ .Values.recovery.wal.compression }}
|
||||
{{- end }}
|
||||
{{- if .Values.recovery.wal.encryption }}
|
||||
encryption: {{ .Values.recovery.wal.encryption }}
|
||||
{{- end }}
|
||||
{{- if .Values.recovery.wal.maxParallel }}
|
||||
maxParallel: {{ .Values.recovery.wal.maxParallel }}
|
||||
compression: {{ .Values.recovery.objectStore.wal.compression }}
|
||||
{{- with .Values.recovery.objectStore.wal.encryption}}
|
||||
encryption: {{ . }}
|
||||
{{- end }}
|
||||
maxParallel: {{ .Values.recovery.objectStore.wal.maxParallel }}
|
||||
data:
|
||||
{{- if .Values.recovery.data.compression }}
|
||||
compression: {{ .Values.recovery.data.compression }}
|
||||
compression: {{ .Values.recovery.objectStore.data.compression }}
|
||||
{{- with .Values.recovery.objectStore.data.encryption }}
|
||||
encryption: {{ . }}
|
||||
{{- end }}
|
||||
{{- if .Values.recovery.data.encryption }}
|
||||
encryption: {{ .Values.recovery.data.encryption }}
|
||||
{{- end }}
|
||||
{{- if .Values.recovery.data.jobs }}
|
||||
jobs: {{ .Values.recovery.data.jobs }}
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
jobs: {{ .Values.recovery.objectStore.data.jobs }}
|
||||
|
||||
{{- else }}
|
||||
{{ fail "Invalid recovery mode!" }}
|
||||
{{- end }}
|
||||
|
||||
{{- else }}
|
||||
{{ fail "Invalid cluster mode!" }}
|
||||
{{- end }}
|
||||
|
||||
{{- end }}
|
||||
|
12
charts/postgres-cluster/templates/_colorize.tpl
Normal file
12
charts/postgres-cluster/templates/_colorize.tpl
Normal file
@@ -0,0 +1,12 @@
|
||||
{{- define "cluster.color-error" }}
|
||||
{{- printf "\033[0;31m%s\033[0m" . -}}
|
||||
{{- end }}
|
||||
{{- define "cluster.color-ok" }}
|
||||
{{- printf "\033[0;32m%s\033[0m" . -}}
|
||||
{{- end }}
|
||||
{{- define "cluster.color-warning" }}
|
||||
{{- printf "\033[0;33m%s\033[0m" . -}}
|
||||
{{- end }}
|
||||
{{- define "cluster.color-info" }}
|
||||
{{- printf "\033[0;34m%s\033[0m" . -}}
|
||||
{{- end }}
|
@@ -0,0 +1,33 @@
|
||||
{{- define "cluster.externalSourceCluster" -}}
|
||||
{{- $name := first . -}}
|
||||
{{- $config := last . -}}
|
||||
- name: {{ first . }}
|
||||
connectionParameters:
|
||||
host: {{ $config.host | quote }}
|
||||
port: {{ $config.port | quote }}
|
||||
user: {{ $config.username | quote }}
|
||||
{{- with $config.database }}
|
||||
dbname: {{ . | quote }}
|
||||
{{- end }}
|
||||
sslmode: {{ $config.sslMode | quote }}
|
||||
{{- if $config.passwordSecret.name }}
|
||||
password:
|
||||
name: {{ $config.passwordSecret.name }}
|
||||
key: {{ $config.passwordSecret.key }}
|
||||
{{- end }}
|
||||
{{- if $config.sslKeySecret.name }}
|
||||
sslKey:
|
||||
name: {{ $config.sslKeySecret.name }}
|
||||
key: {{ $config.sslKeySecret.key }}
|
||||
{{- end }}
|
||||
{{- if $config.sslCertSecret.name }}
|
||||
sslCert:
|
||||
name: {{ $config.sslCertSecret.name }}
|
||||
key: {{ $config.sslCertSecret.key }}
|
||||
{{- end }}
|
||||
{{- if $config.sslRootCertSecret.name }}
|
||||
sslRootCert:
|
||||
name: {{ $config.sslRootCertSecret.name }}
|
||||
key: {{ $config.sslRootCertSecret.key }}
|
||||
{{- end }}
|
||||
{{- end }}
|
@@ -9,6 +9,17 @@ Expand the name of the chart.
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Allow the release namespace to be overridden for multi-namespace deployments in combined charts
|
||||
*/}}
|
||||
{{- define "cluster.namespace" -}}
|
||||
{{- if .Values.namespaceOverride -}}
|
||||
{{- .Values.namespaceOverride -}}
|
||||
{{- else -}}
|
||||
{{- .Release.Namespace -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
@@ -37,6 +48,56 @@ app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/part-of: cloudnative-pg
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Whether we need to use TimescaleDB defaults
|
||||
*/}}
|
||||
{{- define "cluster.useTimescaleDBDefaults" -}}
|
||||
{{ and (eq .Values.type "timescaledb") .Values.imageCatalog.create (empty .Values.cluster.imageCatalogRef.name) (empty .Values.imageCatalog.images) (empty .Values.cluster.imageName) }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Cluster Image Name
|
||||
If a custom imageName is available, use it, otherwise use the defaults based on the .Values.type
|
||||
*/}}
|
||||
{{- define "cluster.imageName" -}}
|
||||
{{- if .Values.cluster.image.repository -}}
|
||||
{{- printf "%s:%s" .Values.cluster.image.repository .Values.cluster.image.tag -}}
|
||||
{{- else if eq .Values.type "postgresql" -}}
|
||||
{{- printf "ghcr.io/cloudnative-pg/postgresql:%s" .Values.version.postgresql -}}
|
||||
{{- else if eq .Values.type "postgis" -}}
|
||||
{{- printf "ghcr.io/cloudnative-pg/postgis:%s-%s" .Values.version.postgresql .Values.version.postgis -}}
|
||||
{{- else -}}
|
||||
{{ fail "Invalid cluster type!" }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Cluster Image
|
||||
If imageCatalogRef defined, use it, otherwise calculate ordinary imageName.
|
||||
*/}}
|
||||
{{- define "cluster.image" }}
|
||||
{{- if .Values.cluster.imageCatalogRef.name }}
|
||||
imageCatalogRef:
|
||||
apiGroup: postgresql.cnpg.io
|
||||
{{- toYaml .Values.cluster.imageCatalogRef | nindent 2 }}
|
||||
major: {{ include "cluster.postgresqlMajor" . }}
|
||||
{{- else if and .Values.imageCatalog.create (not (empty .Values.imageCatalog.images )) }}
|
||||
imageCatalogRef:
|
||||
apiGroup: postgresql.cnpg.io
|
||||
kind: ImageCatalog
|
||||
name: {{ include "cluster.name" . }}
|
||||
major: {{ include "cluster.postgresqlMajor" . }}
|
||||
{{- else if eq (include "cluster.useTimescaleDBDefaults" .) "true" -}}
|
||||
imageCatalogRef:
|
||||
apiGroup: postgresql.cnpg.io
|
||||
kind: ImageCatalog
|
||||
name: {{ include "cluster.name" . }}-timescaledb-ha
|
||||
major: {{ include "cluster.postgresqlMajor" . }}
|
||||
{{- else }}
|
||||
imageName: {{ include "cluster.imageName" . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Generate name for object store credentials
|
||||
*/}}
|
||||
@@ -56,6 +117,32 @@ Generate name for object store credentials
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Postgres UID
|
||||
*/}}
|
||||
{{- define "cluster.postgresUID" -}}
|
||||
{{- if ge (int .Values.cluster.postgresUID) 0 -}}
|
||||
{{- .Values.cluster.postgresUID }}
|
||||
{{- else if and (eq (include "cluster.useTimescaleDBDefaults" .) "true") (eq .Values.type "timescaledb") -}}
|
||||
{{- 1000 -}}
|
||||
{{- else -}}
|
||||
{{- 26 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Postgres GID
|
||||
*/}}
|
||||
{{- define "cluster.postgresGID" -}}
|
||||
{{- if ge (int .Values.cluster.postgresGID) 0 -}}
|
||||
{{- .Values.cluster.postgresGID }}
|
||||
{{- else if and (eq (include "cluster.useTimescaleDBDefaults" .) "true") (eq .Values.type "timescaledb") -}}
|
||||
{{- 1000 -}}
|
||||
{{- else -}}
|
||||
{{- 26 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Generate backup server name
|
||||
*/}}
|
||||
@@ -67,7 +154,6 @@ Generate backup server name
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
{{/*
|
||||
Generate recovery server name
|
||||
*/}}
|
||||
@@ -78,14 +164,3 @@ Generate recovery server name
|
||||
{{- printf "%s-backup-%s" (include "cluster.name" .) (toString .Values.recovery.recoveryIndex) | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Generate recovery instance name
|
||||
*/}}
|
||||
{{- define "cluster.recoveryInstanceName" -}}
|
||||
{{- if .Values.recovery.recoveryInstanceName -}}
|
||||
{{- .Values.recovery.recoveryInstanceName -}}
|
||||
{{- else -}}
|
||||
{{ include "cluster.name" . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
@@ -2,7 +2,7 @@ apiVersion: postgresql.cnpg.io/v1
|
||||
kind: Cluster
|
||||
metadata:
|
||||
name: {{ include "cluster.name" . }}-cluster
|
||||
namespace: {{ .Release.Namespace }}
|
||||
namespace: {{ include "cluster.namespace" . }}
|
||||
{{- with .Values.cluster.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
@@ -14,17 +14,27 @@ metadata:
|
||||
{{- end }}
|
||||
spec:
|
||||
instances: {{ .Values.cluster.instances }}
|
||||
{{- include "cluster.image" . | nindent 2 }}
|
||||
imageName: "{{ .Values.cluster.image.repository }}:{{ .Values.cluster.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.cluster.image.pullPolicy }}
|
||||
postgresUID: {{ .Values.cluster.postgresUID }}
|
||||
postgresGID: {{ .Values.cluster.postgresGID }}
|
||||
enableSuperuserAccess: {{ .Values.cluster.enableSuperuserAccess }}
|
||||
walStorage:
|
||||
size: {{ .Values.cluster.walStorage.size }}
|
||||
storageClass: {{ .Values.cluster.walStorage.storageClass }}
|
||||
imagePullPolicy: {{ .Values.cluster.image.imagePullPolicy }}
|
||||
{{- with .Values.cluster.image.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
postgresUID: {{ include "cluster.postgresUID" . }}
|
||||
postgresGID: {{ include "cluster.postgresGID" . }}
|
||||
storage:
|
||||
size: {{ .Values.cluster.storage.size }}
|
||||
{{- if not (empty .Values.cluster.storage.storageClass) }}
|
||||
storageClass: {{ .Values.cluster.storage.storageClass }}
|
||||
{{- end }}
|
||||
{{- if .Values.cluster.walStorage.enabled }}
|
||||
walStorage:
|
||||
size: {{ .Values.cluster.walStorage.size }}
|
||||
{{- if not (empty .Values.cluster.walStorage.storageClass) }}
|
||||
storageClass: {{ .Values.cluster.walStorage.storageClass }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.cluster.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
@@ -36,30 +46,98 @@ spec:
|
||||
{{- if .Values.cluster.priorityClassName }}
|
||||
priorityClassName: {{ .Values.cluster.priorityClassName }}
|
||||
{{- end }}
|
||||
|
||||
primaryUpdateMethod: {{ .Values.cluster.primaryUpdateMethod }}
|
||||
primaryUpdateStrategy: {{ .Values.cluster.primaryUpdateStrategy }}
|
||||
logLevel: {{ .Values.cluster.logLevel }}
|
||||
{{- with .Values.cluster.certificates }}
|
||||
certificates:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{ end }}
|
||||
enableSuperuserAccess: {{ .Values.cluster.enableSuperuserAccess }}
|
||||
{{- with .Values.cluster.superuserSecret }}
|
||||
superuserSecret:
|
||||
name: {{ . }}
|
||||
{{ end }}
|
||||
enablePDB: {{ .Values.cluster.enablePDB }}
|
||||
|
||||
postgresql:
|
||||
{{- if eq .Values.type "timescaledb" }}
|
||||
{{- if or (eq .Values.type "timescaledb") (eq .Values.type "tensorchord") (not (empty .Values.cluster.postgresql.shared_preload_libraries)) }}
|
||||
shared_preload_libraries:
|
||||
{{- if eq .Values.type "timescaledb" }}
|
||||
- timescaledb
|
||||
{{- end }}
|
||||
{{- if eq .Values.type "tensorchord" }}
|
||||
shared_preload_libraries:
|
||||
{{- end }}
|
||||
{{- if eq .Values.type "tensorchord" }}
|
||||
- vectors.so
|
||||
enableAlterSystem: true
|
||||
{{- end }}
|
||||
{{- with .Values.cluster.postgresql.shared_preload_libraries }}
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.cluster.postgresql.shared_preload_libraries }}
|
||||
shared_preload_libraries:
|
||||
{{- with .Values.cluster.postgresql.pg_hba }}
|
||||
pg_hba:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
{{- with .Values.cluster.postgresql.pg_ident }}
|
||||
pg_ident:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
{{- with .Values.cluster.postgresql.ldap }}
|
||||
ldap:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end}}
|
||||
{{- with .Values.cluster.postgresql.synchronous }}
|
||||
synchronous:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{ end }}
|
||||
{{- with .Values.cluster.postgresql.parameters }}
|
||||
parameters:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
|
||||
{{- if not (and (empty .Values.cluster.roles) (empty .Values.cluster.services)) }}
|
||||
managed:
|
||||
{{- with .Values.cluster.services }}
|
||||
services:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{ end }}
|
||||
{{- with .Values.cluster.roles }}
|
||||
roles:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{ end }}
|
||||
{{- end }}
|
||||
|
||||
{{- with .Values.cluster.serviceAccountTemplate }}
|
||||
serviceAccountTemplate:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
|
||||
monitoring:
|
||||
enablePodMonitor: {{ and .Values.cluster.monitoring.enabled .Values.cluster.monitoring.podMonitor.enabled }}
|
||||
disableDefaultQueries: {{ .Values.cluster.monitoring.disableDefaultQueries }}
|
||||
{{- if not (empty .Values.cluster.monitoring.customQueries) }}
|
||||
customQueriesConfigMap:
|
||||
- name: {{ include "cluster.name" . }}-monitoring
|
||||
key: custom-queries
|
||||
{{- end }}
|
||||
{{- if not (empty .Values.cluster.monitoring.customQueriesSecret) }}
|
||||
{{- with .Values.cluster.monitoring.customQueriesSecret }}
|
||||
customQueriesSecret:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{ end }}
|
||||
{{- end }}
|
||||
{{- if not (empty .Values.cluster.monitoring.podMonitor.relabelings) }}
|
||||
{{- with .Values.cluster.monitoring.podMonitor.relabelings }}
|
||||
podMonitorRelabelings:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{ end }}
|
||||
{{- end }}
|
||||
{{- if not (empty .Values.cluster.monitoring.podMonitor.metricRelabelings) }}
|
||||
{{- with .Values.cluster.monitoring.podMonitor.metricRelabelings }}
|
||||
podMonitorMetricRelabelings:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{ end }}
|
||||
{{- end }}
|
||||
|
||||
{{ include "cluster.bootstrap" . | nindent 2 }}
|
||||
|
||||
{{ include "cluster.backup" . | nindent 2 }}
|
||||
|
21
charts/postgres-cluster/templates/config-map.yaml
Normal file
21
charts/postgres-cluster/templates/config-map.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
{{- if not (empty .Values.cluster.monitoring.customQueries) }}
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ include "cluster.name" . }}-monitoring
|
||||
namespace: {{ include "cluster.namespace" . }}
|
||||
labels:
|
||||
cnpg.io/reload: ""
|
||||
{{- include "cluster.labels" . | nindent 4 }}
|
||||
{{- with .Values.cluster.additionalLabels }}
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
data:
|
||||
custom-queries: |
|
||||
{{- range .Values.cluster.monitoring.customQueries }}
|
||||
{{ .name }}:
|
||||
query: {{ .query | quote }}
|
||||
metrics:
|
||||
{{- .metrics | toYaml | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
18
charts/postgres-cluster/templates/image-catalog.yaml
Normal file
18
charts/postgres-cluster/templates/image-catalog.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
{{ if and .Values.imageCatalog.create (not (empty .Values.imageCatalog.images )) }}
|
||||
apiVersion: postgresql.cnpg.io/v1
|
||||
kind: ImageCatalog
|
||||
metadata:
|
||||
name: {{ include "cluster.name" . }}-image-catalog
|
||||
namespace: {{ include "cluster.namespace" . }}
|
||||
labels:
|
||||
{{- include "cluster.labels" . | nindent 4 }}
|
||||
{{- with .Values.cluster.additionalLabels }}
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
images:
|
||||
{{- range $image := .Values.imageCatalog.images }}
|
||||
- image: {{ $image.image }}
|
||||
major: {{ $image.major }}
|
||||
{{- end }}
|
||||
{{- end }}
|
54
charts/postgres-cluster/templates/poolers.yaml
Normal file
54
charts/postgres-cluster/templates/poolers.yaml
Normal file
@@ -0,0 +1,54 @@
|
||||
{{- range .Values.poolers }}
|
||||
---
|
||||
apiVersion: postgresql.cnpg.io/v1
|
||||
kind: Pooler
|
||||
metadata:
|
||||
name: {{ include "cluster.name" $ }}-pooler-{{ .name }}
|
||||
namespace: {{ include "cluster.namespace" $ }}
|
||||
labels:
|
||||
{{- include "cluster.labels" . | nindent 4 }}
|
||||
{{- with .Values.cluster.additionalLabels }}
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
cluster:
|
||||
name: {{ include "cluster.name" $ }}
|
||||
instances: {{ .instances }}
|
||||
type: {{ default "rw" .type }}
|
||||
pgbouncer:
|
||||
poolMode: {{ default "session" .poolMode }}
|
||||
{{- with .authQuerySecret }}
|
||||
authQuerySecret:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
{{- with .authQuery }}
|
||||
authQuery:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
{{- with .parameters }}
|
||||
parameters:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
{{- with .pg_hba }}
|
||||
pg_hba:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
{{ with .monitoring }}
|
||||
monitoring:
|
||||
{{- if not (empty .podMonitor) }}
|
||||
enablePodMonitor: {{ and .enabled .podMonitor.enabled }}
|
||||
{{- with .podMonitor.relabelings }}
|
||||
podMonitorRelabelings:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{ end }}
|
||||
{{- with .podMonitor.metricRelabelings }}
|
||||
podMonitorMetricRelabelings:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{ end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .template }}
|
||||
template:
|
||||
{{- . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
@@ -3,7 +3,7 @@ apiVersion: monitoring.coreos.com/v1
|
||||
kind: PrometheusRule
|
||||
metadata:
|
||||
name: {{ include "cluster.name" . }}-alert-rules
|
||||
namespace: {{ .Release.Namespace }}
|
||||
namespace: {{ include "cluster.namespace" . }}
|
||||
labels:
|
||||
{{- include "cluster.labels" . | nindent 4 }}
|
||||
{{- with .Values.cluster.additionalLabels }}
|
||||
@@ -26,72 +26,5 @@ spec:
|
||||
{{- with $tpl }}
|
||||
- {{ $tpl }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if .Values.cluster.monitoring.prometheusRule.enableDefaultRules }}
|
||||
- name: cloudnative-pg/default-rules
|
||||
rules:
|
||||
- alert: LongRunningTransaction
|
||||
annotations:
|
||||
description: Pod {{`{{`}} $labels.pod {{`}}`}} is taking more than 5 minutes (300 seconds) for a query.
|
||||
summary: A query is taking longer than 5 minutes.
|
||||
expr: |-
|
||||
cnpg_backends_max_tx_duration_seconds > 300
|
||||
for: 1m
|
||||
labels:
|
||||
severity: warning
|
||||
- alert: BackendsWaiting
|
||||
annotations:
|
||||
description: Pod {{`{{`}} $labels.pod {{`}}`}} has been waiting for longer than 5 minutes
|
||||
summary: If a backend is waiting for longer than 5 minutes
|
||||
expr: |-
|
||||
cnpg_backends_waiting_total > 300
|
||||
for: 1m
|
||||
labels:
|
||||
severity: warning
|
||||
- alert: PGDatabaseXidAge
|
||||
annotations:
|
||||
description: Over 300,000,000 transactions from frozen xid on pod {{`{{`}} $labels.pod {{`}}`}}
|
||||
summary: Number of transactions from the frozen XID to the current one
|
||||
expr: |-
|
||||
cnpg_pg_database_xid_age > 300000000
|
||||
for: 1m
|
||||
labels:
|
||||
severity: warning
|
||||
- alert: PGReplication
|
||||
annotations:
|
||||
description: Standby is lagging behind by over 300 seconds (5 minutes)
|
||||
summary: The standby is lagging behind the primary
|
||||
expr: |-
|
||||
cnpg_pg_replication_lag > 300
|
||||
for: 1m
|
||||
labels:
|
||||
severity: warning
|
||||
- alert: LastFailedArchiveTime
|
||||
annotations:
|
||||
description: Archiving failed for {{`{{`}} $labels.pod {{`}}`}}
|
||||
summary: Checks the last time archiving failed. Will be < 0 when it has not failed.
|
||||
expr: |-
|
||||
(cnpg_pg_stat_archiver_last_failed_time - cnpg_pg_stat_archiver_last_archived_time) > 1
|
||||
for: 1m
|
||||
labels:
|
||||
severity: warning
|
||||
- alert: DatabaseDeadlockConflicts
|
||||
annotations:
|
||||
description: There are over 10 deadlock conflicts in {{`{{`}} $labels.pod {{`}}`}}
|
||||
summary: Checks the number of database conflicts
|
||||
expr: |-
|
||||
cnpg_pg_stat_database_deadlocks > 10
|
||||
for: 1m
|
||||
labels:
|
||||
severity: warning
|
||||
- alert: ReplicaFailingReplication
|
||||
annotations:
|
||||
description: Replica {{`{{`}} $labels.pod {{`}}`}} is failing to replicate
|
||||
summary: Checks if the replica is failing to replicate
|
||||
expr: |-
|
||||
cnpg_pg_replication_in_recovery > cnpg_pg_replication_is_wal_receiver_up
|
||||
for: 1m
|
||||
labels:
|
||||
severity: warning
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{ end }}
|
||||
|
@@ -1,9 +1,12 @@
|
||||
{{ if .Values.backup.enabled }}
|
||||
{{ $context := . -}}
|
||||
{{ range .Values.backup.scheduledBackups -}}
|
||||
---
|
||||
apiVersion: postgresql.cnpg.io/v1
|
||||
kind: ScheduledBackup
|
||||
metadata:
|
||||
name: {{ include "cluster.name" . }}-scheduled-backup
|
||||
namespace: {{ .Release.Namespace }}
|
||||
name: {{ include "cluster.name" $context }}-{{ .name }}-scheduled-backup
|
||||
namespace: {{ include "cluster.namespace" $ }}
|
||||
labels:
|
||||
{{- include "cluster.labels" . | nindent 4 }}
|
||||
{{- with .Values.cluster.additionalLabels }}
|
||||
@@ -11,8 +14,9 @@ metadata:
|
||||
{{- end }}
|
||||
spec:
|
||||
immediate: true
|
||||
schedule: {{ .Values.backup.schedule }}
|
||||
backupOwnerReference: self
|
||||
schedule: {{ .schedule | quote }}
|
||||
backupOwnerReference: {{ .backupOwnerReference }}
|
||||
cluster:
|
||||
name: {{ include "cluster.name" . }}-cluster
|
||||
name: {{ include "cluster.name" $context }}
|
||||
{{ end -}}
|
||||
{{ end }}
|
||||
|
Reference in New Issue
Block a user