A lot of users run postgres with certain extensions/add-ons that require a certain version of postgres or additional software bundled with the container.
To satisfy these requirements I suggest we make it possible to use own versions of the kubedb postgres image. i.e. kubedb/postgres:10.2-timescaledb0.9.2
The proposal is to add a new crd called <DB>Version . This will be a non-namespaced crd . The official installer will create one for each supported DB version during installation.
Users can create their own variation/version with pre-built extensions and create a <DB>Version crd.
Then in the actual db crd spec.version, users use the name of the <DB>Version .
# created via installer for the cluster
apiVersion: kubedb.com/v1alpha1
kind: PostgresVersion
metadata:
name: 9.6 # non-namespaced
spec:
version: 9.6 # postgres version
db:
image: kubedb/posrtgres: 9.6
exporter:
image: kubedb/posrtgres_exporter: 9.6
tools:
image: kubedb/posrtgres_tools: 9.6
---
# manually created once by user for the cluster
apiVersion: kubedb.com/v1alpha1
kind: PostgresVersion
metadata:
name: tiemscaledb-9.6 # non-namespaced
spec:
version: 9.6 # postgres version
db:
image: myco/timescale: 9.6
exporter:
image: myco/timescale_exporter: 9.6
tools:
image: myco/timescale_tools: 9.6
---
apiVersion: kubedb.com/v1alpha1
kind: Postgres
metadata:
name: quick-postgres
namespace: demo
spec:
version: tiemscaledb-9.6 # 9.6
doNotPause: true
storage:
storageClassName: "standard"
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Mi
$ kubectl get pgversions
NAME DB_IMAGE
9.6 kubedb/postgres:9.6
timescale-9.6 myco/timescale:9.6
@the-redback :
Fixed
Most helpful comment
The proposal is to add a new crd called
<DB>Version. This will be a non-namespaced crd . The official installer will create one for each supported DB version during installation.Users can create their own variation/version with pre-built extensions and create a
<DB>Versioncrd.Then in the actual db crd
spec.version, users use the name of the<DB>Version.