Public Information
This commit is contained in:
90
samples/postgres/README.md
Normal file
90
samples/postgres/README.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user