app/internet: initialize with landing page

This is already rolled out at https://internet.hackerspace.pl/.

Change-Id: Ibebaeb830a4b58cecfc1ecbf63d07cc63ded7e2b
diff --git a/app/internet/Dockerfile b/app/internet/Dockerfile
new file mode 100644
index 0000000..0fbe1ab
--- /dev/null
+++ b/app/internet/Dockerfile
@@ -0,0 +1,3 @@
+FROM nginx:1.17.1-alpine
+
+COPY static /usr/share/nginx/html
diff --git a/app/internet/kube/prod.jsonnet b/app/internet/kube/prod.jsonnet
new file mode 100644
index 0000000..fa712e0
--- /dev/null
+++ b/app/internet/kube/prod.jsonnet
@@ -0,0 +1,85 @@
+local kube = import '../../../kube/kube.libsonnet';
+
+{
+    local internet = self,
+    local cfg = internet.cfg,
+    cfg:: {
+        namespace: "internet",
+        appName: "internet-landing",
+        domain: "internet.hackerspace.pl",
+
+        tag: "201907091256",
+        image: "registry.k0.hswaw.net/app/internet:" + cfg.tag,
+
+        resources: {
+            requests: {
+                cpu: "25m",
+                memory: "50Mi",
+            },
+            limits: {
+                cpu: "100m",
+                memory: "200Mi",
+            },
+        },
+    },
+
+    namespace: kube.Namespace(cfg.namespace),
+
+    metadata(component):: {
+        namespace: cfg.namespace,
+        labels: {
+            "app.kubernetes.io/name": cfg.appName,
+            "app.kubernetes.io/managed-by": "kubecfg",
+            "app.kubernetes.io/component": component,
+        },
+    },
+
+    deployment: kube.Deployment("nginx") {
+        metadata+: internet.metadata("nginx"),
+        spec+: {
+            replicas: 1,
+            template+: {
+                 spec+: {
+                     containers_: {
+                         nginx: kube.Container("nginx") {
+                             image: cfg.image,
+                             ports_: {
+                                 http: { containerPort: 80 },
+                             },
+                             resources: cfg.resources,
+                         },
+                     },
+                 },
+            },
+        },
+    },
+
+    svc: kube.Service("frontend") {
+        metadata+: internet.metadata("frontend"),
+        target_pod:: internet.deployment.spec.template,
+    },
+
+    ingress: kube.Ingress("frontend") {
+        metadata+: internet.metadata("frontend") {
+            annotations+: {
+                "kubernetes.io/tls-acme": "true",
+                "certmanager.k8s.io/cluster-issuer": "letsencrypt-prod",
+            },
+        },
+        spec+: {
+            tls: [
+                { hosts: [cfg.domain], secretName: "frontend-tls"}
+            ],
+            rules: [
+                {
+                    host: cfg.domain,
+                    http: {
+                        paths: [
+                            { path: "/", backend: internet.svc.name_port },
+                        ],
+                    },
+                },
+            ],
+        },
+    },
+}
diff --git a/app/internet/static/index.html b/app/internet/static/index.html
new file mode 100644
index 0000000..6de086c
--- /dev/null
+++ b/app/internet/static/index.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>Warszawski Hackerspace - Internet</title>
+        <style type="text/css">
+            body {
+                margin: 80px auto;
+                line-height: 1.6;
+                font-size: 18px;
+                max-width: 800px;
+                color: #444;
+                background-color: #eee;
+                padding: 0 10px;
+                font-family: helvetica, arial, sans-serif;
+            }
+            a {
+                color: #449;
+                font-weight: 600;
+                text-decoration: none;
+            }
+            a:hover {
+                text-decoration: underline;
+            }
+            span.snippet {
+                font-family: system, courier new, serif;
+            }
+            div.container {
+                background-color: #f8f8f8;
+                padding: 10px 20px 10px 20px;
+                box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
+                margin-bottom: 40px;
+            }
+            div.container h1, h2, h3 {
+                margin: 0;
+            }
+        </style>
+    </head>
+    <body>
+        <div class="container">
+            <h1>Warszawski Hackerspace</h1>
+            <h2>Dostęp do Internetu</h2>
+            <p>
+                Świadczymy usługi dostępu do Internetu drogą kablową i światłowodową w obrębie budynku na ul. Wolność 2A w Warszawie.
+            </p>
+            <p>
+                <b>Kontakt</b>: kontakt@hackerspace.pl
+            </p>
+            <p>
+                <b>Zgłaszanie awarii</b>: awaria@hackerspace.pl
+            </p>
+            <p>
+                <b>Zgłaszanie nadużycia</b> (abuse): abuse@hackerspace.pl
+            </p>
+        </div>
+        <div class="container">
+            <h2>Zasoby</h2>
+            <p>
+                <a href="/regulamin.pdf">Regulamin świadczenia usług telekomunikacyjnych - Dostęp do Internetu</a> (obowiązuje od 2019/07/01)
+            </p>
+            <p>
+                <a href="https://speedtest.hackerspace.pl">Pomiar prędkości łącza - speedtest</a>
+            </p>
+            <p>
+                <a href="https://bgp.wtf">Informacje techniczne</a> (peering, sieć szkieletowa, ...)
+            </p>
+        </div>
+        <div class="container">
+            <p style="font-size: 0.8em;">
+                Stowarzysznie “Warszawski Hackerspace” (KRS 0000424347) zarejestrowane jest w Rejestrze Przedsiębiorców Telekomunikacyjnych UKE pod numerem 12216.
+            </p>
+        </div>
+    </body>
+</html>
diff --git a/app/internet/static/regulamin.pdf b/app/internet/static/regulamin.pdf
new file mode 100644
index 0000000..e1d0ec8
--- /dev/null
+++ b/app/internet/static/regulamin.pdf
Binary files differ
diff --git a/app/registry/prod.jsonnet b/app/registry/prod.jsonnet
index d2ffbc6..ad10634 100644
--- a/app/registry/prod.jsonnet
+++ b/app/registry/prod.jsonnet
@@ -153,6 +153,7 @@
                         { who: ["q3k"], what: "app/radio" },
                         { who: ["q3k"], what: "app/factorio" },
                         { who: ["q3k"], what: "app/gerrit" },
+                        { who: ["q3k"], what: "app/internet" },
                         { who: ["q3k"], what: "go/svc/egressifier" },
                 ],
                 acl: [