From ec430f5a2abd9d3d809dd4be34dbe0a6db4a8f3d Mon Sep 17 00:00:00 2001 From: Jonas Franz Date: Thu, 14 May 2020 18:13:17 +0200 Subject: [PATCH] Add k8s yaml files Signed-off-by: Jonas Franz --- backend/deployment.yaml | 34 ++++++++++++++++++++++++++++++++++ backend/secrets.yaml | 11 +++++++++++ backend/service.yaml | 9 +++++++++ backend/storage.yaml | 12 ++++++++++++ frontend/deployment.yaml | 23 +++++++++++++++++++++++ frontend/service.yaml | 9 +++++++++ ingress.yaml | 24 ++++++++++++++++++++++++ issuer.yaml | 18 ++++++++++++++++++ mysql/deployment.yaml | 32 ++++++++++++++++++++++++++++++++ mysql/secrets.yaml | 10 ++++++++++ mysql/service.yaml | 9 +++++++++ mysql/storage.yaml | 11 +++++++++++ 12 files changed, 202 insertions(+) create mode 100644 backend/deployment.yaml create mode 100644 backend/secrets.yaml create mode 100644 backend/service.yaml create mode 100644 backend/storage.yaml create mode 100644 frontend/deployment.yaml create mode 100644 frontend/service.yaml create mode 100644 ingress.yaml create mode 100644 issuer.yaml create mode 100644 mysql/deployment.yaml create mode 100644 mysql/secrets.yaml create mode 100644 mysql/service.yaml create mode 100644 mysql/storage.yaml diff --git a/backend/deployment.yaml b/backend/deployment.yaml new file mode 100644 index 0000000..7b70b61 --- /dev/null +++ b/backend/deployment.yaml @@ -0,0 +1,34 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: backend +spec: + selector: + matchLabels: + app: backend + replicas: 1 + template: + metadata: + name: backend + labels: + app: backend + spec: + containers: + - name: backend + image: vikunja/api + ports: + - containerPort: 3456 + resources: + limits: + memory: "128Mi" + cpu: "100m" + envFrom: + - secretRef: + name: backend + volumeMounts: + - name: data + mountPath: /app/vikunja/files + volumes: + - name: data + persistentVolumeClaim: + claimName: backend \ No newline at end of file diff --git a/backend/secrets.yaml b/backend/secrets.yaml new file mode 100644 index 0000000..e9112a3 --- /dev/null +++ b/backend/secrets.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + name: backend +stringData: + VIKUNJA_DATABASE_HOST: mysql + VIKUNJA_DATABASE_PASSWORD: supersecret + VIKUNJA_DATABASE_TYPE: mysql + VIKUNJA_DATABASE_USER: vikunja + VIKUNJA_DATABASE_DATABASE: vikunja \ No newline at end of file diff --git a/backend/service.yaml b/backend/service.yaml new file mode 100644 index 0000000..62ce8a2 --- /dev/null +++ b/backend/service.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Service +metadata: + name: backend +spec: + selector: + app: backend + ports: + - port: 3456 diff --git a/backend/storage.yaml b/backend/storage.yaml new file mode 100644 index 0000000..b6b70d7 --- /dev/null +++ b/backend/storage.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: backend +spec: + storageClassName: openebs-standalone + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 500m + \ No newline at end of file diff --git a/frontend/deployment.yaml b/frontend/deployment.yaml new file mode 100644 index 0000000..0e7c137 --- /dev/null +++ b/frontend/deployment.yaml @@ -0,0 +1,23 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: frontend +spec: + replicas: 3 + selector: + matchLabels: + app: frontend + template: + metadata: + labels: + app: frontend + spec: + containers: + - name: frontend + image: vikunja/frontend + resources: + limits: + memory: "128Mi" + cpu: "50m" + ports: + - containerPort: 80 diff --git a/frontend/service.yaml b/frontend/service.yaml new file mode 100644 index 0000000..53872a8 --- /dev/null +++ b/frontend/service.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Service +metadata: + name: frontend +spec: + selector: + app: frontend + ports: + - port: 80 diff --git a/ingress.yaml b/ingress.yaml new file mode 100644 index 0000000..d69f00f --- /dev/null +++ b/ingress.yaml @@ -0,0 +1,24 @@ +apiVersion: networking.k8s.io/v1beta1 # for versions before 1.14 use extensions/v1beta1 +kind: Ingress +metadata: + name: gitea-ingress + annotations: + kubernetes.io/ingress.class: "nginx" + cert-manager.io/issuer: "letsencrypt-prod" +spec: + rules: + - host: vikunja.k8s.jfdev.de + http: + paths: + - path: /api/v1 + backend: + serviceName: backend + servicePort: 3456 + - path: / + backend: + serviceName: frontend + servicePort: 80 + tls: + - hosts: + - vikunja.k8s.jfdev.de + secretName: vikunja-tls \ No newline at end of file diff --git a/issuer.yaml b/issuer.yaml new file mode 100644 index 0000000..b5a0b36 --- /dev/null +++ b/issuer.yaml @@ -0,0 +1,18 @@ +apiVersion: cert-manager.io/v1alpha2 +kind: Issuer +metadata: + name: letsencrypt-prod +spec: + acme: + # The ACME server URL + server: https://acme-v02.api.letsencrypt.org/directory + # Email address used for ACME registration + email: email@example.com + # Name of a secret used to store the ACME account private key + privateKeySecretRef: + name: letsencrypt-prod + # Enable the HTTP-01 challenge provider + solvers: + - http01: + ingress: + class: nginx \ No newline at end of file diff --git a/mysql/deployment.yaml b/mysql/deployment.yaml new file mode 100644 index 0000000..9161a6c --- /dev/null +++ b/mysql/deployment.yaml @@ -0,0 +1,32 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mysql +spec: + selector: + matchLabels: + app: mysql + template: + metadata: + labels: + app: mysql + spec: + containers: + - name: mysql + image: mariadb:10 + resources: + limits: + memory: "128Mi" + cpu: "500m" + envFrom: + - secretRef: + name: mysql + ports: + - containerPort: 3306 + volumeMounts: + - name: data + mountPath: /var/lib/mysql + volumes: + - name: data + persistentVolumeClaim: + claimName: mysql diff --git a/mysql/secrets.yaml b/mysql/secrets.yaml new file mode 100644 index 0000000..e026e4d --- /dev/null +++ b/mysql/secrets.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + name: mysql +stringData: + MYSQL_ROOT_PASSWORD: supersupersecret + MYSQL_USER: vikunja + MYSQL_PASSWORD: supersecret + MYSQL_DATABASE: vikunja diff --git a/mysql/service.yaml b/mysql/service.yaml new file mode 100644 index 0000000..e8f9c9f --- /dev/null +++ b/mysql/service.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Service +metadata: + name: mysql +spec: + selector: + app: mysql + ports: + - port: 3306 diff --git a/mysql/storage.yaml b/mysql/storage.yaml new file mode 100644 index 0000000..4b4901f --- /dev/null +++ b/mysql/storage.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: mysql +spec: + storageClassName: openebs-standalone + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 500m \ No newline at end of file