CloudNativePG
Installiert das CloudNativePG helm-chart.
Changelog
Move to CHANGELOG.poly
actions
install
Installiert nur den Operator
project-name: &project-name my-cluster
blocks:
- name: cloudnative-pg
from: cargo.ayedo.cloud/ayedo/k8s/cloudnative-pg
kubeconfig:
from: k8s
config:
namespace: cloudnative-pg
operator:
enabled: true
replicas: 1
barman:
enabled: true
Installiert ein Cluster
- name: cloudnative-pg
from: cargo.ayedo.cloud/ayedo/k8s/cloudnative-pg
kubeconfig:
from: k8s
config:
namespace: cloudnative-pg
cluster:
enabled: true
resources: {}
# requests:
# memory: "32Gi"
# cpu: "4"
# limits:
# memory: "64Gi"
monitoring:
vmpodscrape:
enabled: true
instances: 3
affinity:
enablePodAntiAffinity: true #default value
topologyKey: kubernetes.io/hostname #default value
podAntiAffinityType: preferred #default value
postgresql:
parameters: {}
# shared_buffers: 16GB
# max_connections: "16000"
initdb:
database: application
owner: app
storage:
size: 10Gi
class: ""
walstorage:
size: 5Gi
class: ""
pooler:
enabled: true
instances: 3
backup:
enabled: true
schedule:
enabled: true
cron: "0 0 */3 * * *" # Alle 3 Stunden
# WICHTIG: Kein normaler UNIX-CRON-Syntax! (https://cloudnative-pg.io/documentation/1.22/backup/)
s3:
endpoint: https://s3.example.com
bucket: "pgbackup"
key: ""
secret: ""
Backup nach Azure Blob Storage
Alternativ zu S3 können Backups in einen Azure Blob Storage Container geschrieben
werden. Dazu backup.mode: azure setzen und den azure-Block befüllen. Der
endpointURL (S3) wird in diesem Mode nicht gerendert.
connection_string.key muss die vollständige, fertige Azure Storage Connection
String enthalten — sie wird unverändert in das Secret übernommen. Beide Varianten
werden unterstützt:
- AccountKey:
DefaultEndpointsProtocol=https;AccountName=<acct>;AccountKey=<key>;EndpointSuffix=core.windows.net(Azure Portal → Storage Account → Security + networking → Access keys) - SAS:
BlobEndpoint=https://<acct>.blob.core.windows.net;SharedAccessSignature=<sas-token>
backup:
enabled: true
mode: azure
schedule:
enabled: true
cron: "0 0 */3 * * *" # Alle 3 Stunden
azure:
# Vollständiges Ziel inkl. Container.
destination_path: "https://<storage-account-name>.blob.core.windows.net/<container-name>"
connection_string:
name: "" # nur Label, wird NICHT für die Authentifizierung verwendet
# Vollständige Connection String (AccountKey- oder SAS-basiert)
key: "DefaultEndpointsProtocol=https;AccountName=<acct>;AccountKey=<key>;EndpointSuffix=core.windows.net"
Startet ein neues Cluster im Recovery mode (lokale Backup CR)
Restore aus einer Backup-CR, die im selben Cluster existiert. Der LSN-Wert steht in den Backup-CRDs.
- Der Name des Blocks darf nicht identisch sein mit dem Source-Cluster.
- Der Namespace darf nicht geändert werden.
- name: cloudnative-pg
from: cargo.ayedo.cloud/ayedo/k8s/cloudnative-pg
kubeconfig:
from: k8s
config:
namespace: cloudnative-pg
cluster:
enabled: true
resources: {}
# requests:
# memory: "32Gi"
# cpu: "4"
# limits:
# memory: "64Gi"
monitoring:
vmpodscrape:
enabled: true
instances: 3
affinity:
enablePodAntiAffinity: true #default value
topologyKey: kubernetes.io/hostname #default value
podAntiAffinityType: preferred #default value
postgresql:
parameters: {}
# shared_buffers: 16GB
# max_connections: "16000"
# initdb stehen lassen, damit db name und owner für den Restore verwendet werden kann.
initdb:
database: application
owner: app
recovery:
enabled: true
mode: backup
from:
backup:
crdname: "cloudnative-pg-20250313151500" # Name der Backup CRD
secretname: "cloudnative-pg-app" # Secret von vorherigem Cluster verwenden.
pitr:
enabled: true
#time: "2025-03-13 15:25:48.00000+02" # Alternativ kann ein Timestamp verwendet werden. Zeitzone beachten!
lsn: "8A/3AE06F20" # LSN aus Backup CRD `status.endLSN`
storage:
size: 10Gi
class: ""
walstorage:
size: 5Gi
class: ""
pooler:
enabled: true
instances: 3
backup:
enabled: true
schedule:
enabled: true
cron: "0 0 */3 * * *" # Alle 3 Stunden
# WICHTIG: Kein normaler UNIX-CRON-Syntax! (https://cloudnative-pg.io/documentation/1.22/backup/)
s3:
endpoint: https://s3.example.com
bucket: "pgbackup"
key: ""
secret: ""
Startet ein neues Cluster im Recovery mode (Cross-Cluster / Object Store)
Restore direkt aus dem Barman Object Store, ohne dass eine lokale Backup-CR im Ziel-Cluster existieren muss. Wird verwendet, wenn das Backup aus einem anderen Cluster stammt.
Die Backup-Konfiguration (backup.s3 / backup.azure) liefert automatisch Endpoint, Bucket und Credentials für den Restore — keine separate Recovery-Config nötig. CNPG wählt das neueste verfügbare Backup. Über pitr.time kann ein konkreter Zeitpunkt gezielt werden.
- name: cloudnative-pg
from: cargo.ayedo.cloud/ayedo/k8s/cloudnative-pg
kubeconfig:
from: k8s
config:
namespace: cloudnative-pg
cluster:
enabled: true
instances: 3
postgresql:
parameters: {}
storage:
size: 10Gi
class: ""
walstorage:
size: 5Gi
class: ""
recovery:
enabled: true
mode: object_store
from:
object_store:
servername: old-block-name # which should be the ClusterCR name already
pitr:
enabled: false
# time: "2026-06-30 10:00:00+02" # optional: restore bis zu diesem Zeitpunkt
backup:
enabled: true
mode: s3
schedule:
enabled: true
cron: "0 0 */3 * * *"
s3:
endpoint: https://s3.example.com
bucket: "pgbackup" # muss denselben Bucket wie der Source-Cluster verwenden
key: ""
secret: ""
uninstall
Deinstalliert cloudnative-pg vom Cluster.
polycrate run cloudnative-pg uninstall