locals { pg-labels = merge(local.common-labels, { "app.kubernetes.io/component" = "pg" }) postgres-labels = merge(local.common-labels, { "app.kubernetes.io/component" = "postgresql" }) } resource "kubectl_manifest" "prj_postgresql" { yaml_body = <<-EOF apiVersion: "acid.zalan.do/v1" kind: "postgresql" metadata: name: "${var.instance}-${var.component}" namespace: "${var.namespace}" labels: ${jsonencode(local.postgres-labels)} spec: databases: ${var.component}: "${var.component}" numberOfInstances: ${var.postgres.replicas} podAnnotations: "k8up.io/backupcommand": "pg_dump -U postgres -d ${var.component} --clean" "k8up.io/file-extension": ".sql" postgresql: version: "${var.postgres.version}" teamId: "${var.instance}" users: ${var.component}: - "superuser" - "createdb" volume: size: "${var.postgres.storage}" EOF } 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}" spec: instances: ${var.postgres.replicas} storage: size: "${var.postgres.storage}" bootstrap: initdb: database: ${var.component} owner: ${var.component} import: type: microservice databases: - ${var.component} source: externalCluster: "${var.instance}-${var.component}" externalClusters: - name: "${var.instance}-${var.component}" connectionParameters: host: "${var.instance}-${var.component}" user: postgres dbname: postgres sslmode: require password: name: "postgres.${var.instance}-${var.component}.credentials.postgresql.acid.zalan.do" key: password EOF }