matrix: add bootstrapJob config flag to appservices

This allows us to bypass the issue where Kubernetes jobs cannot be
updated once completed, so bumping appservice image versions was
painful.

But really, though, this is probably someting that kubecfg/kartongips
should handle.

Change-Id: I2778c5433f699db89120a3c44e55d2fbe2a10015
diff --git a/app/matrix/lib/appservice-telegram.libsonnet b/app/matrix/lib/appservice-telegram.libsonnet
index 6700fbc..7c1221c 100644
--- a/app/matrix/lib/appservice-telegram.libsonnet
+++ b/app/matrix/lib/appservice-telegram.libsonnet
@@ -6,6 +6,11 @@
         local cfg = bridge.cfg,
         cfg:: {
             metadata: {},
+            // Whether the bootstrap job should be created/updated. Kubernetes
+            // doesn't like changing the configuration of jobs, so once this
+            // appservice has been set up, this flag should be flipped to
+            // false.
+            bootstrapJob: true,
             image: error "image must be set",
             storageClassName: error "storageClassName must be set",
 
@@ -64,7 +69,7 @@
             },
         },
 
-        bootstrapJob: kube.Job("appservice-telegram-%s-bootstrap" % [name]) {
+        bootstrapJob: if cfg.bootstrapJob then (kube.Job("appservice-telegram-%s-bootstrap" % [name]) {
             metadata+: cfg.metadata {
                 labels: {
                     "job-name": "appservice-telegram-%s-bootstrap" % [name],
@@ -91,7 +96,7 @@
                     },
                 },
             },
-        },
+        }) else {},
 
         deployment: kube.Deployment("appservice-telegram-%s" % [name]) {
             metadata+: cfg.metadata,