Synapse
| Channel | Revision | Published | Runs on |
|---|---|---|---|
| latest/stable | 426 | 20 Sep 2024 | |
| latest/edge | 523 | 07 Jan 2025 | |
| 2/edge | 834 | 29 Oct 2025 | |
| 1/stable | 818 | 13 Oct 2025 | |
| 1/edge | 833 | 28 Oct 2025 |
juju deploy synapse
Deploy Kubernetes operators easily with Juju, the Universal Operator Lifecycle Manager. Need a Kubernetes cluster? Install MicroK8s to create a full CNCF-certified Kubernetes system in under 60 seconds.
Platform:
How to contribute
Overview
This document explains the processes and practices recommended for contributing enhancements to the Synapse operator.
- Generally, before developing enhancements to this charm, you should consider opening an issue explaining your use case.
- If you would like to chat with us about your use-cases or proposed implementation, you can reach us at Canonical Matrix public channel or Discourse.
- Familiarising yourself with the Charmed Operator Framework library will help you a lot when working on new features or bug fixes.
- All enhancements require review before being merged. Code review typically
examines
- code quality
- test coverage
- user experience for Juju operators of this charm.
- Please help us out in ensuring easy to review branches by rebasing your pull
request branch onto the
mainbranch. This also avoids merge commits and creates a linear Git commit history. - Please generate src documentation for every commit. See the section below for more details.
Developing
The code for this charm can be downloaded as follows:
git clone https://github.com/canonical/synapse-operator
You can use the environments created by tox for development:
tox --notest -e unit
source .tox/unit/bin/activate
Testing
Note that the Synapse image need to be built and
pushed to microk8s for the tests to run. It should be tagged as
localhost:32000/synapse:latestso that Kubernetes knows how to pull them
from the MicroK8s repository. Note that the MicroK8s registry needs to be
enabled using microk8s enable registry. More details regarding the OCI image
below. The following commands can then be used to run the tests:
tox: Runs all of the basic checks (lint,unit,static, andcoverage-report).tox -e fmt: Runs formatting usingblackandisort.tox -e lint: Runs a range of static code analysis to check the code.tox -e static: Runs other checks such asbanditfor security issues.tox -e unit: Runs the unit tests.tox -e integration: Runs the integration tests.
Generating src docs for every commit
Run the following command:
echo -e "tox -e src-docs\ngit add src-docs\n" >> .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
Build charm
Build the charm in this git repository using:
charmcraft pack
For the integration tests (and also to deploy the charm locally), the synapse image is required in the microk8s registry. To enable it:
microk8s enable registry
The following commands import the images in the Docker daemon and push them into the registry:
cd [project_dir]/synapse_rock && rockcraft pack
skopeo --insecure-policy copy --dest-tls-verify=false oci-archive:synapse_1.0_amd64.rock docker://localhost:32000/synapse:latest
Deploy
# Create a model
juju add-model synapse-dev
# Enable DEBUG logging
juju model-config logging-config="<root>=INFO;unit=DEBUG"
# Deploy the charm (assuming you're on amd64)
juju deploy ./synapse_ubuntu-22.04-amd64.charm \
--resource synapse-image=localhost:32000/synapse:latest
Configure server_name
Synapse requires a server_name to be set before starting. Note that this cannot
be changed later.
The following command will configure the server_name mychat.test.com:
juju configure synapse server_name=mychat.test.com
Read more about server_name in Configuring Synapse.
Canonical Contributor Agreement
Canonical welcomes contributions to the Synapse Operator. Please check out our contributor agreement if you’re interested in contributing to the solution.