cluster/kube: add waw-hdd-redundant-1 pool/storageclass
diff --git a/cluster/kube/cluster.jsonnet b/cluster/kube/cluster.jsonnet
index e308fdd..48a8979 100644
--- a/cluster/kube/cluster.jsonnet
+++ b/cluster/kube/cluster.jsonnet
@@ -98,6 +98,16 @@
             },
         },
     },
+    // redundant block storage
+    cephWaw1Redundant: rook.ECBlockPool(cluster.cephWaw1, "waw-hdd-redundant-1") {
+        spec: {
+            failureDomain: "host",
+            erasureCoded: {
+                dataChunks: 2,
+                codingChunks: 1,
+            },
+        },
+    },
 };
 
 
diff --git a/cluster/kube/lib/rook.libsonnet b/cluster/kube/lib/rook.libsonnet
index 71b6a55..9c7b1e9 100644
--- a/cluster/kube/lib/rook.libsonnet
+++ b/cluster/kube/lib/rook.libsonnet
@@ -452,6 +452,36 @@
                     }
                 ],
             },
+        }
+    },
+
+    ECBlockPool(cluster, name):: {
+        local pool = self,
+        spec:: error "spec must be specified",
+
+        pool: kube._Object("ceph.rook.io/v1", "CephBlockPool", name) {
+            metadata+: cluster.metadata,
+            spec: pool.spec,
+        },
+        metapool: kube._Object("ceph.rook.io/v1", "CephBlockPool", name + "-metadata") {
+            metadata+: cluster.metadata,
+            spec: {
+                failureDomain: "host",
+                replicated: {
+                    size: 3,
+                },
+            },
+        },
+
+        storageClass: kube.StorageClass(name) {
+            provisioner: "ceph.rook.io/block",
+            parameters: {
+                blockPool: pool.metapool.metadata.name,
+                dataBlockPool: pool.pool.metadata.name,
+                clusterNamespace: pool.pool.metadata.namespace,
+                fstype: "ext4",
+            },
+            reclaimPolicy: "Retain",
         },
     },
 }