Last modified on 3 December 2021, at 22:48

Chat

Description

Goal

  • Initial goal was to get out of slack
  • The other goal is to have a userfriendly chat, better than IRC (which still have its use cases of course)

Team chat.png

Component

Upgrade

Mattermost (Current)

IMPORTANT: Read the update notes before https://docs.mattermost.com/upgrade/important-upgrade-notes.html

ssh ubunut@k8s.fixme.ch

# Backup
ubuntu@k8s:~$ sudo rsync --exclude=data/ -av /srv/chat.fixme.ch/ /root/backup-chat-$(date +'%Y-%m-%d')/

# Upgrade
ubuntu@k8s:~$ sudo docker pull mattermost/mattermost-prod-app:5.9.8
ubuntu@k8s:~$ kubectl -n mattermost edit deployment.apps/mattermost-app

# Update the image tag to be to the last version (not latest!), ex:
# image: mattermost/mattermost-prod-app:5.8.0
# image: mattermost/mattermost-prod-app:5.9.8
# save/quit

# Watch the pods being restarted

ubuntu@k8s:~$ kubectl get pods -n mattermost -w
NAME                             READY   STATUS    RESTARTS   AGE
mattermost-app-b68b5cdb-5jlhj    1/1     Running   5          308d
postgresql-db-59ffdffd84-klkw2   1/1     Running   4          466d

# Watch the logs of the newly created pod
ubuntu@k8s:~$ kubectl logs -n mattermost -f mattermost-app-b68b5cdb-5jlhj

PostgreSQL

Example d'update de postgresql

Creation d'un nouveau deployment avec la nouvelle version, en parallèle de l'actuelle dans objects.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  labels:
    type: local
  name: mattermost-postgresql-10
  namespace: mattermost
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 20Gi
  hostPath:
    path: /srv/chat.fixme.ch/postgresql-10

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mattermost-postgresql-10
  namespace: mattermost
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mattermost
    tier: db
  name: postgresql-10-db
  namespace: mattermost
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mattermost
      tier: db
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: mattermost
        tier: db
      name: mattermost-10-db
    spec:
      containers:
      - image: postgres:10.16
        imagePullPolicy: IfNotPresent
        name: postgresql-10-db
        ports:
        - containerPort: 5432
          protocol: TCP
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /var/lib/postgresql/data
          name: db
        env:
        - name: POSTGRES_PASSWORD
          valueFrom:
            secretKeyRef:
              key: db-root
              name: mattermost.env
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - name: db
        persistentVolumeClaim:
          claimName: mattermost-postgresql-10

Creation des objets, backup de l'ancienne db et import dans la nouvelle

mkdir /srv/chat.fixme.ch/postgresql-10
kubectl create -n mattermost objects.yaml
sudo docker exec k8s_postgresql-db_postgresql-db-59ffdffd84-pb2pg_mattermost_87151477-a5bf-11eb-bde2-525400731ac9_0 pg_dumpall -U postgres > dump-9.4.sql
sudo cp dump-9.4.sql /srv/chat.fixme.ch/postgresql-10/.
sudo docker exec -it k8s_postgresql-10-db_postgresql-10-db-558644f4fd-6g5lw_mattermost_bb97a762-a5c5-11eb-bde2-525400731ac9_0 /bin/bash
pgsql -U postgres < /var/lib/postgresql/data/dump-9.4.sql

A terminer: - switch vers la nouvelle version

Channel naming convention

  • 10_* = general/association
  • 20_* = events
  • 30_* = projects/topics
  • 40_* = other
  • 99_* = archived channels

Participants