Deploy the Mattermost charm for the first time¶
In this tutorial, we’ll go through each step of the process to get a basic Mattermost deployment.
What you’ll need¶
You will need a working station, e.g., a laptop, with AMD64 architecture. Your working station should have at least 4 CPU cores, 8 GB of RAM, and 50 GB of disk space.
Tip
You can use Multipass to create a virtual machine(VM) and work in an isolated environment by running:
multipass launch 24.04 --name mattermost-tutorial-vm --cpus 4 --memory 8G --disk 50G
Shell into the Multipass VM¶
Note
If you’re working locally, you don’t need to do this step.
To be able to work inside the Multipass VM first you need to log in with the following command:
multipass shell mattermost-tutorial-vm
Install and prepare Juju and MicroK8s¶
This tutorial requires the following software to be installed on your working station (either locally or in the Multipass VM):
Juju 3
MicroK8s 1.35
Use Concierge to set up Juju and MicroK8s:
sudo snap install --classic concierge
sudo concierge prepare -p microk8s
This first command installs Concierge, and the second command uses Concierge to install and configure Juju and MicroK8s.
For this tutorial, Juju must be bootstrapped to a MicroK8s controller. Concierge should
complete this step for you, and you can verify by checking for msg="Bootstrapped Juju" provider=microk8s
in the terminal output and by running juju controllers.
If Concierge did not perform the bootstrap, run:
juju bootstrap microk8s tutorial-controller
What you’ll do¶
Deploy the Mattermost charm
Integrate with the PostgreSQL charm
Inspect the Kubernetes resources created
Access the Mattermost app and bootstrap
Clean up the environment
Add a Juju model for the tutorial¶
To easily clean up the resources and separate your workload from the contents of this tutorial, set up a new Juju model named mattermost-tutorial:
juju add-model mattermost-tutorial
Deploy the charms¶
Mattermost requires connections to PostgreSQL. For more information, see the Charm Integrations.
Deploy the charms:
juju deploy mattermost-k8s --channel latest/edge
juju deploy postgresql-k8s --channel 14/stable --trust
The Mattermost database driver requires a secure SSL/TLS connection by default. For this tutorial, we will use the self-signed-certificates charm to provision a local Certificate Authority (CA) for PostgreSQL:
juju deploy self-signed-certificates
juju integrate postgresql-k8s self-signed-certificates:certificates
Integrate with the PostgreSQL charm¶
Integrate postgresql-k8s to mattermost-k8s:
juju integrate mattermost-k8s postgresql-k8s
Inspect the status of the deployment¶
By running juju status --relations the current state of the deployment can be queried:
Model Controller Cloud/Region Version SLA Timestamp
mattermost-tutorial concierge-microk8s microk8s/localhost 3.6.21 unsupported 21:45:15+01:00
App Version Status Scale Charm Channel Rev Address Exposed Message
mattermost-k8s active 1 mattermost-k8s latest/edge 29 10.152.183.166 no
postgresql-k8s 14.20 active 1 postgresql-k8s 14/stable 774 10.152.183.59 no
self-signed-certificates active 1 self-signed-certificates 1/stable 586 10.152.183.208 no
Unit Workload Agent Address Ports Message
mattermost-k8s/0* active idle 10.1.225.142
postgresql-k8s/0* active idle 10.1.225.140 Primary
self-signed-certificates/0* active idle 10.1.225.141
Integration provider Requirer Interface Type Message
mattermost-k8s:secret-storage mattermost-k8s:secret-storage secret-storage peer
postgresql-k8s:database mattermost-k8s:postgresql postgresql_client regular
postgresql-k8s:database-peers postgresql-k8s:database-peers postgresql_peers peer
postgresql-k8s:restart postgresql-k8s:restart rolling_op peer
postgresql-k8s:upgrade postgresql-k8s:upgrade upgrade peer
self-signed-certificates:certificates postgresql-k8s:certificates tls-certificates regular
The deployment finishes when all the charms show Active states.
Run microk8s kubectl get pods -n mattermost-tutorial to see the pods that are being created by the charms:
NAME READY STATUS RESTARTS AGE
mattermost-k8s-0 2/2 Running 0 10m
modeloperator-64cb49db9-8cvpv 1/1 Running 0 15m
postgresql-k8s-0 2/2 Running 0 13m
self-signed-certificates-0 1/1 Running 0 13m
Note
If you are using multipass, or installed microk8s from scratch, you might get an “insufficient permissions” error. In that case, run the commands presented at the error message in your terminal, after which you’ll be able to run microk8s commands.
sudo usermod -a -G snap_microk8s ubuntu
sudo chown -R ubuntu ~/.kube
newgrp snap_microk8s
Access Mattermost for the first time¶
By default, mattermost is exposed on the port 8080. To find the internal IP address assigned to mattermost, check the application address in the juju status output. For our example, this is 10.152.183.239. Open a web browser, navigate to 10.152.183.239:8080 and follow the steps to set up your Mattermost server.
Note
If you are using Multipass, you need to forward the port to access the application from a web browser:
microk8s kubectl port-forward --address 0.0.0.0 service/mattermost-k8s 8080:8080 -n mattermost-tutorial
Then, in a separate terminal in your host machine, you can find the address of your VM by running multipass info mattermost-tutorial-vm.
This would be the private IP address and usually would be listed first. Now, you can navigate to <your-multipass-vm-ip>:8080 to access Mattermost.
Clean up the environment¶
Congratulations! You have successfully finished the Mattermost tutorial. You have now deployed the Mattermost charm, integrated it with a database, and accessed the Mattermost instance in your browser. You can now remove the model environment that you’ve created using the following command:
juju destroy-model mattermost-tutorial --destroy-storage
If you used Multipass, remove the instance you created for this tutorial using the following command on your host machine.
multipass delete --purge mattermost-tutorial-vm