Skip to content

Commit 942d874

Browse files
committed
Expand the documentation on the stores of state managed by the chart
1 parent 9dfb50f commit 942d874

2 files changed

Lines changed: 58 additions & 1 deletion

File tree

docs/maintenance.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ SPDX-License-Identifier: AGPL-3.0-only
1111
- [Backup & restore](#backup--restore)
1212
- [Backup](#backup)
1313
- [Restore](#restore)
14+
- [Installation State](#installation-state)
1415

1516
## Upgrading
1617

@@ -67,3 +68,59 @@ Adjust to your own kubernetes namespace and release name if required.
6768

6869
4. Restore the synapse media files using `kubectl cp` to copy them in Synapse pod. If you are using K3s, you can find where the new persistent volume has been mounted with `kubectl get pv -n ess -o yaml | grep synapse-media` and copy your files in the destination path.
6970
5. Run the `helm upgrade --install....` command again to restore your workload's pods.
71+
72+
73+
## Installation State
74+
75+
The below documents various stores of the state for the installation, that the chart controls.
76+
These stores of state may have a different lifecycle to the chart itself, i.e. may persist beyond `helm uninstall`, and their lifecycle is documented below.
77+
78+
### Postgres
79+
80+
By default (`postgres.enabled: true`) the chart will deploy a Postgres instance in the cluster, if Synapse or Matrix Authentication Service are deployed.
81+
This is to enable a quick, easy and self-contained way of deploying the stack, whilst minimising external dependencies
82+
83+
The chart will construct a `PersistentVolumeClaim` to persist the Postgres databases.
84+
By default, this `PersistentVolumeClaim` will not be deleted on `helm uninstall`.
85+
This is to prevent dataloss.
86+
This behaviour can be changed by setting `postgres.storage.resourcePolicy: delete` rather than `keep`.
87+
88+
Alternatively, an existing `PersistentVolumeClaim` that is not managed by the chart, can be used by specifying `postgres.storage.existingClaim`.
89+
90+
Finally, the recommended approach is to use a Postgres instance that is not managed by the chart.
91+
This can be done by setting `postgres.enabled: false` and configurating Synapse and Matrix Authentication Service with details of these Postgres instance(s).
92+
93+
### Synapse Media
94+
95+
If Synapse is enabled, the chart will default to constructing a `PersistentVolumeClaim` to persist uploaded media.
96+
By default, this `PersistentVolumeClaim` will not be deleted on `helm uninstall`.
97+
This is to prevent dataloss.
98+
This behaviour can be changed by setting `synapse.media.storage.resourcePolicy: delete` rather than `keep`.
99+
100+
Alternatively, an existing `PersistentVolumeClaim`, that is not managed by the chart, can be used by specifying `synapse.media.storage.existingClaim`.
101+
102+
### Generated Secrets
103+
104+
By default (`initSecrets.enabled: true`) the chart will run a pre-install / pre-upgrade Helm hook to generate a variety of credentials that don't relate to external resources.
105+
This is to enable a quick and easy initial installation, without having to manually generate credentials, in a way that will work with tools like ArgoCD that don't support Helm's `lookup` function.
106+
The chart will create appropriate `Role` and `RoleBindings` in the installation namespace to facilitate this.
107+
108+
The generated `Secret` will have label `app.kubernetes.io/managed-by=matrix-tools-init-secrets`.
109+
As it is generated & managed with pre-install / pre-upgrade Hooks and no post-uninstall Hook is configured, this `Secret` will not be removed on `helm uninstall`.
110+
This is to prevent dataloss, as some of the generated credentials (e.g. Synapse's signing key) have impact if they are changed without additional configuration.
111+
112+
Each credential can be manually specified either directly in the Helm values or by referencing an existing `Secret` and associated key.
113+
114+
The generated secrets functionality can be turned off by setting `initSecrets.enabled: false` and then the chart will require you to provide all required credentials as described above.
115+
116+
### Deployment Markers
117+
118+
By default (`deploymentMarkers.enabled: true`) the chart will run a pre-install / pre-upgrade / post-upgrade Helm hook to check and record the state of the installation in a `ConfigMap`.
119+
This is to prevent components being enabled, disabled or otherwise put into some states that could cause data-corruption.
120+
The chart will create appropriate `Role` and `RoleBindings` in the installation namespace to facilitate this.
121+
122+
The generated `ConfigMap` will have label `app.kubernetes.io/managed-by=matrix-tools-deployment-markers`.
123+
As it is generated & managed with pre-install / pre-upgrade / post-upgrade Hooks and no post-uninstall Hook is configured, this `ConfigMap` will not be removed on `helm uninstall`.
124+
This is to prevent invalid states being entered on reinstallation, given that the default chart behaviour is to keep the Postgres database between reinstallations.
125+
126+
The deployment markers functionality can be turned off by setting `deploymentMarkers.enabled: false` and the chart will not protect you from various invalid changes to the values.

newsfragments/584.changed.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Better document uninstallation of the chart.
1+
Better document uninstallation of, and the stores of state managed by the chart.

0 commit comments

Comments
 (0)