locals { pg-labels = merge(local.common-labels, { "app.kubernetes.io/component" = "pg" }) backup-def = var.backups.enable ? { retentionPolicy = var.backups.retention.db barmanObjectStore = { destinationPath = "s3://${var.instance}-${var.namespace}/" endpointURL = "${var.backups.endpoint}/barman" s3Credentials = { accessKeyId = { name = var.backups.secret-name key = var.backups.key-id-key } secretAccessKey = { name = var.backups.secret-name key = var.backups.secret-key } } } } : {} } resource "kubectl_manifest" "prj_pg" { yaml_body = <<-EOF apiVersion: postgresql.cnpg.io/v1 kind: Cluster metadata: name: "${var.instance}-${var.component}-pg" namespace: "${var.namespace}" labels: ${jsonencode(local.pg-labels)} spec: instances: ${var.postgres.replicas} monitoring: enablePodMonitor: true bootstrap: initdb: database: "${var.component}" owner: "${var.component}" storage: size: "${var.postgres.storage}" backup: ${jsonencode(local.backup-def)} EOF } resource "kubectl_manifest" "prj_pg_backup" { yaml_body = <<-EOF apiVersion: postgresql.cnpg.io/v1 kind: ScheduledBackup metadata: name: "${var.instance}-${var.component}-pg" namespace: "${var.namespace}" labels: ${jsonencode(local.pg-labels)} spec: schedule: "${var.backups.schedule.db}" backupOwnerReference: self cluster: name: "${var.instance}-${var.component}-pg" EOF }