Merge "Add a script to delete ZK state"
diff --git a/README.md b/README.md
index d827fae..fec861b 100644
--- a/README.md
+++ b/README.md
@@ -130,11 +130,27 @@
 its config files if those changes are due to merge commits (unless the
 .zuul.yaml file is changed as content in the merge commit).
 
+## Deleting ZooKeeper State
+
+Zuul stores its runtime state in ZooKeeper.  In the case of a bug in
+Zuul or some other source of data corruption, it may be necessary to
+delete the state from ZooKeeper and restart the cluster.  To do this,
+stop all of the Pods and then run:
+
+    kubectl -n zuul apply -f k8s/delete-state.yaml
+
+This will run a k8s job to delete the state.  Once that pod has
+exited, run the following command to clean it up:
+
+    kubectl -n zuul delete job zuul-delete-state
+
+Then restart all of the Zuul services.
+
 # Additional Help
 
 Feel free to contact James Blair (corvus) in Gerrit Slack, or the
-wider Zuul community in #zuul on the OFTC IRC network, or the
-zuul-discuss@lists.zuul-ci.org mailing list.
+wider Zuul community at https://matrix.to/#/#zuul:opendev.org in
+Matrix, or the zuul-discuss@lists.zuul-ci.org mailing list.
 
 # Appendix: Manual steps for bootstrapping
 
diff --git a/k8s/delete-state.yaml b/k8s/delete-state.yaml
new file mode 100644
index 0000000..d9eb2fe
--- /dev/null
+++ b/k8s/delete-state.yaml
@@ -0,0 +1,33 @@
+apiVersion: batch/v1
+kind: Job
+metadata:
+  namespace: zuul
+  name: zuul-delete-state
+spec:
+  template:
+    spec:
+      containers:
+      - name: zuul-delete-state
+        image: zuul/zuul-scheduler
+        command: ["bash", "-c", "echo 'yes' | zuul delete-state"]
+        volumeMounts:
+        - name: zuul-config
+          mountPath: /etc/zuul
+        - name: zuul-tenant-config
+          mountPath: /etc/zuul/tenant
+        - name: zookeeper-client-tls
+          mountPath: /tls/client
+          readOnly: true
+      volumes:
+      - name: zuul-config
+        secret:
+          secretName: zuul-config
+      - name: zuul-tenant-config
+        secret:
+          secretName: zuul-tenant-config
+      - name: zookeeper-client-tls
+        secret:
+          secretName: zookeeper-client-tls
+      serviceAccountName: zuul
+      restartPolicy: Never
+  backoffLimit: 4