From 25cc0fa300a8e0a4e39f19f6ecd22617c36612fa Mon Sep 17 00:00:00 2001
From: Remy Moll <me@moll.re>
Date: Mon, 8 Jul 2024 11:55:27 +0200
Subject: [PATCH] (theoretically) functional deployment

---
 deployment/deployment.yaml    | 37 +++++++++++++++++++++++++++++++++++
 deployment/ingress.yaml       | 15 ++++++++++++++
 deployment/kustomization.yaml | 15 ++++++++++++++
 deployment/namespace.yaml     |  4 ++++
 deployment/pvc.yaml           | 11 +++++++++++
 deployment/service.yaml       | 11 +++++++++++
 6 files changed, 93 insertions(+)
 create mode 100644 deployment/deployment.yaml
 create mode 100644 deployment/ingress.yaml
 create mode 100644 deployment/namespace.yaml
 create mode 100644 deployment/pvc.yaml
 create mode 100644 deployment/service.yaml

diff --git a/deployment/deployment.yaml b/deployment/deployment.yaml
new file mode 100644
index 0000000..616b587
--- /dev/null
+++ b/deployment/deployment.yaml
@@ -0,0 +1,37 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: nav-backend
+spec:
+  replicas: 3
+  selector:
+    matchLabels:
+      app: nav-backend
+  template:
+    metadata:
+      labels:
+        app: nav-backend
+    spec:
+      containers:
+      - name: worker
+        image: backend-image
+        ports:
+        - containerPort: 8000
+        env:
+        - name: NUM_WORKERS
+          value: "3"
+        - name: OSM_CACHE_DIR
+          value: "/osm-cache"
+        volumeMounts:
+        - name: osm-cache
+          mountPath: /osm-cache
+        resources:
+          requests:
+            cpu: 100m
+            memory: 100Mi
+          limits:
+            cpu: 4
+            memory: 8Gi
+      volumes:
+      - name: osm-cache
+        emptyDir: {}
diff --git a/deployment/ingress.yaml b/deployment/ingress.yaml
new file mode 100644
index 0000000..8fa3b41
--- /dev/null
+++ b/deployment/ingress.yaml
@@ -0,0 +1,15 @@
+kind: IngressRoute
+apiVersion: traefik.io/v1alpha1
+metadata:
+  name: nav-ingress
+spec:
+  entryPoints:
+    - websecure
+  routes:
+    - match: Host(`nav.kluster.moll.re`)
+      kind: Rule
+      services:
+        - name: nav-service
+          port: 8000
+  tls:
+    certResolver: default-tls
diff --git a/deployment/kustomization.yaml b/deployment/kustomization.yaml
index e69de29..28040ec 100644
--- a/deployment/kustomization.yaml
+++ b/deployment/kustomization.yaml
@@ -0,0 +1,15 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+
+
+namespace: nav
+resources:
+  - namespace.yaml
+  - deployment.yaml
+  - service.yaml
+  - ingress.yaml
+
+images:
+  - name: backend-image
+    newName: git.kluster.moll.re/remoll/fast_network_navigation/backend
+    newTag: latest
\ No newline at end of file
diff --git a/deployment/namespace.yaml b/deployment/namespace.yaml
new file mode 100644
index 0000000..0a074bd
--- /dev/null
+++ b/deployment/namespace.yaml
@@ -0,0 +1,4 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: placeholder
diff --git a/deployment/pvc.yaml b/deployment/pvc.yaml
new file mode 100644
index 0000000..15897ec
--- /dev/null
+++ b/deployment/pvc.yaml
@@ -0,0 +1,11 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: cache
+spec:
+  storageClassName: "nfs-client"
+  accessModes:
+    - ReadWriteOnce
+  resources:
+    requests:
+      storage: "5Gi"
diff --git a/deployment/service.yaml b/deployment/service.yaml
new file mode 100644
index 0000000..c4e5de3
--- /dev/null
+++ b/deployment/service.yaml
@@ -0,0 +1,11 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: nav-service
+spec:
+  selector:
+    app: nav-backend
+  ports:
+    - protocol: TCP
+      port: 8000
+      targetPort: 8000