# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

## Example is available at https://github.com/bitnami/charts/blob/master/bitnami/postgresql/values.yaml

global:
  imageRegistry: "us-docker.pkg.dev/[PROJECT_ID]/main"
  storageClass: premium-rwo-retain-zonal-pg

  postgresql:
    password: ""
    database: ""

postgresql-ha:
  postgresql:
    image:
      repository: bitnami/postgresql-repmgr
      tag: 16.6.0-debian-12-r3
    replicaCount: 3
    nodeAffinityPreset:
      type: "soft"
      key: "cloud.google.com/compute-class"
      operator: In
      values:
        - Scale-Out
    podAntiAffinityPreset: "hard"
    topologySpreadConstraints:
      - topologyKey: "topology.kubernetes.io/zone"
        whenUnsatisfiable: DoNotSchedule
        maxSkew: 1
    tolerations:
    - key: "app.stateful/component"
      operator: "Equal"
      value: "postgresql"
      effect: NoSchedule
    nodeSelector:
      app.stateful/component: "postgresql"
      iam.gke.io/gke-metadata-server-enabled: "true"
    pdb:
      create: true
      minAvailable: "" # keep this to mitigate the bug of helm chart: minAvailable and maxUnavailable cannot be both set
      maxUnavailable: 1
    resources:
      requests: 
        cpu: "500m"
        memory: "0.5Gi"
      limits: 
        cpu: "500m"
        memory: "0.5Gi"        
  pgpool:
    image:
      repository: bitnami/pgpool
      tag: 4.5.5-debian-12-r0
    replicaCount: 1
    tolerations:
    - key: "app.stateful/component"
      operator: "Equal"
      value: "postgresql-pgpool"
      effect: NoSchedule
    nodeSelector:
      app.stateful/component: "postgresql-pgpool"
      iam.gke.io/gke-metadata-server-enabled: "true"
    priorityClassName: "balloon-popper-priority"
    pdb:
      create: true
      minAvailable: 1
      maxUnavailable: 0 # keep this to mitigate the bug of helm chart: minAvailable and maxUnavailable cannot be both set
    resources:
      requests: 
        cpu: "500m"
        memory: "0.5Gi"
      limits: 
        cpu: "500m"
        memory: "0.5Gi" 
  metrics:
    enabled: true
    image:
      repository: bitnami/postgres-exporter
      tag: 0.16.0-debian-12-r2
    resources:
      requests: 
        cpu: "500m"
        memory: "0.5Gi"
      limits: 
        cpu: "500m"
        memory: "0.5Gi" 
  serviceAccount:
    create: true
    name: "postgres-sa"
    annotations:
      iam.gke.io/gcp-service-account: ""
gkeBackup: # Enable this for Standard GKE, ignore during Autopilot test
  enabled: true
  protectedApplications:
  - name: postgresql-ha
    components:
      - name: postgresql
        resourceKind: StatefulSet
        resourceNames: ["postgresql-postgresql-ha-postgresql"]
        strategy:
          type: BackupAllRestoreAll
          backupAllRestoreAll: {}
storageClass:
  create: true
  name: premium-rwo-retain-zonal-pg
  parameters:
    type: pd-ssd

podMonitoring:
  enabled: true
