Installing Mattermost(AKA: Slack killer) in K8S

With Lucas Collino we installed Mattermost at our workplace, the free edition has some MUST features that slack doesn’t:

Unlimited search history & integrations
Self-hosted one-to-one and group messaging, file sharing and search
Custom Branding , if you want to match your company’s style ;) (https://goo.gl/yQNh2E)

We are based on https://github.com/mattermost/mattermost-kubernetes

This guide assumes that you have nginx , helm and cert manager running, there is a guide for that here.

We will be using wildcard certificates for *.mycompany.com to use the same certificate, there is a small guide here for that, that also replicates the secret containing the certificate across all namespaces.

We also assume that you have a mysql in AWS RDS, for this PoC we are using free-tier.

First we create a dedicated namespace

$ kubectl create namespace mattermost

Create a mattermost-sandbox-company.yaml with the config, there is one here .

Proceed with the Helm installation:

$ helm install --name mattermost --namespace mattermost -f mattermost.yaml --version=0.2.5 mattermost/mattermost-helm

After 5 minutes you should see something like this

$... NOTES:
1. Get the application URL by running these commands:
http://mattermost.sandbox.mycompany.com...

We found a bug from nginx-ingress in which we need to remove some ingress configuration, so just comment this lines

$ kubectl edit ingress mattermost-sandbox-mattermost-helm -n mattermost -o yaml
...#nginx.ingress.kubernetes.io/configuration-snippet: |
#proxy_cache mattermost_cache;
#proxy_cache_revalidate on;
#proxy_cache_min_uses 2;
#proxy_cache_use_stale timeout;
#proxy_cache_lock on;...

You can now enter the website to check that it is running

Finally we need to configure Mattermost stuff like email and the like. In order to do that we can edit the configmap

$ kubectl get configmap -n mattermost
NAME DATA AGE
mattermost-sandbox-mattermost-helm-app-tests 1 33m
mattermost-sandbox-mattermost-helm-config-json 1 33m
mattermost-sandbox-minio 1 33m
$ kubectl edit configmap mattermost-sandbox-mattermost-helm-config-json -n mattermost

We use Amazon SES for sending emails, you would have to configure email settings in config.json accordingly, here is a guide for that.

All mattermost config is located in a ConfigMap that points to a config.json file, the details on each config are explained here , you should change that for your needs.

So, that’s it, you also have a Mattermost Admin Guide. I hope you find it useful and the steps are easy to follow. Please comment and/or ask questions if I missed something — I’d love to get your feedback.