From d877745fcbbfe204ff5b0793aea50bfd45d38b2d Mon Sep 17 00:00:00 2001
From: Martin Schmollinger <martin.schmollinger@reutlingen-university.de>
Date: Sat, 27 Apr 2024 17:46:03 +0200
Subject: [PATCH] Added K8S resource yaml files for myaktion-go

---
 k8s/deployment/mariadb-deployment.yaml      | 33 ++++++++++++++
 k8s/deployment/myaktion-deployment.yaml     | 26 +++++++++++
 k8s/ingressroute/myaktion-ingressroute.yaml | 48 +++++++++++++++++++++
 k8s/namespace/myaktion-namespace.yaml       |  4 ++
 k8s/persistedvolume/myaktion-pv.yaml        | 31 +++++++++++++
 k8s/service/mariadb-service.yaml            | 12 ++++++
 k8s/service/myaktion-service.yaml           | 13 ++++++
 7 files changed, 167 insertions(+)
 create mode 100644 k8s/deployment/mariadb-deployment.yaml
 create mode 100644 k8s/deployment/myaktion-deployment.yaml
 create mode 100644 k8s/ingressroute/myaktion-ingressroute.yaml
 create mode 100644 k8s/namespace/myaktion-namespace.yaml
 create mode 100644 k8s/persistedvolume/myaktion-pv.yaml
 create mode 100644 k8s/service/mariadb-service.yaml
 create mode 100644 k8s/service/myaktion-service.yaml

diff --git a/k8s/deployment/mariadb-deployment.yaml b/k8s/deployment/mariadb-deployment.yaml
new file mode 100644
index 0000000..8d711f3
--- /dev/null
+++ b/k8s/deployment/mariadb-deployment.yaml
@@ -0,0 +1,33 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: mariadb
+  namespace: myaktion
+spec:
+  selector:
+    matchLabels:
+      run: mariadb
+  replicas: 1
+  template:
+    metadata:
+      annotations:
+        linkerd.io/inject: enabled
+      labels:
+        run: mariadb
+    spec:
+      containers:
+        - name: mariadb
+          image: mariadb:10.5
+          imagePullPolicy: IfNotPresent
+          env:
+            - name: MYSQL_ROOT_PASSWORD
+              value: root
+            - name: MYSQL_DATABASE
+              value: myaktion
+          volumeMounts:
+            - mountPath: /var/lib/mysql
+              name: myaktion-pv
+      volumes:
+        - name: myaktion-pv
+          persistentVolumeClaim:
+            claimName: myaktion-pv-claim
diff --git a/k8s/deployment/myaktion-deployment.yaml b/k8s/deployment/myaktion-deployment.yaml
new file mode 100644
index 0000000..400755b
--- /dev/null
+++ b/k8s/deployment/myaktion-deployment.yaml
@@ -0,0 +1,26 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: myaktion
+  namespace: myaktion
+spec:
+  selector:
+    matchLabels:
+      run: myaktion
+  replicas: 1
+  template:
+    metadata:
+      annotations:
+        linkerd.io/inject: enabled
+      labels:
+        run: myaktion
+    spec:
+      containers:
+        - name: myaktion
+          image: schmolli/myaktion-go:1.0.1
+          imagePullPolicy: Always
+          env:
+            - name: DB_CONNECT
+              value: mariadb:3306
+            - name: LOG_LEVEL
+              value: info
diff --git a/k8s/ingressroute/myaktion-ingressroute.yaml b/k8s/ingressroute/myaktion-ingressroute.yaml
new file mode 100644
index 0000000..02b4c19
--- /dev/null
+++ b/k8s/ingressroute/myaktion-ingressroute.yaml
@@ -0,0 +1,48 @@
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+  annotations:
+    kubernetes.io/ingress.class: traefik
+  creationTimestamp: null
+  name: myaktion-ingressroute
+  namespace: myaktion
+spec:
+  routes:
+
+  - kind: Rule
+    match: Path(`/health`) && Method(`GET`)
+    services:
+    - kind: Service
+      name: myaktion
+      namespace: myaktion
+      port: 8000
+
+  - kind: Rule
+    match: Path(`/campaigns`) && Method(`POST`)
+    middlewares:
+    - name: fw-auth-mw
+      namespace: default
+    services:
+    - kind: Service
+      name: myaktion
+      namespace: myaktion
+      port: 8000
+
+  - kind: Rule
+    match: Path(`/campaigns`) || Path(`/campaigns/{id:[0-9]+}`) && Method(`GET`)
+    middlewares:
+    - name: fw-auth-mw
+      namespace: default
+    services:
+    - kind: Service
+      name: myaktion
+      namespace: myaktion
+      port: 8000
+
+  - kind: Rule
+    match: Path(`/campaigns/{id:[0-9]+}/donation`) && Method(`POST`)
+    services:
+    - kind: Service
+      name: myaktion
+      namespace: myaktion
+      port: 8000
diff --git a/k8s/namespace/myaktion-namespace.yaml b/k8s/namespace/myaktion-namespace.yaml
new file mode 100644
index 0000000..3299430
--- /dev/null
+++ b/k8s/namespace/myaktion-namespace.yaml
@@ -0,0 +1,4 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: myaktion
diff --git a/k8s/persistedvolume/myaktion-pv.yaml b/k8s/persistedvolume/myaktion-pv.yaml
new file mode 100644
index 0000000..cc1a151
--- /dev/null
+++ b/k8s/persistedvolume/myaktion-pv.yaml
@@ -0,0 +1,31 @@
+kind: PersistentVolume
+apiVersion: v1
+metadata:
+  name: myaktion-pv
+  namespace: myaktion
+  labels:
+    type: local
+spec:
+  storageClassName: standard
+  capacity:
+    storage: 100M
+  accessModes:
+    - ReadWriteOnce
+  hostPath:
+    path: "/User/schmolli/data/myaktion"
+---
+
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  labels:
+    app: myaktion
+  name: myaktion-pv-claim
+  namespace: myaktion
+spec:
+  storageClassName: standard
+  accessModes:
+  - ReadWriteOnce
+  resources:
+    requests:
+      storage: 100M
diff --git a/k8s/service/mariadb-service.yaml b/k8s/service/mariadb-service.yaml
new file mode 100644
index 0000000..dcaa7c0
--- /dev/null
+++ b/k8s/service/mariadb-service.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: mariadb
+  namespace: myaktion
+spec:
+  type: ClusterIP
+  ports:
+    - port: 3306
+      targetPort: 3306
+  selector:
+    run: mariadb
diff --git a/k8s/service/myaktion-service.yaml b/k8s/service/myaktion-service.yaml
new file mode 100644
index 0000000..1c169ec
--- /dev/null
+++ b/k8s/service/myaktion-service.yaml
@@ -0,0 +1,13 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: myaktion
+  namespace: myaktion
+spec:
+  type: ClusterIP
+  ports:
+    - port: 8000
+      targetPort: 8000
+      name: "http"
+  selector:
+    run: myaktion
-- 
GitLab