bcgov/common-object-management-service

View on GitHub
charts/postgres/templates/postgres.yaml

Summary

Maintainability
Test Coverage
apiVersion: postgres-operator.crunchydata.com/v1beta1
kind: PostgresCluster
metadata:
  name: {{ default .Release.Name .Values.name }}
spec:
  postgresVersion: {{ required "You must set the version of Postgres to deploy." .Values.postgresVersion }}
  {{- if .Values.postGISVersion }}
  postGISVersion: {{ quote .Values.postGISVersion }}
  {{- end }}
  {{- if .Values.imagePostgres }}
  image: {{ .Values.imagePostgres | quote }}
  {{- end }}
  {{- if .Values.port }}
  port: {{ .Values.port }}
  {{- end }}
  {{- if .Values.instances }}
  instances:
{{ toYaml .Values.instances | indent 4 }}
  {{- else }}
  instances:
    - name: {{ default "instance1" .Values.instanceName | quote }}
      replicas: {{ default 1 .Values.instanceReplicas }}
      dataVolumeClaimSpec:
        {{- if .Values.instanceStorageClassName }}
        storageClassName: {{ .Values.instanceStorageClassName | quote }}
        {{- end }}
        accessModes:
        - "ReadWriteOnce"
        resources:
          requests:
            storage: {{ default "1Gi" .Values.instanceSize | quote }}
      {{- if or .Values.instanceMemory .Values.instanceCPU }}
      resources:
        limits:
          cpu: {{ default "" .Values.instanceCPU | quote }}
          memory: {{ default "" .Values.instanceMemory | quote }}
      {{- end }}
  {{- end }}
  backups:
    pgbackrest:
      {{- if .Values.imagePgBackRest }}
      image: {{ .Values.imagePgBackRest | quote }}
      {{- end }}
      {{- if .Values.pgBackRestConfig }}
{{ toYaml .Values.pgBackRestConfig | indent 6 }}
      {{- else if .Values.multiBackupRepos }}
      configuration:
      - secret:
          name: {{ default .Release.Name .Values.name }}-pgbackrest-secret
      global:
        {{- range $index, $repo := .Values.multiBackupRepos }}
        {{- if or $repo.s3 $repo.gcs $repo.azure }}
        repo{{ add $index 1 }}-path: /pgbackrest/{{ $.Release.Namespace }}/{{ default $.Release.Name $.Values.name }}/repo{{ add $index 1 }}
        {{- end }}
        {{- end }}
      repos:
      {{- range $index, $repo := .Values.multiBackupRepos }}
      - name: repo{{ add $index 1 }}
        {{- if $repo.volume }}
        volume:
          volumeClaimSpec:
            {{- if $repo.volume.backupsStorageClassName }}
            storageClassName: {{ .Values.backupsStorageClassName | quote }}
            {{- end }}
            accessModes:
            - "ReadWriteOnce"
            resources:
              requests:
                storage: {{ default "1Gi" $repo.volume.backupsSize | quote }}
        {{- else if $repo.s3 }}
        s3:
          bucket: {{ $repo.s3.bucket | quote }}
          endpoint: {{ $repo.s3.endpoint | quote }}
          region: {{ $repo.s3.region | quote }}
        {{- else if $repo.gcs }}
        gcs:
          bucket: {{ $repo.gcs.bucket | quote }}
        {{- else if $repo.azure }}
        azure:
          container: {{ $repo.azure.container | quote }}
        {{- end }}
      {{- end }}
      {{- else if .Values.s3 }}
      configuration:
      - secret:
          name: {{ default .Release.Name .Values.name }}-pgbackrest-secret
      global:
        repo1-path: /pgbackrest/{{ .Release.Namespace }}/{{ default .Release.Name .Values.name }}/repo1
        {{- if .Values.s3.encryptionPassphrase }}
        repo1-cipher-type: aes-256-cbc
        {{- end }}
      repos:
      - name: repo1
        s3:
          bucket: {{ .Values.s3.bucket | quote }}
          endpoint: {{ .Values.s3.endpoint | quote }}
          region: {{ .Values.s3.region | quote }}
      {{- else if .Values.gcs }}
      configuration:
      - secret:
          name: {{ default .Release.Name .Values.name }}-pgbackrest-secret
      global:
        repo1-path: /pgbackrest/{{ .Release.Namespace }}/{{ default .Release.Name .Values.name }}/repo1
      repos:
      - name: repo1
        gcs:
          bucket: {{ .Values.gcs.bucket | quote }}
      {{- else if .Values.azure }}
      configuration:
      - secret:
          name: {{ default .Release.Name .Values.name }}-pgbackrest-secret
      global:
        repo1-path: /pgbackrest/{{ .Release.Namespace }}/{{ default .Release.Name .Values.name }}/repo1
      repos:
      - name: repo1
        azure:
          container: {{ .Values.azure.container | quote }}
      {{- else }}
      repos:
      - name: repo1
        volume:
          volumeClaimSpec:
            {{- if .Values.backupsStorageClassName }}
            storageClassName: {{ .Values.backupsStorageClassName | quote }}
            {{- end }}
            accessModes:
            - "ReadWriteOnce"
            resources:
              requests:
                storage: {{ default "1Gi" .Values.backupsSize | quote }}
      {{- end }}
  {{- if or .Values.pgBouncerReplicas .Values.pgBouncerConfig }}
  proxy:
    pgBouncer:
      {{- if .Values.imagePgBouncer }}
      image: {{ .Values.imagePgBouncer | quote }}
      {{- end }}
      {{- if .Values.pgBouncerConfig }}
{{ toYaml .Values.pgBouncerConfig | indent 6 }}
      {{- else }}
      replicas: {{ .Values.pgBouncerReplicas }}
      {{- end }}
  {{- end }}
  {{- if .Values.patroni }}
  patroni:
{{ toYaml .Values.patroni | indent 4 }}
  {{- end }}
  {{- if .Values.users }}
  users:
{{ toYaml .Values.users | indent 4 }}
  {{- end }}
  {{- if .Values.service }}
  service:
{{ toYaml .Values.service | indent 4 }}
  {{- end }}
  {{- if .Values.dataSource }}
  dataSource:
{{ toYaml .Values.dataSource | indent 4 }}
  {{- end }}
  {{- if .Values.databaseInitSQL }}
  databaseInitSQL:
    name: {{ required "A ConfigMap name is required for running bootstrap SQL." .Values.databaseInitSQL.name | quote }}
    key: {{ required "A key in a ConfigMap containing any bootstrap SQL is required." .Values.databaseInitSQL.key | quote }}
  {{- end }}
  {{- if .Values.imagePullPolicy }}
  imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
  {{- end }}
  {{- if .Values.imagePullSecrets }}
  imagePullSecrets:
{{ toYaml .Values.imagePullSecrets | indent 4 }}
  {{- end }}
  {{- if .Values.disableDefaultPodScheduling }}
  disableDefaultPodScheduling: true
  {{- end }}
  {{- if .Values.metadata }}
  metadata:
{{ toYaml .Values.metadata | indent 4 }}
  {{- end }}
  {{- if .Values.monitoring }}
  monitoring:
    pgmonitor:
      exporter:
        image: {{ default "" .Values.imageExporter | quote }}
        {{- if .Values.monitoringConfig }}
{{ toYaml .Values.monitoringConfig | indent 8 }}
        {{- end }}
  {{- end }}
  {{- if .Values.shutdown }}
  shutdown: true
  {{- end }}
  {{- if .Values.standby }}
  standby:
    enabled: {{ .Values.standby.enabled }}
    repoName: {{ .Values.standby.repoName }}
    host: {{ .Values.standby.host }}
    port: {{ .Values.standby.port }}
  {{- end }}
  {{- if .Values.supplementalGroups }}
  supplementalGroups:
{{ toYaml .Values.supplementalGroups | indent 4 }}
  {{- end }}
  {{- if .Values.openshift }}
  openshift: true
  {{- else if eq .Values.openshift false }}
  openshift: false
  {{- end }}
  {{- if .Values.customTLSSecret }}
  customTLSSecret:
{{ toYaml .Values.customTLSSecret | indent 4 }}
  {{- end }}
  {{- if .Values.customReplicationTLSSecret }}
  customReplicationTLSSecret:
{{ toYaml .Values.customReplicationTLSSecret | indent 4 }}
  {{- end }}