blob: 1519b8631785fa68f884a2582109bf9b662ef73f [file] [log] [blame]
giolekva56c15692021-10-20 11:44:54 +04001# TODO(giolekva): cleanup volumes
2---
3apiVersion: v1
4kind: Namespace
5metadata:
6 name: app-matrix
7---
8apiVersion: rbac.authorization.k8s.io/v1
9kind: Role
10metadata:
11 creationTimestamp: null
12 name: CreateConfigMaps
13 namespace: app-matrix
14rules:
15- apiGroups:
16 - ""
17 resources:
18 - configmaps
19 verbs:
20 - create
21---
22apiVersion: rbac.authorization.k8s.io/v1
23kind: RoleBinding
24metadata:
25 creationTimestamp: null
26 name: default-CreateConfigMaps
27 namespace: app-matrix
28roleRef:
29 apiGroup: rbac.authorization.k8s.io
30 kind: Role
31 name: CreateConfigMaps
32subjects:
33- kind: ServiceAccount
34 name: default
35 namespace: app-matrix
giolekva13c3ffc2021-09-25 17:25:26 +040036---
37apiVersion: v1
38kind: Service
39metadata:
40 name: matrix
41 namespace: app-matrix
42spec:
43 type: ClusterIP
44 selector:
45 app: matrix
46 ports:
47 - name: http
48 port: 80
49 targetPort: http
50 protocol: TCP
51---
52apiVersion: networking.k8s.io/v1
53kind: Ingress
54metadata:
55 name: ingress
56 namespace: app-matrix
giolekva56c15692021-10-20 11:44:54 +040057 annotations:
58 cert-manager.io/cluster-issuer: "letsencrypt-prod"
59 acme.cert-manager.io/http01-edit-in-place: "true"
giolekva13c3ffc2021-09-25 17:25:26 +040060spec:
61 ingressClassName: nginx
62 tls:
63 - hosts:
64 - matrix.lekva.me
giolekva56c15692021-10-20 11:44:54 +040065 secretName: cert-matrix.lekva.me
giolekva13c3ffc2021-09-25 17:25:26 +040066 rules:
67 - host: matrix.lekva.me
68 http:
69 paths:
70 - path: /
71 pathType: Prefix
72 backend:
73 service:
74 name: matrix
75 port:
76 name: http
77---
giolekva56c15692021-10-20 11:44:54 +040078apiVersion: batch/v1
79kind: Job
80metadata:
81 name: generate-config
82 namespace: app-matrix
83spec:
84 template:
85 metadata:
86 labels:
87 app: generate-config
88 spec:
89 restartPolicy: OnFailure
90 volumes:
91 - name: data
92 persistentVolumeClaim:
93 claimName: matrix-data
94 - name: config
95 persistentVolumeClaim:
96 claimName: matrix-config
97 - name: homeserver-config
98 persistentVolumeClaim:
99 claimName: matrix-homeserver-config
100 initContainers:
101 - name: matrix
102 image: matrixdotorg/synapse:v1.43.0
103 imagePullPolicy: IfNotPresent
104 ports:
105 - name: http
106 containerPort: 8008
107 protocol: TCP
108 env:
109 - name: SYNAPSE_SERVER_NAME
110 value: "lekva.me"
111 - name: SYNAPSE_REPORT_STATS
112 value: "no"
113 - name: SYNAPSE_CONFIG_DIR
114 value: "/data"
115 - name: SYNAPSE_CONFIG_PATH
116 value: "/data/homeserver.yaml"
117 - name: SYNAPSE_DATA_DIR
118 value: "/data"
119 command: ["/start.py"]
120 args: ["generate"]
121 volumeMounts:
122 - name: data
123 mountPath: /data
124 # - name: config
125 # mountPath: /matrix-config
126 - name: homeserver-config
127 mountPath: /homeserver-config
128 containers:
129 - name: capture-config
130 image: giolekva/capture-config:latest
131 imagePullPolicy: Always
132 command: ["capture-config"]
133 args: ["--config=/data/homeserver.yaml", "--namespace=app-matrix", "--config-map-name=config"]
134 volumeMounts:
135 - name: data
136 mountPath: /data
137 # - name: config
138 # mountPath: /matrix-config
139 - name: homeserver-config
140 mountPath: /homeserver-config
141---
giolekva13c3ffc2021-09-25 17:25:26 +0400142apiVersion: apps/v1
143kind: Deployment
144metadata:
145 name: matrix
146 namespace: app-matrix
147spec:
148 selector:
149 matchLabels:
150 app: matrix
151 replicas: 1
152 template:
153 metadata:
154 labels:
155 app: matrix
156 spec:
157 volumes:
158 - name: data
159 persistentVolumeClaim:
160 claimName: matrix-data
giolekva56c15692021-10-20 11:44:54 +0400161 - name: config
162 persistentVolumeClaim:
163 claimName: matrix-config
164 - name: homeserver-config
165 configMap:
166 name: config
giolekva13c3ffc2021-09-25 17:25:26 +0400167 containers:
168 - name: matrix
169 image: matrixdotorg/synapse:v1.43.0
170 imagePullPolicy: IfNotPresent
171 ports:
172 - name: http
173 containerPort: 8008
174 protocol: TCP
175 env:
176 - name: SYNAPSE_SERVER_NAME
177 value: "lekva.me"
178 - name: SYNAPSE_REPORT_STATS
179 value: "no"
180 - name: SYNAPSE_CONFIG_DIR
181 value: "/data"
giolekva56c15692021-10-20 11:44:54 +0400182 - name: SYNAPSE_CONFIG_PATH
183 value: "/homeserver-config/homeserver.yaml"
giolekva13c3ffc2021-09-25 17:25:26 +0400184 - name: SYNAPSE_DATA_DIR
185 value: "/data"
giolekva13c3ffc2021-09-25 17:25:26 +0400186 command: ["/start.py"]
giolekva13c3ffc2021-09-25 17:25:26 +0400187 volumeMounts:
188 - name: data
189 mountPath: /data
giolekva56c15692021-10-20 11:44:54 +0400190 # - name: config
191 # mountPath: /matrix-config
192 - name: homeserver-config
193 mountPath: /homeserver-config
194 readOnly: true
giolekva13c3ffc2021-09-25 17:25:26 +0400195---
196apiVersion: v1
197kind: PersistentVolumeClaim
198metadata:
199 name: matrix-data
200 namespace: app-matrix
201spec:
202 accessModes:
203 - ReadWriteOnce
204 resources:
205 requests:
giolekva56c15692021-10-20 11:44:54 +0400206 storage: 10Gi
207---
208apiVersion: v1
209kind: PersistentVolumeClaim
210metadata:
211 name: matrix-config
212 namespace: app-matrix
213spec:
214 accessModes:
215 - ReadWriteOnce
216 resources:
217 requests:
218 storage: 10Gi
219---
220apiVersion: v1
221kind: PersistentVolumeClaim
222metadata:
223 name: matrix-homeserver-config
224 namespace: app-matrix
225spec:
226 accessModes:
227 - ReadWriteOnce
228 resources:
229 requests:
230 storage: 10Gi