# 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 ``` 2. 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 ``` 3. Set nappl to use the new postgres component ``` global: database: url: "jdbc:postgresql://{{ .component.prefix }}postgres:5432/{{ .this.database.name }}" ``` 4. Remove the old database component ``` components: database: false postgres: true ```