-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
proposal: Postgres Operator Upgrade #23
base: main
Are you sure you want to change the base?
Conversation
## Summary | ||
|
||
This enhancement proposes upgrading the version of Postgres on the Red Hat Kubernetes Operator | ||
from version 10 to version 14. Due to the EOL of Postgres 10, the upgrade is critical. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm curious, why not go directly to Postgres 15?
|
||
The largest risk involved is that of data loss. In order to mitigate this, the backup job must be | ||
completed in order for the upgrade process to happen. After the upgrade, the Operator will point | ||
to the NEW PVC, meaning the clients original data is never touched. This old PVC can be left on |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What storage requirements should we list for v3.9.0?
off. | ||
2. The reconciler checks the postgres image tag, and determines the current postgres version being | ||
used. | ||
3. If the postgres version is inspected from the tag and if an upgrade is determined necessary, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How will it determine when an upgrade is necessary and ready?
3. If the postgres version is inspected from the tag and if an upgrade is determined necessary, | ||
the following events will be triggered. | ||
|
||
4. A Kubernetes Job object definition is created include the commands to run a postgres backup before the postgres upgrade. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How long can we expect the backup to take and will it require downtime?
5. An additional PVC in which the data will be backed up. | ||
6. Retrigger reconcile loop | ||
7. A Kubernetes Job object definition is created include the commands to run a postgres upgrade. | ||
8. Retrigger reconcile loop |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will there need to be a restart of the Quay pod after the upgrade completes?
### Upgrade / Downgrade Strategy | ||
|
||
This is an open question to be discuessed. | ||
Should downgrades be supported? (this is separate from a revert due to failure) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think I've ever heard of DB downgrades in production. @kwestpharedhat can chime in, but I'd be wary of reverting a DB upgrade.
Should we give users the option of deleting the backup? How long should it persist? |
Will this process be identical for the Clair DB? |
|
||
### Non-Goals | ||
|
||
Database Backup and Restore (as a feature) / This should be a separate enhancement |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Backup is a goal and a non-goal at the same time.
Do you want to create backups and provide instructions to how use them manually?
the following events will be triggered. | ||
|
||
4. A Kubernetes Job object definition is created include the commands to run a postgres backup before the postgres upgrade. | ||
5. An additional PVC in which the data will be backed up. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the operator is killed right after this step, will it create a new PVC once it is back again?
4. A Kubernetes Job object definition is created include the commands to run a postgres backup before the postgres upgrade. | ||
5. An additional PVC in which the data will be backed up. | ||
6. Retrigger reconcile loop | ||
7. A Kubernetes Job object definition is created include the commands to run a postgres upgrade. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As operators shouldn't be imperative, but declarative, how would you describe (check for) this state, i.e. that the previous steps are done?
This enhancement proposes a method of upgrading the version of Postgres on the Red Hat Kubernetes Operator from version 10 to version 14.