Merge "kube/postgres: run bouncer"
diff --git a/kube/postgres.libsonnet b/kube/postgres.libsonnet
index 571fe7b..8208662 100644
--- a/kube/postgres.libsonnet
+++ b/kube/postgres.libsonnet
@@ -84,4 +84,47 @@
             type: "ClusterIP",
         },
     },
+
+    bouncer: {
+        deployment: kube.Deployment(postgres.makeName("bouncer")) {
+            metadata+: postgres.metadata {
+                labels+: {
+                    "app.kubernetes.io/component": "bouncer",
+                }
+            },
+            spec+: {
+                replicas: 1,
+                template+: {
+                    spec+: {
+                        containers_: {
+                            bouncer: kube.Container(postgres.makeName("bouncer")) {
+                                image: "edoburu/pgbouncer:1.11.0",
+                                ports_: {
+                                    client: { containerPort: 5432 },
+                                },
+                                env: [
+                                    { name: "POSTGRES_PASSWORD", valueFrom: cfg.password },
+                                    { name: "DATABASE_URL", value: "postgres://%s:$(POSTGRES_PASSWORD)@%s/%s" % [cfg.username, postgres.svc.host, cfg.database] },
+                                ],
+                            },
+                        },
+                    },
+                },
+            },
+        },
+        svc: kube.Service(postgres.makeName("bouncer")) {
+            metadata+: postgres.metadata {
+                labels+: {
+                    "app.kubernetes.io/component": "bouncer",
+                }
+            },
+            target_pod:: postgres.bouncer.deployment.spec.template,
+            spec+: {
+                ports: [
+                    { name: "client", port: 5432, targetPort: 5432, protocol: "TCP" },
+                ],
+                type: "ClusterIP",
+            },
+        },
+    },
 }