forked from continuwuation/continuwuity
Reviewed-on: continuwuation/continuwuity#1387 Reviewed-by: Jade Ellis <jade@ellis.link> Co-authored-by: elisaado <forgejoellis@elisaado.com> Co-committed-by: elisaado <forgejoellis@elisaado.com>
111 lines
3.7 KiB
Text
111 lines
3.7 KiB
Text
# Continuwuity for Kubernetes
|
|
|
|
Continuwuity doesn't support horizontal scalability or distributed loading
|
|
natively. However, a deployment in Kubernetes is very similar to the docker
|
|
setup. This is because Continuwuity can be fully configured using environment
|
|
variables. A sample StatefulSet is shared below. The only thing missing is
|
|
a PVC definition (named `continuwuity-data`) for the volume mounted to
|
|
the StatefulSet, an Ingress resources to point your webserver to the
|
|
Continuwuity Pods, and a Service resource (targeting `app.kubernetes.io/name: continuwuity`)
|
|
to glue the Ingress and Pod together.
|
|
|
|
Carefully go through the `env` section and add, change, and remove any env vars you like using the [Configuration reference](https://continuwuity.org/reference/config.html)
|
|
|
|
```yaml
|
|
apiVersion: apps/v1
|
|
kind: StatefulSet
|
|
metadata:
|
|
name: continuwuity
|
|
namespace: matrix
|
|
labels:
|
|
app.kubernetes.io/name: continuwuity
|
|
spec:
|
|
replicas: 1
|
|
serviceName: continuwuity
|
|
podManagementPolicy: Parallel
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/name: continuwuity
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/name: continuwuity
|
|
spec:
|
|
securityContext:
|
|
sysctls:
|
|
- name: net.ipv4.ip_unprivileged_port_start
|
|
value: "0"
|
|
containers:
|
|
- name: continuwuity
|
|
# use a sha hash <3
|
|
image: forgejo.ellis.link/continuwuation/continuwuity:latest
|
|
imagePullPolicy: IfNotPresent
|
|
ports:
|
|
- name: http
|
|
containerPort: 80
|
|
volumeMounts:
|
|
- mountPath: /data
|
|
name: data
|
|
subPath: data
|
|
securityContext:
|
|
capabilities:
|
|
add:
|
|
- NET_BIND_SERVICE
|
|
env:
|
|
- name: TOKIO_WORKER_THREADS
|
|
value: "2"
|
|
- name: CONTINUWUITY_SERVER_NAME
|
|
value: "example.com"
|
|
- name: CONTINUWUITY_DATABASE_PATH
|
|
value: "/data/db"
|
|
- name: CONTINUWUITY_DATABASE_BACKEND
|
|
value: "rocksdb"
|
|
- name: CONTINUWUITY_PORT
|
|
value: "80"
|
|
- name: CONTINUWUITY_MAX_REQUEST_SIZE
|
|
value: "20000000"
|
|
- name: CONTINUWUITY_ALLOW_FEDERATION
|
|
value: "true"
|
|
- name: CONTINUWUITY_TRUSTED_SERVERS
|
|
value: '["matrix.org"]'
|
|
- name: CONTINUWUITY_ADDRESS
|
|
value: "0.0.0.0"
|
|
- name: CONTINUWUITY_ROCKSDB_PARALLELISM_THREADS
|
|
value: "1"
|
|
- name: CONTINUWUITY_WELL_KNOWN__SERVER
|
|
value: "matrix.example.com:443"
|
|
- name: CONTINUWUITY_WELL_KNOWN__CLIENT
|
|
value: "https://matrix.example.com"
|
|
- name: CONTINUWUITY_ALLOW_REGISTRATION
|
|
value: "false"
|
|
- name: RUST_LOG
|
|
value: info
|
|
readinessProbe:
|
|
httpGet:
|
|
path: /_matrix/federation/v1/version
|
|
port: http
|
|
periodSeconds: 4
|
|
failureThreshold: 5
|
|
resources:
|
|
# Continuwuity might use quite some RAM :3
|
|
requests:
|
|
cpu: "2"
|
|
memory: "512Mi"
|
|
limits:
|
|
cpu: "4"
|
|
memory: "2048Mi"
|
|
volumes:
|
|
- name: data
|
|
persistentVolumeClaim:
|
|
claimName: continuwuity-data
|
|
```
|
|
|
|
---
|
|
|
|
Apart from manually configuring the containers,
|
|
[a community-maintained Helm Chart is available here to run
|
|
conduwuit on Kubernetes](https://gitlab.cronce.io/charts/conduwuit)
|
|
|
|
This should be compatible with Continuwuity, but you will need to change the image reference.
|
|
|
|
If changes need to be made, please reach out to the maintainer, as this is not maintained or controlled by the Continuwuity maintainers.
|