*/kube: Add kube.SimpleIngress

Change-Id: Iddcac629b9938f228dd93b32e58bb14606d5c6e5
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1745
Reviewed-by: q3k <q3k@hackerspace.pl>
diff --git a/kube/hscloud.libsonnet b/kube/hscloud.libsonnet
new file mode 100644
index 0000000..bbfa07a
--- /dev/null
+++ b/kube/hscloud.libsonnet
@@ -0,0 +1,34 @@
+// HSWAW / hscloud / k0-specific extensions to kube.libsonnet
+
+local kube = import "kube.libsonnet";
+
+kube {
+    // Basic Ingress config pointing `hosts` to `target_service`, with HTTPS set up
+    SimpleIngress(name): kube.Ingress(name) {
+        local ingress = self,
+        hosts:: error "hosts must be defined",
+        target_service:: error "target_service must be defined",
+        extra_paths:: [],
+        metadata+: {
+            annotations+: {
+                'kubernetes.io/tls-acme': 'true',
+                'cert-manager.io/cluster-issuer': 'letsencrypt-prod',
+                'nginx.ingress.kubernetes.io/proxy-body-size': '0',
+            },
+        },
+        spec+: {
+            tls: [{ hosts: ingress.hosts, secretName: name + '-tls' }],
+            rules: [
+                {
+                    host: host,
+                    http: {
+                        paths: [
+                            { path: '/', backend: ingress.target_service.name_port },
+                        ] + ingress.extra_paths,
+                    },
+                }
+                for host in ingress.hosts
+            ],
+        },
+    },
+}