diff --git a/charts/postgres-cluster/Chart.yaml b/charts/postgres-cluster/Chart.yaml index e73f81f..3c71c64 100644 --- a/charts/postgres-cluster/Chart.yaml +++ b/charts/postgres-cluster/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: postgres-cluster -version: 1.1.0 +version: 2.0.0 description: Chart for cloudnative-pg cluster keywords: - database diff --git a/charts/postgres-cluster/templates/_backup.tpl b/charts/postgres-cluster/templates/_backup.tpl index 5bac7cb..413ed57 100644 --- a/charts/postgres-cluster/templates/_backup.tpl +++ b/charts/postgres-cluster/templates/_backup.tpl @@ -3,20 +3,20 @@ backup: retentionPolicy: {{ .Values.backup.retentionPolicy }} barmanObjectStore: - destinationPath: "s3://{{ .Values.backup.endpointBucket }}/{{ .Values.kubernetesClusterName }}/postgresql/{{ .Release.Name }}" + destinationPath: "s3://{{ .Values.backup.endpointBucket }}/{{ .Values.kubernetesClusterName }}/postgresql/{{ include "cluster.name" . }}" endpointURL: {{ .Values.backup.endpointURL }} {{- if .Values.backup.endpointCA }} endpointCA: name: {{ .Values.backup.endpointCA }} key: ca-bundle.crt {{- end }} - serverName: "postgresql-{{ .Release.Name }}-cluster-backup-index-{{ .Values.backup.backupIndex }}" + serverName: "{{ include "cluster.name" . }}-backup-{{ .Values.backup.backupIndex }}" s3Credentials: accessKeyId: - name: {{ include "cluster.backup.credentials" . }} + name: {{ include "cluster.backupCredentials" . }} key: ACCESS_KEY_ID secretAccessKey: - name: {{ include "cluster.backup.credentials" . }} + name: {{ include "cluster.backupCredentials" . }} key: ACCESS_SECRET_KEY wal: compression: {{ .Values.backup.wal.compression }} diff --git a/charts/postgres-cluster/templates/_bootstrap.tpl b/charts/postgres-cluster/templates/_bootstrap.tpl index bbfdd29..f352310 100644 --- a/charts/postgres-cluster/templates/_bootstrap.tpl +++ b/charts/postgres-cluster/templates/_bootstrap.tpl @@ -46,9 +46,9 @@ bootstrap: {{- end }} {{- end }} source: - externalCluster: "postgresql-{{ .Release.Name }}-cluster" + externalCluster: "{{ include "cluster.name" . }}-cluster" externalClusters: - - name: "postgresql-{{ .Release.Name }}-cluster" + - name: "{{ include "cluster.name" . }}-cluster" {{- with .Values.replica.externalCluster }} {{- . | toYaml | nindent 4 }} {{- end }} @@ -58,25 +58,25 @@ externalClusters: recoveryTarget: targetTime: {{ . }} {{- end }} - source: "postgresql-{{ .Release.Name }}-cluster-backup-index-{{ .Values.recovery.recoveryIndex }}" + source: "{{ include "cluster.name" . }}-backup-{{ .Values.recovery.recoveryIndex }}" externalClusters: - - name: "postgresql-{{ .Release.Name }}-cluster-backup-index-{{ .Values.recovery.recoveryIndex }}" + - name: "{{ include "cluster.name" . }}-backup-{{ .Values.recovery.recoveryIndex }}" barmanObjectStore: - serverName: "postgresql-{{ .Release.Name }}-cluster-backup-index-{{ .Values.recovery.recoveryIndex }}" - destinationPath: "s3://{{ .Values.recovery.endpointBucket }}/{{ .Values.kubernetesClusterName }}/postgresql/{{ .Release.Name }}" + serverName: "{{ include "cluster.name" . }}-backup-{{ .Values.recovery.recoveryIndex }}" + destinationPath: "s3://{{ .Values.recovery.endpointBucket }}/{{ .Values.kubernetesClusterName }}/postgresql/{{ .Values.recovery.recoveryName }}" endpointURL: {{ .Values.recovery.endpointURL }} {{- with .Values.recovery.endpointCA }} endpointCA: name: {{ . }} key: ca-bundle.crt {{- end }} - serverName: "postgresql-{{ .Release.Name }}-cluster-backup-index-{{ .Values.recovery.recoveryIndex }}" + serverName: "{{ include "cluster.name" . }}-backup-{{ .Values.recovery.recoveryIndex }}" s3Credentials: accessKeyId: - name: {{ include "cluster.recovery.credentials" . }} + name: {{ include "cluster.recoveryCredentials" . }} key: ACCESS_KEY_ID secretAccessKey: - name: {{ include "cluster.recovery.credentials" . }} + name: {{ include "cluster.recoveryCredentials" . }} key: ACCESS_SECRET_KEY wal: compression: {{ .Values.recovery.wal.compression }} diff --git a/charts/postgres-cluster/templates/_helpers.tpl b/charts/postgres-cluster/templates/_helpers.tpl index 06d0012..35c77bd 100644 --- a/charts/postgres-cluster/templates/_helpers.tpl +++ b/charts/postgres-cluster/templates/_helpers.tpl @@ -2,26 +2,13 @@ Expand the name of the chart. */}} {{- define "cluster.name" -}} - {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "cluster.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 "-" }} + {{- if .Values.nameOverride }} + {{- .Values.nameOverride | trunc 63 | trimSuffix "-" }} {{- else }} - {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} + {{ $version := split "." .Values.cluster.image.tag }} + {{- printf "postgresql-%s-%s" $version._0 .Release.Name | trunc 63 | trimSuffix "-" -}} {{- end }} {{- end }} -{{- end }} {{/* Create chart name and version as used by the chart label. @@ -54,18 +41,29 @@ app.kubernetes.io/part-of: cloudnative-pg {{/* Generate name for object store credentials */}} -{{- define "cluster.recovery.credentials" -}} +{{- define "cluster.recoveryCredentials" -}} {{- if .Values.recovery.endpointCredentials -}} {{- .Values.recovery.endpointCredentials -}} {{- else -}} {{- printf "postgresql-%s-cluster-backup-secret" .Release.Name | trunc 63 | trimSuffix "-" -}} {{- end }} -{{- end -}} +{{- end }} -{{- define "cluster.backup.credentials" -}} +{{- define "cluster.backupCredentials" -}} {{- if .Values.backup.endpointCredentials -}} {{- .Values.backup.endpointCredentials -}} {{- else -}} {{- printf "postgresql-%s-cluster-backup-secret" .Release.Name | trunc 63 | trimSuffix "-" -}} {{- end }} -{{- end -}} +{{- end }} + +{{/* +Generate recovery server name +*/}} +{{- define "cluster.recoveryName" -}} + {{- if .Values.recovery.recoveryName -}} + {{- .Values.recovery.recoveryName -}} + {{- else -}} + {{ include "cluster.name" . }} + {{- end }} +{{- end }} diff --git a/charts/postgres-cluster/templates/cluster.yaml b/charts/postgres-cluster/templates/cluster.yaml index b5c8f4e..20969a9 100644 --- a/charts/postgres-cluster/templates/cluster.yaml +++ b/charts/postgres-cluster/templates/cluster.yaml @@ -1,7 +1,7 @@ apiVersion: postgresql.cnpg.io/v1 kind: Cluster metadata: - name: "postgresql-{{ include "cluster.fullname" . }}-cluster" + name: {{ include "cluster.name" . }}-cluster namespace: {{ .Release.Namespace }} {{- with .Values.cluster.annotations }} annotations: diff --git a/charts/postgres-cluster/templates/prometheus-rule.yaml b/charts/postgres-cluster/templates/prometheus-rule.yaml index 9c6b15c..363d308 100644 --- a/charts/postgres-cluster/templates/prometheus-rule.yaml +++ b/charts/postgres-cluster/templates/prometheus-rule.yaml @@ -2,7 +2,7 @@ apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: - name: "postgresql-{{ include "cluster.fullname" . }}-alert-rules" + name: {{ include "cluster.name" . }}-alert-rules namespace: {{ .Release.Namespace }} labels: {{- include "cluster.labels" . | nindent 4 }} @@ -11,14 +11,14 @@ metadata: {{- end }} spec: groups: - - name: cloudnative-pg/{{ include "cluster.fullname" . }} + - name: cloudnative-pg/{{ include "cluster.name" . }} rules: {{- $dict := dict "excludeRules" .Values.cluster.monitoring.prometheusRule.excludeRules -}} {{- $_ := set $dict "value" "{{ $value }}" -}} {{- $_ := set $dict "namespace" .Release.Namespace -}} - {{- $_ := set $dict "cluster" (include "cluster.fullname" .) -}} + {{- $_ := set $dict "cluster" (printf "%s-cluster" (include "cluster.name" .) ) -}} {{- $_ := set $dict "labels" (dict "job" "{{ $labels.job }}" "node" "{{ $labels.node }}" "pod" "{{ $labels.pod }}") -}} - {{- $_ := set $dict "podSelector" (printf "%s-([1-9][0-9]*)$" (include "cluster.fullname" .)) -}} + {{- $_ := set $dict "podSelector" (printf "%s-cluster-([1-9][0-9]*)$" (include "cluster.name" .) ) -}} {{- $_ := set $dict "Values" .Values -}} {{- $_ := set $dict "Template" .Template -}} {{- range $path, $_ := .Files.Glob "prometheus_rules/**.yaml" }} diff --git a/charts/postgres-cluster/templates/scheduled-backup.yaml b/charts/postgres-cluster/templates/scheduled-backup.yaml index d13e542..68ddf4e 100644 --- a/charts/postgres-cluster/templates/scheduled-backup.yaml +++ b/charts/postgres-cluster/templates/scheduled-backup.yaml @@ -2,7 +2,7 @@ apiVersion: postgresql.cnpg.io/v1 kind: ScheduledBackup metadata: - name: "postgresql-{{ include "cluster.fullname" . }}-cluster-scheduled-backup" + name: {{ include "cluster.name" . }}-scheduled-backup namespace: {{ .Release.Namespace }} labels: {{- include "cluster.labels" . | nindent 4 }} @@ -14,5 +14,5 @@ spec: schedule: {{ .Values.backup.schedule }} backupOwnerReference: self cluster: - name: "postgresql-{{ include "cluster.fullname" . }}-cluster" + name: {{ include "cluster.name" . }}-cluster {{ end }} diff --git a/charts/postgres-cluster/values.yaml b/charts/postgres-cluster/values.yaml index 93ff6f0..97783b2 100644 --- a/charts/postgres-cluster/values.yaml +++ b/charts/postgres-cluster/values.yaml @@ -1,7 +1,5 @@ -# -- Override the name of the chart +# -- Override the name of the cluster nameOverride: "" -# -- Override the full name of the chart -fullnameOverride: "" ### # -- Type of the CNPG database. Available types: @@ -25,7 +23,7 @@ cluster: image: repository: ghcr.io/cloudnative-pg/postgresql - tag: 16.2 + tag: "16.2" pullPolicy: IfNotPresent # The UID and GID of the postgres user inside the image @@ -112,6 +110,9 @@ recovery: # Generate external cluster name, uses: postgresql-{{ .Release.Name }}-cluster-backup-index-{{ .Values.recovery.recoveryIndex }}" recoveryIndex: 1 + # Name of the recovery cluster in the object store, defaults to "cluster.name" + recoveryName: "" + wal: # WAL compression method. One of `` (for no compression), `gzip`, `bzip2` or `snappy`. compression: snappy