Ricerca nel sito web

Installa e configura Mattermost su un cluster Kubernetes


Mattermost è una piattaforma di messaggistica open source progettata per servire un gran numero di utenti simultanei in tutto il mondo. È il più grande concorrente di MS Teams e Slack. La connessione tra individui può avvenire tramite videochiamate, normali chiamate vocali o chat.

Mattermost guadagna popolarità rispetto ad altre piattaforme di messaggistica grazie alle seguenti caratteristiche principali:

  • Supporta integrazioni di terze parti
  • Funzionalità di trascinamento della selezione
  • Sportello di servizio IT
  • Offre la condivisione di file
  • Avvisi/Notifiche
  • Risoluzione degli incidenti: risolve gli incidenti rapidamente e quindi risparmiando tempo.
  • Importazione ed esportazione dei dati
  • Supporta l'archiviazione di documenti
  • Monitoraggio delle prestazioni delle applicazioni e della rete.
  • Gestione e orchestrazione del flusso di lavoro.

Per installare e configurare Mattermost su un cluster Kubernetes, seguire i passaggi seguenti:

Requisiti di installazione.

Assicurati di avere un cluster Kubernetes configurato. Tuttavia, puoi raggiungere questo obiettivo utilizzando le guide dedicate di seguito:

  • Installa Kubernetes Cluster su Rocky Linux 8 con Kubeadm e CRI-O
  • Installa Kubernetes Cluster su Ubuntu utilizzando K3s
  • Distribuisci il cluster Kubernetes su Linux con k0s
  • Esegui Kubernetes su Debian con Minikube

È inoltre necessario che sia installato kubectl.

curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin

Per poter utilizzare Kubectl, dovresti essere in grado di accedere al cluster utilizzando il certificato generato.

# For k0s
export KUBECONFIG=/var/lib/k0s/pki/admin.conf

Con i requisiti soddisfatti, procedere come di seguito.

1 – Crea lo spazio dei nomi più importante

Creeremo innanzitutto lo spazio dei nomi Mattemost in cui avverrà la nostra installazione. Questo spazio dei nomi conterrà diversi cluster virtuali.

Crea lo spazio dei nomi.

kubectl create namespace mattermost

Verifica se lo spazio dei nomi è stato creato:

$ kubectl get namespaces
NAME              STATUS   AGE
default           Active   97s
kube-node-lease   Active   97s
kube-public       Active   97s
kube-system       Active   97s
mattermost        Active   45s

2 – Crea il file dei segreti

Il file segreto contiene i dettagli del database per il database Mattermost.

Inizia generando credenziali base64 come di seguito.

# MySQL root user
$ echo -n 'root' | base64
cm9vdA==

# MySQL root user password
$ echo -n 'StrongRootPassword' | base64
U3Ryb25nUm9vdFBhc3N3b3Jk

#Mattermost MySQL database name
$ echo -n 'mattermost' | base64
bWF0dGVybW9zdA==

# Mattermost MySQL user
$ echo -n 'mattermost' | base64
bWF0dGVybW9zdA==

# Mattermost MySQL user Password
$ echo -n 'StrongUserPassword'|base64
U3Ryb25nVXNlclBhc3N3b3Jk

Ora crea il file dei segreti

vim secrets.yaml

Aggiungi le righe seguenti sostituendole in modo appropriato

apiVersion: v1
kind: Secret
metadata:
  name: mattermost.env
  namespace: mattermost
type: Opaque
data:
  ROOT: cm9vdA==
  ROOT_PASSWORD: U3Ryb25nUm9vdFBhc3N3b3Jk
  DATABASE: bWF0dGVybW9zdA==
  USER: bWF0dGVybW9zdA==
  PASSWORD: U3Ryb25nVXNlclBhc3N3b3Jk

Applicare il file di configurazione.

kubectl apply -f secrets.yaml

Verificare se la configurazione è stata applicata.

$ kubectl get secret -n mattermost
NAME                  TYPE                                  DATA   AGE
default-token-xlwqr   kubernetes.io/service-account-token   3      84s
mattermost.env        Opaque                                5      5s

3 – Crea il pod del database Mattermost.

Per questa guida utilizzeremo il database MariaDB. Crea un volume per MariaDB

sudo mkdir /var/mattermost

Crea un file YAML per il database

vim database.yaml

Aggiungi il contenuto seguente al file.

---
apiVersion: v1
kind: Service
metadata:
  name: mariadb
  namespace: mattermost
spec:
  selector:
    app: mariadb
  ports:
  - name: mariadb
    protocol: TCP
    port: 3306
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mariadb
  namespace: mattermost
  labels:
    app: mariadb
spec:
  selector:
    matchLabels:
      app: mariadb
  template:
    metadata:
      labels:
        app: mariadb
    spec:
      containers:
      - name: mariadb
        image: mariadb:10.8
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mattermost.env
              key: ROOT_PASSWORD
        - name: MYSQL_DATABASE
          valueFrom:
            secretKeyRef:
              name: mattermost.env
              key: DATABASE
        - name: MYSQL_USER
          valueFrom:
            secretKeyRef:
              name: mattermost.env
              key: USER
        - name: MYSQL_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mattermost.env
              key: PASSWORD
        ports:
        - containerPort: 3306
          name: mariadb
        volumeMounts:
        - name: mariadb-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mariadb-storage
        hostPath:
          path: /var/mattermost
          type: Directory

Applicare la configurazione.

kubectl apply -f database.yaml

Verifica se il pod è stato creato:

