Files
nplus/samples/postgres
2026-03-10 07:33:55 +01:00
..
2026-03-10 07:33:55 +01:00
2026-03-10 07:33:55 +01:00
2026-03-10 07:33:55 +01:00

Switching to the Official Postgres Image

If you want to move from the Bitnami Postgres image to the official Postgres image, set:

components:
  database: false
  postgres: true
global:
  database:
    url: "jdbc:postgresql://{{ .component.prefix }}postgres:5432/{{ .this.database.name }}"

in the values file. This will instantiate the official Postgres image. All values are identical.

You can also run both components side-by-side to perform migrations.

Make sure you set the database URL to the new DB when you are done.

Migration Scenario

  1. Add the postgres component
components:
  database: true
  postgres: true
  1. Copy the database from the database component to the postgres component (single DB)

Because default-deny egress is enabled for the instance, allow temporary egress for the migration client:

kubectl apply -n lab -f - <<'EOF1'
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: sample-postgres-allow-migration-egress
spec:
  podSelector:
    matchLabels:
      nplus/group: sample-postgres
      nplus/type: core
  policyTypes:
  - Egress
  egress:
  - to:
    - podSelector:
        matchLabels:
          nplus/group: sample-postgres
          nplus/type: database
  - to:
    - podSelector:
        matchLabels:
          nplus/group: sample-postgres
          nplus/type: postgres
EOF1
kubectl run -n lab pg-client --rm -i --image=postgres:17 \
  --labels nplus/group=sample-postgres,nplus/type=core -- \
  sh -c 'export PGPASSWORD=nscale; \
         pg_dump -h sample-postgres-database -U nscale -Fc nscale | \
         pg_restore -h sample-postgres-postgres -U nscale -d nscale --clean --if-exists'

Clean up the temporary egress rule:

kubectl delete -n lab networkpolicy sample-postgres-allow-migration-egress
  1. Set nappl to use the new postgres component
global:
  database:
    url: "jdbc:postgresql://{{ .component.prefix }}postgres:5432/{{ .this.database.name }}"
  1. Remove the old database component
components:
  database: false
  postgres: true