A docker container running a configurable pgbouncer. Optimized for running Kubernetes on GKE with Cloud SQL Postgres.
Dockerhub: https://hub.docker.com/r/handshake/pgbouncer/
The database username
The database password
The IP or host of the database. If using cloud sql proxy, this will most likely be 127.0.0.1.
The IP or host of the database. If using cloud sql proxy, this will most likely be 5432, or the port you pass into the Cloud SQL command args.
To use with GKE, run this container alongside the cloudsql-docker/gce-proxy. Your configuration might look something like below
---
apiVersion: v1
kind: ConfigMap
metadata:
name: pgbouncer-configs
data:
DB_HOST: "127.0.0.1"
DB_PORT: "5432"
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: pgbouncer
labels:
tier: database
spec:
replicas: 1
minReadySeconds: 20
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
metadata:
labels:
tier: database
spec:
containers:
- image: handshake/pgbouncer:0.1.2
name: pgbouncer
ports:
- containerPort: 6432
protocol: TCP
envFrom:
- configMapRef:
name: pgbouncer-configs
readinessProbe:
tcpSocket:
port: 6432
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 6432
initialDelaySeconds: 15
periodSeconds: 20
resources:
requests:
cpu: 100m
memory: 300m
- image: gcr.io/cloudsql-docker/gce-proxy:1.11 # Gcloud SQL Proxy
name: cloudsql-proxy
command:
- /cloud_sql_proxy
- --dir=/cloudsql
- -instances=$(DATABASE_INSTANCE_NAMES)
- -credential_file=/secrets/cloudsql_credentials.json
ports:
- containerPort: 5432
protocol: TCP
volumeMounts:
- name: cloudsql-credentials
mountPath: /secrets/cloudsql
readOnly: true
- name: cloudsql
mountPath: /cloudsql
volumes:
- name: cloudsql-credentials
secret:
secretName: cloudsql-credentials
- name: cloudsql
emptyDir:
---
apiVersion: v1
kind: Service
metadata:
name: pgbouncer-service
spec:
type: NodePort
ports:
- name: pgbouncer-service-port
protocol: TCP
port: 6432
targetPort: 6432
nodePort: 0
selector:
tier: database
This container takes inspiration from https://github.com/heroku/heroku-buildpack-pgbouncer and https://github.com/guizmaii/pgbouncer. Thanks to both!