Bump minimum K8s version supported to 1.16. Add support for 1.18 and 1.19
While we strive for maximum compatibility with the Kubernetes versions that we support, we also need to be able to leverage new features present in newer versions, and there must be a clearly minimum supported versions. Also, we need to be aware of the release and support versions of Kubernetes, and what major players in the market are doing.
Note that K8s releases happen, approximately, every three months. And that up to 1.18 they were supported for 9 months, and one year starting with 1.19. This means that currently only three versions are supported (currently 1.17 to 1.19).
This issue proposes to open a Discussion on what is the minimum K8s version that we support. As of today, it is 1.11. This issue proposes to bump the minimum version supported to 1.16 (which is even EOL as of today from K8s perspective). Main reasons:
- CRDs are moved to GA in this release. We rely in CRDs extensively, by design, and as such we should rely on GA versions of them. Also, significant changes were introduced in this release for CRDs.
- Also webhooks are GA in 1.16.
- Notable enhancements to volume extension, even if in beta, but important for us as a database operator.
- It introduces, even in alpha, ephemeral containers. This would allow us to change the
postgres-util
into an ephemeral container, which is what it should be. - Similarly in alpha, but Pod Topology Spread Constraints are introduced. I believe they are a very important part to ensure realistic production scenarios of any complexity.
- Possibly other improvements present in earlier versions of K8s which we might now specifically leverage.
- Last but not least, the ongoing work to support CRD upgrades has to support different cases for versions earlier than 1.16. By raising the bar to 1.16 we would clean up code and implement a single version of the CRD upgrade process.
A quick check on major K8s platforms shows that 1.16 (or higher) is always an option:
Environment | Versions supported | Notes |
---|---|---|
EKS | 1.14-1.17 | |
GKE | 1.15-1.18 | (1.15 by default) |
AKS | 1.16-1.18 | By Nov 2020 it will be 1.17-1.19 |
OpenShift | 4.3: 1.16, 4.4: 1.17 | 4.2 is 1.14, but is EOL as of today |
While significant effort was recently done to support 1.11 and OpenShift 3.11, most of that effort improved in general the state of SG, and is thus well amortized.
This may apply only for SG 1.0
and later versions.
Support for 1.18 is considered in #439 (closed). Changed the issue to also add support for 1.19. Adding this issue as a blocker for this one.