$ kubectl get pod -n mattermost
NAME                       READY   STATUS    RESTARTS   AGE
mariadb-5cdf7f54f4-9d7xb   1/1     Running   0          6m48s

4 – Distribuire il servizio Mattermost

Il servizio Mattermost verrà utilizzato per esporre la nostra applicazione in esecuzione sulla porta 8065. Esistono diversi modi per distribuire un servizio come NodePort, ClusterIP o LoadBalancer

Crea il file di servizio Mattermost:

vim service.yaml

Qui distribuiremo un servizio LoadBalancer.

apiVersion: v1
kind: Service
metadata:
  name: "mattermost-service"
  namespace: mattermost
spec:
  type: LoadBalancer
  ports:
    - name: http
      port: 8065
      targetPort: 8065
      protocol: TCP
  selector:
    app: mattermost-app

Applicare la configurazione.

kubectl apply -f service.yaml

Verifica se il servizio è stato creato:

$ kubectl get svc -n mattermost
NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
mariadb              ClusterIP   10.100.76.56   <none>        3306/TCP         7m36s
mattermost-service   LoadBalancer    10.99.90.154   <none>        8065:30095/TCP   5s

5 – Distribuire l'applicazione Mattermost.

Ora distribuisci l'applicazione. Crea il file YAML di distribuzione come di seguito

vim mattermost_app.yaml

Al file, aggiungi le righe seguenti:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mattermost-app
  labels:
    app: mattermost-app
    tier: app
  namespace: mattermost
spec:
  selector:
    matchLabels:
      app: mattermost-app
  template:
    metadata:
      labels:
        app: mattermost-app
    spec:
      containers:
      - name: mattermost-app
        image: "mattermost/mattermost-team-edition:6.3.2"
        env:
        - name: DB_TYPE
          value: "mariadb"
        - name: DB_HOST
          value: "mariadb"
        - name: DB_PORT_NUMBER
          value: "3306"
        - name: MM_USERNAME
          valueFrom:
            secretKeyRef:
              name: mattermost.env
              key: USER
        - name: MM_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mattermost.env
              key: PASSWORD
        - name: MM_DBNAME
          valueFrom:
            secretKeyRef:
              name: mattermost.env
              key: DATABASE
        - name: MM_SQLSETTINGS_DATASOURCE 
          value: "mattermost:StrongUserPassword@tcp(mariadb:3306)/mattermost?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s"
        - name: MM_SQLSETTINGS_DRIVERNAME
          value: "mysql"
        ports:
        - containerPort: 8065
          name: http
        volumeMounts:
        # optional persistent storage
        #- name: appdata
          #mountPath: /mattermost/data
        - name: etclocaltime
          mountPath: /etc/localtime
          readOnly: true
      volumes:
      # optional persistent storage
      #- name: appdata
        #persistentVolumeClaim:
        #  claimName: mattermost-app
      - name: etclocaltime
        hostPath:
          path: /etc/localtime

Distribuire l'applicazione:

kubectl apply -f mattermost_app.yaml

Visualizza se la distribuzione ha esito positivo.

$ kubectl get deploy -n mattermost
NAME             READY   UP-TO-DATE   AVAILABLE   AGE
mariadb          1/1     1            1           12m
mattermost-app   1/1     1            1           27s

Ottieni pod nello spazio dei nomi Mattermost.

$ kubectl get pods -nmattermost
NAME                              READY   STATUS    RESTARTS   AGE
mariadb-5cdf7f54f4-9d7xb          1/1     Running   0          13m
mattermost-app-795578f4bc-5862k   1/1     Running   0          83s

Ottieni il poeta su cui è stata esposta l'applicazione Mattermost.

$ kubectl get svc -n mattermost
NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
mariadb              ClusterIP   10.100.76.56   <none>        3306/TCP         14m
mattermost-service   LoadBalancer    10.99.90.154   <none>        8065:30095/TCP   6m46s

6 – Accedi all'interfaccia Web Mattermost

Ora l'interfaccia utente Web dovrebbe essere accessibile sulla porta 30095. Se hai un firewall abilitato, consenti il passaggio della porta.

##For Firewalld
sudo firewall-cmd --add-service=30095/tcp --permanent
sudo firewall-cmd --reload

##For UFW
sudo ufw allow 30095

Ora accedi all'interfaccia Web di Mattermost sul tuo browser utilizzando l'URL http://IP_Address:30095 o http://domain-name:30095

Crea l'account Mattermost e procedi con l'accesso.

Ora sei pronto per gestire la tua installazione Mattermost. Esistono due opzioni: creare un team o procedere alla console di sistema dove apporterai modifiche amministrative al tuo server. La console di sistema appare come di seguito.

Percreare un team e iniziare la comunicazione, procedere come di seguito.

Imposta l'URL della squadra:

Completa la creazione del team fornendo i dettagli richiesti.

Una volta creato, avrai il team pronto per la comunicazione come mostrato.

Libri per apprendere l'amministrazione di Kubernetes:

  • I migliori libri di studio su Kubernetes

Conclusione.

Bastava imparare!

Abbiamo illustrato con successo come installare e configurare Mattermost su un cluster Kubernetes. Spero che questo abbia avuto un impatto.

Vedi altro:

  • Come eseguire il server Mattermost nei contenitori Docker
  • Installa Mattermost Server su CentOS 8|RHEL 8
  • Installa Mattermost Server su Ubuntu
  • Installa e configura Wiki.js su Kubernetes Cluster

Articoli correlati: