locals { dns_name = "${var.instance}.${var.sub-domain}.${var.domain_name}" pg-labels = merge(local.common-labels, { "app.kubernetes.io/component" = "postgresql" }) pool-labels = merge(local.common-labels, { "app.kubernetes.io/component" = "pg-pool" }) } resource "kubectl_manifest" "prj_pg" { yaml_body = join("", concat([<<-EOF apiVersion: postgresql.cnpg.io/v1 kind: Cluster metadata: name: "${var.instance}-${var.component}" namespace: "${var.namespace}" labels: ${jsonencode(local.pg-labels)} spec: instances: ${var.postgres.replicas} imageName: "${var.images.postgresql.registry}/${var.images.postgresql.repository}:${var.images.postgresql.tag}" storage: size: "${var.storage.postgres.size}" monitoring: enablePodMonitor: true bootstrap: initdb: database: "${var.instance}" owner: "${var.instance}" EOF ], var.backups.enable?[<<-EOF backup: 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}" EOF ]:[""])) } resource "kubectl_manifest" "prj_pg_backup" { count = var.backups.enable ? 1:0 yaml_body = <<-EOF apiVersion: postgresql.cnpg.io/v1 kind: ScheduledBackup metadata: name: "${var.instance}-${var.component}" namespace: "${var.namespace}" labels: ${jsonencode(local.pg-labels)} spec: schedule: "${var.backups.schedule.db}" backupOwnerReference: self cluster: name: "${var.instance}-${var.component}" EOF } resource "kubectl_manifest" "prj_pg_pool" { count = var.extentions.pool.enable ? 1:0 depends_on = [kubectl_manifest.prj_pg] yaml_body = <<-EOF apiVersion: postgresql.cnpg.io/v1 kind: Pooler metadata: name: "${var.instance}-${var.component}-pool" namespace: "${var.namespace}" labels: ${jsonencode(local.pool-labels)} spec: cluster: name: "${var.instance}-${var.component}" instances: 1 type: rw pgbouncer: poolMode: session parameters: max_client_conn: "1000" default_pool_size: "10" EOF }