From a8e2908c48b38abd4bc452446bae39b98f567a32 Mon Sep 17 00:00:00 2001
From: Sheogorath <sheogorath@shivering-isles.com>
Date: Fri, 25 Nov 2022 22:45:35 +0100
Subject: [PATCH] feat(syncthing): Deploy most simple version of syncthing

This patch implements a trivial syncthing setup, which should provide a a good place to sync data to.
---
 apps/k8s01/syncthing/kustomization.yaml |  8 ++++
 apps/k8s01/syncthing/namespace.yaml     | 11 +++++
 apps/k8s01/syncthing/syncthing.yaml     | 55 +++++++++++++++++++++++++
 renovate.json                           |  1 +
 4 files changed, 75 insertions(+)
 create mode 100644 apps/k8s01/syncthing/kustomization.yaml
 create mode 100644 apps/k8s01/syncthing/namespace.yaml
 create mode 100644 apps/k8s01/syncthing/syncthing.yaml

diff --git a/apps/k8s01/syncthing/kustomization.yaml b/apps/k8s01/syncthing/kustomization.yaml
new file mode 100644
index 000000000..f7d38a5b2
--- /dev/null
+++ b/apps/k8s01/syncthing/kustomization.yaml
@@ -0,0 +1,8 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+namespace: syncthing
+resources:
+  - namespace.yaml
+  - syncthing.yaml
+  - ../../../shared/networkpolicies/allow-from-same-namespace.yaml
+  - ../../../shared/resourcequotas/default.yaml
diff --git a/apps/k8s01/syncthing/namespace.yaml b/apps/k8s01/syncthing/namespace.yaml
new file mode 100644
index 000000000..416decd38
--- /dev/null
+++ b/apps/k8s01/syncthing/namespace.yaml
@@ -0,0 +1,11 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: syncthing
+  labels:
+    pod-security.kubernetes.io/audit: restricted
+    pod-security.kubernetes.io/enforce: baseline
+    pod-security.kubernetes.io/warn: restricted
+    pod-security.kubernetes.io/audit-version: v1.23
+    pod-security.kubernetes.io/enforce-version: v1.23
+    pod-security.kubernetes.io/warn-version: v1.23
diff --git a/apps/k8s01/syncthing/syncthing.yaml b/apps/k8s01/syncthing/syncthing.yaml
new file mode 100644
index 000000000..5174c98eb
--- /dev/null
+++ b/apps/k8s01/syncthing/syncthing.yaml
@@ -0,0 +1,55 @@
+---
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: syncthing
+  namespace: syncthing
+  labels:
+    app.kubernetes.io/name: syncthing
+spec:
+  selector:
+    matchLabels:
+      app.kubernetes.io/name: syncthing
+  serviceName: "syncthing"
+  replicas: 1
+  minReadySeconds: 10
+  template:
+    metadata:
+      labels:
+        app.kubernetes.io/name: syncthing
+    spec:
+      terminationGracePeriodSeconds: 10
+      containers:
+      - name: syncthing
+        image: docker.io/syncthing/syncthing:1.22.1
+        ports:
+        - containerPort: 8384
+          name: web
+          protocol: TCP
+        - containerPort: 22000
+          name: transfer-tcp
+          protocol: TCP
+        - containerPort: 22000
+          name: transfer-quick
+          protocol: UDP
+        - containerPort: 21027
+          name: discovery
+          protocol: UDP
+        volumeMounts:
+        - name: storage
+          mountPath: /var/syncthing
+        resources:
+          requests:
+            cpu: 100m
+            memory: 512Mi
+          limits:
+            cpu: 1000m
+            memory: 1Gi
+  volumeClaimTemplates:
+  - metadata:
+      name: storage
+    spec:
+      accessModes: [ "ReadWriteOnce" ]
+      resources:
+        requests:
+          storage: 70Gi
\ No newline at end of file
diff --git a/renovate.json b/renovate.json
index 9f16d99d9..41e2f83a2 100644
--- a/renovate.json
+++ b/renovate.json
@@ -14,6 +14,7 @@
   "kubernetes": {
     "fileMatch": [
       "apps/k8s01/dns/.+\.yaml$",
+      "apps/k8s01/syncthing/.+\.yaml$",
       "apps/base/iot/.+\.yaml$"
     ]
   },
-- 
GitLab