New to KubeDB? Please start here.

Setting up Custom PgBouncerVersions

PgBouncerVersions are KubeDB crds that define the docker images KubeDB will use when deploying a pgbouncer server. For more details about PgBouncerVersion crd, please visit here.

Creating a Custom PgBouncer Image for KubeDB

If you want to create a custom image of pgbouncer with additional features, the best way is to build on top of the existing kubedb image.

FROM kubedb/pgbouncer:1.17.0

ENV SOME_VERSION_VAR 0.9.1

RUN set -ex \
    && apk add --no-cache --virtual .fetch-deps \
    ca-certificates \
    curl \
    bash

From there, we would define a PgBouncerVersion that contains this new image. Let’s say we tagged it as myco/pgbouncer:custom-1.17.0. You can also build exporter image yourself using pgbouncer_exporter repository.

apiVersion: catalog.kubedb.com/v1alpha1
kind: PgBouncerVersion
metadata:
  name: "1.17.0"
spec:
  deprecated: false
  version: "1.17.0"
  pgBouncer:
    image: "myco/pgbouncer:custom-1.17.0"
  exporter:
    image: "myco/pgbouncer_exporter:v0.1.1"

Once we add this PgBouncerVersion we can use it in a new PgBouncer like:

apiVersion: kubedb.com/v1
kind: PgBouncer
metadata:
  name: pgbouncer-server
  namespace: demo
spec:
  version: "1.17.0"
  replicas: 1
  connectionPool:
    poolMode: session
    port: 5432
    reservePoolSize: 5
  database:
    syncUsers: true
    databaseName: "postgres"
    databaseRef:
      name: "quick-postgres"
      namespace: demo