kube: standardize on a `local ns` convention

A convention is introduced to specify the kube.Namespace object in a deployment as a `local ns` instead of an `ns:` or a `namespace:` for these reasons:

- non-cluster admins cannot create new namespaces, and we've been moving in the direction of specifying objects that require cluster admin permissions to apply (policies, role bindings) in //cluster/kube/k0 instead of in the app jsonnet
- namespace admins CAN delete the namespace, making `kubecfg delete` unexpectedly dangerous (especially if a namespace contains more than just the contents of the file being applied - common with personal namespaces)
- `.Contain()` is a common operation, and it shows up in lines that are pretty long, so `ns.Contain()` is preferable to `app.ns.Contain()` or `service.namespace.Contain()`

Change-Id: Ie4ea825376dbf6faa175179054f3ee3de2253ae0
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1804
Reviewed-by: q3k <q3k@hackerspace.pl>
diff --git a/hswaw/capacifier/prod.jsonnet b/hswaw/capacifier/prod.jsonnet
index 16dc0fd..7f1edc2 100644
--- a/hswaw/capacifier/prod.jsonnet
+++ b/hswaw/capacifier/prod.jsonnet
@@ -11,9 +11,9 @@
         image: 'registry.k0.hswaw.net/q3k/capacifier@sha256:fd94b29bf711267235c96e5102ac4024e83e5851869a5e8814b83e76490c00af',
     },
 
-    ns: kube.Namespace(cfg.namespace),
+    local ns = kube.Namespace(cfg.namespace),
 
