cluster/kube: refactor, add crdb-waw1
diff --git a/cluster/kube/cluster.jsonnet b/cluster/kube/cluster.jsonnet
index ee21b04..1b988b9 100644
--- a/cluster/kube/cluster.jsonnet
+++ b/cluster/kube/cluster.jsonnet
@@ -1,13 +1,15 @@
 # Top level cluster configuration.
 
 local kube = import "../../kube/kube.libsonnet";
-local coredns = import "lib/coredns.libsonnet";
-local metrics = import "lib/metrics.libsonnet";
+
 local calico = import "lib/calico.libsonnet";
+local certmanager = import "lib/cert-manager.libsonnet";
+local cockroachdb = import "lib/cockroachdb.libsonnet";
+local coredns = import "lib/coredns.libsonnet";
 local metallb = import "lib/metallb.libsonnet";
+local metrics = import "lib/metrics.libsonnet";
 local nginx = import "lib/nginx.libsonnet";
 local rook = import "lib/rook.libsonnet";
-local certmanager = import "lib/cert-manager.libsonnet";
 
 local Cluster(fqdn) = {
     local cluster = self,
@@ -86,77 +88,94 @@
             },
         },
     },
-    // waw1 ceph cluster
-    cephWaw1: rook.Cluster(cluster.rook, "ceph-waw1") {
-        spec: {
-            mon: {
-                count: 3,
-                allowMultiplePerNode: false,
-            },
-            storage: {
-                useAllNodes: false,
-                useAllDevices: false,
-                config: {
-                    databaseSizeMB: "1024",
-                    journalSizeMB: "1024",
-                },
-                nodes: [
-                    {
-                        name: "bc01n01.hswaw.net",
-                        location: "rack=dcr01 chassis=bc01 host=bc01n01",
-                        devices: [ { name: "sda" } ],
-                    },
-                    {
-                        name: "bc01n02.hswaw.net",
-                        location: "rack=dcr01 chassis=bc01 host=bc01n02",
-                        devices: [ { name: "sda" } ],
-                    },
-                    {
-                        name: "bc01n03.hswaw.net",
-                        location: "rack=dcr01 chassis=bc01 host=bc01n03",
-                        devices: [ { name: "sda" } ],
-                    },
-                ],
-            },
-        },
-    },
-    // redundant block storage
-    cephWaw1Redundant: rook.ECBlockPool(cluster.cephWaw1, "waw-hdd-redundant-1") {
-        spec: {
-            failureDomain: "host",
-            erasureCoded: {
-                dataChunks: 2,
-                codingChunks: 1,
-            },
-        },
-    },
-    // yolo block storage (no replicas!)
-    cephWaw1Yolo: rook.ReplicatedBlockPool(cluster.cephWaw1, "waw-hdd-yolo-1") {
-        spec: {
-            failureDomain: "host",
-            replicated: {
-                size: 1,
-            },
-        },
-    },
-    cephWaw1Object: rook.S3ObjectStore(cluster.cephWaw1, "waw-hdd-redundant-1-object") {
-        spec: {
-            metadataPool: {
-                failureDomain: "host",
-                replicated: { size: 3 },
-            },
-            dataPool: {
-                failureDomain: "host",
-                erasureCoded: {
-                    dataChunks: 2,
-                    codingChunks: 1,
-                },
-            },
-        },
-    },
 };
 
 
 {
-    k0: Cluster("k0.hswaw.net"),
+    k0: {
+        local k0 = self,
+        cluster: Cluster("k0.hswaw.net"),
+        cockroach: {
+            waw1: cockroachdb.Cluster("crdb-waw1") {
+                cfg+: {
+                    topology: [
+                        { name: "bc01n01", node: "bc01n01.hswaw.net", ip: "185.236.240.35" },
+                        { name: "bc01n02", node: "bc01n02.hswaw.net", ip: "185.236.240.36" },
+                        { name: "bc01n03", node: "bc01n03.hswaw.net", ip: "185.236.240.37" },
+                    ],
+                    hostPath: "/var/db/crdb-waw1",
+                },
+            },
+        },
+        ceph: {
+            // waw1 cluster
+            waw1: rook.Cluster(k0.cluster.rook, "ceph-waw1") {
+                spec: {
+                    mon: {
+                        count: 3,
+                        allowMultiplePerNode: false,
+                    },
+                    storage: {
+                        useAllNodes: false,
+                        useAllDevices: false,
+                        config: {
+                            databaseSizeMB: "1024",
+                            journalSizeMB: "1024",
+                        },
+                        nodes: [
+                            {
+                                name: "bc01n01.hswaw.net",
+                                location: "rack=dcr01 chassis=bc01 host=bc01n01",
+                                devices: [ { name: "sda" } ],
+                            },
+                            {
+                                name: "bc01n02.hswaw.net",
+                                location: "rack=dcr01 chassis=bc01 host=bc01n02",
+                                devices: [ { name: "sda" } ],
+                            },
+                            {
+                                name: "bc01n03.hswaw.net",
+                                location: "rack=dcr01 chassis=bc01 host=bc01n03",
+                                devices: [ { name: "sda" } ],
+                            },
+                        ],
+                    },
+                },
+            },
+            // redundant block storage
+            blockRedundant: rook.ECBlockPool(k0.ceph.waw1, "waw-hdd-redundant-1") {
+                spec: {
+                    failureDomain: "host",
+                    erasureCoded: {
+                        dataChunks: 2,
+                        codingChunks: 1,
+                    },
+                },
+            },
+            // yolo block storage (no replicas!)
+            blockYolo: rook.ReplicatedBlockPool(k0.ceph.waw1, "waw-hdd-yolo-1") {
+                spec: {
+                    failureDomain: "host",
+                    replicated: {
+                        size: 1,
+                    },
+                },
+            },
+            objectRedundant: rook.S3ObjectStore(k0.ceph.waw1, "waw-hdd-redundant-1-object") {
+                spec: {
+                    metadataPool: {
+                        failureDomain: "host",
+                        replicated: { size: 3 },
+                    },
+                    dataPool: {
+                        failureDomain: "host",
+                        erasureCoded: {
+                            dataChunks: 2,
+                            codingChunks: 1,
+                        },
+                    },
+                },
+            },
+        },
+    },
 }