cluster/admitomatic: Regexp-based admission rules

Change-Id: Ic2b1d6a952dc194c0ee2fa1673ceb91c43799308
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1723
Reviewed-by: q3k <q3k@hackerspace.pl>
diff --git a/cluster/kube/k0.libsonnet b/cluster/kube/k0.libsonnet
index 81627ac..648ed3f 100644
--- a/cluster/kube/k0.libsonnet
+++ b/cluster/kube/k0.libsonnet
@@ -358,15 +358,23 @@
                         { namespace: "mastodon-hackerspace-qa", dns: "social-qa-2.hackerspace.pl" },
                         { namespace: "mastodon-hackerspace-prod", dns: "social.hackerspace.pl" },
 
+                        // auto-namespaced domains, i.e:
+                        // USER.hscloud.ovh is allowed for personal-USER namespace
+                        // *.USER.hscloud.ovh is allowed for personal-USER namespace
+                        { namespace: "personal-$2", dns: "(.*\\.)?([^.]+)\\.hscloud\\.ovh", regexp: true },
+
+                        // cluster infra
                         { namespace: "ceph-waw3", dns: "ceph-waw3.hswaw.net" },
                         { namespace: "ceph-waw3", dns: "object.ceph-waw3.hswaw.net" },
                         { namespace: "ceph-waw3", dns: "object.ceph-eu.hswaw.net" },
                         { namespace: "monitoring-global-k0", dns: "*.hswaw.net" },
                         { namespace: "registry", dns: "*.hswaw.net" },
 
-                        // q3k's legacy namespace (pre-prodvider)
+                        // personal namespaces
                         { namespace: "q3k", dns: "*.q3k.org" },
                         { namespace: "personal-q3k", dns: "*.q3k.org" },
+                        { namespace: "personal-radex", dns: "hs.radex.io" },
+                        { namespace: "personal-radex", dns: "*.hs.radex.io" },
                     ],
 
                     anything_goes_namespace: [