-    deployment: top.ns.Contain(kube.Deployment(cfg.name)) {
+    deployment: ns.Contain(kube.Deployment(cfg.name)) {
         spec+: {
             replicas: 3,
             template+: {
@@ -46,11 +46,11 @@
         },
     },
 
-    service: top.ns.Contain(kube.Service(cfg.name)) {
+    service: ns.Contain(kube.Service(cfg.name)) {
         target:: top.deployment,
     },
 
-    ingress: top.ns.Contain(kube.SimpleIngress(cfg.name)) {
+    ingress: ns.Contain(kube.SimpleIngress(cfg.name)) {
         hosts:: [cfg.domain],
         target_service:: top.service,
     },
diff --git a/hswaw/cebulacamp/landing/kube/prod.jsonnet b/hswaw/cebulacamp/landing/kube/prod.jsonnet
index 7f3ec5b..5849fc1 100644
--- a/hswaw/cebulacamp/landing/kube/prod.jsonnet
+++ b/hswaw/cebulacamp/landing/kube/prod.jsonnet
@@ -11,9 +11,9 @@
         image: 'registry.k0.hswaw.net/q3k/cebulacamp-landing:315532800-bbf56cf7e14df954dcddedfe44c967246f11b72c',
     },
 
-    ns: kube.Namespace(cfg.namespace),
+    local ns = kube.Namespace(cfg.namespace),
 
-    deployment: top.ns.Contain(kube.Deployment(cfg.name)) {
+    deployment: ns.Contain(kube.Deployment(cfg.name)) {
         spec+: {
             replicas: 1,
             template+: {
@@ -39,11 +39,11 @@
         },
     },
 
-    service: top.ns.Contain(kube.Service(cfg.name)) {
+    service: ns.Contain(kube.Service(cfg.name)) {
         target:: top.deployment,
     },
 
-    ingress: top.ns.Contain(kube.SimpleIngress(cfg.name)) {
+    ingress: ns.Contain(kube.SimpleIngress(cfg.name)) {
         hosts:: [cfg.domain],
         target_service:: top.service,
     },
diff --git a/hswaw/ldapweb/prod.jsonnet b/hswaw/ldapweb/prod.jsonnet
index 805f019..fbe537e 100644
--- a/hswaw/ldapweb/prod.jsonnet
+++ b/hswaw/ldapweb/prod.jsonnet
@@ -16,9 +16,9 @@
         smtp_password: { secretKeyRef: { name: cfg.name, key: 'smtp_password' } },
     },
 
-    ns: kube.Namespace(cfg.namespace),
+    local ns = kube.Namespace(cfg.namespace),
 
-    deployment: top.ns.Contain(kube.Deployment(cfg.name)) {
+    deployment: ns.Contain(kube.Deployment(cfg.name)) {
         spec+: {
             replicas: 1,
             template+: {
@@ -51,11 +51,11 @@
         },
     },
 
-    service: top.ns.Contain(kube.Service(cfg.name)) {
+    service: ns.Contain(kube.Service(cfg.name)) {
         target:: top.deployment,
     },
 
-    ingress: top.ns.Contain(kube.SimpleIngress(cfg.name)) {
+    ingress: ns.Contain(kube.SimpleIngress(cfg.name)) {
         hosts:: [cfg.domain],
         target_service:: top.service,
     },
diff --git a/hswaw/oodviewer/prod.jsonnet b/hswaw/oodviewer/prod.jsonnet
index fdd1515..69040d9 100644
--- a/hswaw/oodviewer/prod.jsonnet
+++ b/hswaw/oodviewer/prod.jsonnet
@@ -7,7 +7,7 @@
 {
     local top = self,
     local cfg = self.cfg,
-    ns: kube.Namespace("oodviewer-prod"),
+    local ns = kube.Namespace("oodviewer-prod"),
 
     cfg:: {
         dbUser: "ood",
@@ -20,13 +20,13 @@
         domain: "oodviewer.q3k.me",
     },
 
-    secret: top.ns.Contain(kube.Secret("oodviewer")) {
+    secret: ns.Contain(kube.Secret("oodviewer")) {
         data_: {
             "postgres": cfg.postgresConnectionString,
         },
     },
 
-    deploy: top.ns.Contain(kube.Deployment("oodviewer")) {
+    deploy: ns.Contain(kube.Deployment("oodviewer")) {
         spec+: {
             replicas: 3,
             template+: {
@@ -56,11 +56,11 @@
         },
     },
 
-    service: top.ns.Contain(kube.Service("oodviewer")) {
+    service: ns.Contain(kube.Service("oodviewer")) {
         target:: top.deploy,
     },
 
-    ingress: top.ns.Contain(kube.SimpleIngress("oodviewer")) {
+    ingress: ns.Contain(kube.SimpleIngress("oodviewer")) {
         hosts:: [cfg.domain],
         target_service:: top.service,
     },
diff --git a/hswaw/paperless/paperless.libsonnet b/hswaw/paperless/paperless.libsonnet
index 93c5413..7e63c79 100644
--- a/hswaw/paperless/paperless.libsonnet
+++ b/hswaw/paperless/paperless.libsonnet
@@ -26,7 +26,7 @@
         storageClassName: "waw-hdd-redundant-3",
     },
 
-    ns: kube.Namespace(cfg.namespace),
+    local ns = kube.Namespace(cfg.namespace),
 
     redis: redis {
         cfg+: {
@@ -58,12 +58,12 @@
         bouncer: {},
     },
 
-    dataVolume: app.ns.Contain(kube.PersistentVolumeClaim("paperless-data")) {
+    dataVolume: ns.Contain(kube.PersistentVolumeClaim("paperless-data")) {
         storage:: "100Gi",
         storageClass:: cfg.storageClassName,
     },
 
-    deploy: app.ns.Contain(kube.Deployment("paperless")) {
+    deploy: ns.Contain(kube.Deployment("paperless")) {
         spec+: {
             replicas: 1,
             template+: {
@@ -161,11 +161,11 @@
         },
     },
 
-    service: app.ns.Contain(kube.Service("paperless")) {
+    service: ns.Contain(kube.Service("paperless")) {
         target:: app.deploy,
     },
 
-    ingress: app.ns.Contain(kube.SimpleIngress("paperless")) {
+    ingress: ns.Contain(kube.SimpleIngress("paperless")) {
         hosts:: [cfg.domain],
         target_service:: app.service,
     },
diff --git a/hswaw/site/prod.jsonnet b/hswaw/site/prod.jsonnet
index 1dc2173..a84950e 100644
--- a/hswaw/site/prod.jsonnet
+++ b/hswaw/site/prod.jsonnet
@@ -13,9 +13,9 @@
         image: 'registry.k0.hswaw.net/q3k/hswaw-site@sha256:02414c9e7e0751abe7a8ad3ef1b1ccc35f1f89edf67a6f0b396b7a1d0c178f2b',
     },
 
-    ns: kube.Namespace(cfg.namespace),
+    local ns = kube.Namespace(cfg.namespace),
 
-    deployment: top.ns.Contain(kube.Deployment(cfg.name)) {
+    deployment: ns.Contain(kube.Deployment(cfg.name)) {
         spec+: {
             replicas: 3,
             template+: {
@@ -41,11 +41,11 @@
         },
     },
 
-    service: top.ns.Contain(kube.Service(cfg.name)) {
+    service: ns.Contain(kube.Service(cfg.name)) {
         target:: top.deployment,
     },
 
-    ingress: top.ns.Contain(kube.SimpleIngress(cfg.name)) {
+    ingress: ns.Contain(kube.SimpleIngress(cfg.name)) {
         hosts:: cfg.domains,
         target_service:: top.service,
     },