dendrite: New deployment.

Change-Id: I4ba0fdbf91809336eb8c853180baadb66a3488c7
diff --git a/dendrite/.gitignore b/dendrite/.gitignore
new file mode 100644
index 0000000..65bf45b
--- /dev/null
+++ b/dendrite/.gitignore
@@ -0,0 +1 @@
+/dendrite-config.yaml
diff --git a/dendrite/dendrite.yaml b/dendrite/dendrite.yaml
new file mode 100644
index 0000000..3708484
--- /dev/null
+++ b/dendrite/dendrite.yaml
@@ -0,0 +1,160 @@
+---
+apiVersion: v1
+kind: Service
+
+metadata:
+  name: dendrite
+  namespace: mulk
+
+  labels:
+    name: dendrite
+    k8s-app: dendrite
+
+spec:
+  selector:
+    name: dendrite
+  type: ClusterIP
+
+  ports:
+    - name: http
+      port: 80
+      targetPort: http
+      protocol: TCP
+
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+
+metadata:
+  name: dendrite
+  namespace: mulk
+
+  labels:
+    name: dendrite
+    k8s-app: dendrite
+
+  annotations:
+    ingress.kubernetes.io/ssl-proxy-headers: X-Forwarded-Proto:https
+    ingress.kubernetes.io/custom-request-headers: X-Forwarded-Proto:https||X-Forwarded-Port:443
+    kubernetes.io/ingress.class: nginx
+    cert-manager.io/cluster-issuer: letsencrypt-prod
+
+spec:
+  rules:
+    - host: matrix.benkard.de
+      http:
+        paths:
+          - path: /_matrix
+            pathType: ImplementationSpecific
+            backend:
+              service:
+                name: dendrite
+                port:
+                  name: http
+
+  tls:
+    - hosts:
+        - matrix.benkard.de
+      secretName: matrix-tls
+
+---
+apiVersion: apps/v1
+kind: Deployment
+
+metadata:
+  name: dendrite
+  namespace: mulk
+  labels:
+    name: dendrite
+    k8s-app: dendrite
+
+spec:
+  replicas: 1
+  strategy:
+    type: Recreate
+
+  selector:
+    matchLabels:
+      k8s-app: dendrite
+      name: dendrite
+
+  template:
+    metadata:
+      labels:
+        name: dendrite
+        k8s-app: dendrite
+
+    spec:
+      imagePullSecrets:
+        - name: portus-token
+
+      volumes:
+        - name: config
+          secret:
+            secretName: dendrite-config
+            defaultMode: 0600
+            items:
+              - key: dendrite.yaml
+                path: dendrite.yaml
+        - name: data
+          persistentVolumeClaim:
+            claimName: dendrite-data
+        - name: secrets
+          secret:
+            secretName: dendrite
+            defaultMode: 0600
+            items:
+              - key: matrix-key.pem
+                path: matrix-key.pem
+
+      containers:
+        - name: master
+          image: docker.io/matrixdotorg/dendrite-monolith:v0.13.6
+          imagePullPolicy: IfNotPresent
+
+          resources:
+            limits:
+              cpu: 2000m
+              memory: 500Mi
+            requests:
+              cpu: 10m
+              memory: 10Mi
+
+          volumeMounts:
+            - name: config
+              mountPath: /etc/dendrite
+            - name: data
+              mountPath: /data
+            - name: secrets
+              mountPath: /secrets
+
+          ports:
+            - containerPort: 8008
+              name: http
+              protocol: TCP
+
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+
+metadata:
+  name: dendrite-data
+  namespace: mulk
+
+  labels:
+    name: dendrite-data
+    k8s-app: dendrite
+
+  annotations:
+    volume.beta.kubernetes.io/storage-provisioner: rancher.io/local-path
+
+spec:
+  accessModes:
+    - ReadWriteOnce
+
+  resources:
+    requests:
+      storage: 50Gi
+
+  storageClassName: local-path
+---