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