Kubernetes クラスターでの Mattermost のインストールと構成 |
Mattermost は、世界中の多数の同時ユーザーにサービスを提供するように設計されたオープンソースのメッセージング プラットフォームです。 MS Teams と Slack の最大の競合相手です。個人間のつながりは、ビデオ通話、通常の音声通話、またはチャットを通じて行うことができます。
Mattermost は、次の主な機能により、他のメッセージング プラットフォームよりも人気が高まっています。
- サードパーティの統合をサポート
- ドラッグ&ドロップ機能
- ITサービスデスク
- ファイル共有を提供します
- アラート/通知
- インシデントの解決 – インシデントを迅速に解決し、時間を節約します。
- データのインポートとエクスポート
- ドキュメントストレージをサポート
- アプリケーションとネットワークのパフォーマンスの監視。
- ワークフロー管理とオーケストレーション。
Mattermost を Kubernetes クラスターにインストールして構成するには、以下の手順に従います。
セットアップ要件。
Kubernetes クラスターがセットアップされていることを確認してください。ただし、以下の専用ガイドを使用してこれを実現できます。
- Kubeadm と CRI-O を使用して Rocky Linux 8 に Kubernetes クラスターをインストールする
- K3s を使用して Kubernetes クラスターを Ubuntu にインストールする
- k0s を使用して Linux に Kubernetes クラスターをデプロイする
- Minikube を使用して Debian 上で Kubernetes を実行する
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
Kubectl を使用できるようにするには、生成された証明書を使用してクラスターにアクセスできる必要があります。
# For k0s
export KUBECONFIG=/var/lib/k0s/pki/admin.conf
要件が満たされている場合は、以下の手順に進みます。
1 – Mattermost 名前空間を作成する
まず、インストールが行われる Mattemost 名前空間を作成します。この名前空間には、複数の仮想クラスターが含まれます。
ネームスペースを作成します。
kubectl create namespace mattermost
ネームスペースが作成されたかどうかを確認します。
$ 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 – シークレットファイルを作成する
シークレット ファイルには、Mattermost データベースのデータベース詳細が含まれています。
以下のように、base64 資格情報を生成することから始めます。
# 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
次にシークレットファイルを作成します
vim secrets.yaml
以下の行を追加し、適切に置き換えます
apiVersion: v1
kind: Secret
metadata:
name: mattermost.env
namespace: mattermost
type: Opaque
data:
ROOT: cm9vdA==
ROOT_PASSWORD: U3Ryb25nUm9vdFBhc3N3b3Jk
DATABASE: bWF0dGVybW9zdA==
USER: bWF0dGVybW9zdA==
PASSWORD: U3Ryb25nVXNlclBhc3N3b3Jk
設定ファイルを適用します。
kubectl apply -f secrets.yaml
設定が適用されているかどうかを確認します。
$ 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 – Mattermost データベース ポッドを作成します。
このガイドでは、MariaDB データベースを使用します。 MariaDB のボリュームを作成する
sudo mkdir /var/mattermost
データベース用の YAML ファイルを作成する
vim database.yaml
以下の内容をファイルに追加します。
---
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
設定を適用します。
kubectl apply -f database.yaml
ポッドが作成されたかどうかを確認します。
$ kubectl get pod -n mattermost
NAME READY STATUS RESTARTS AGE
mariadb-5cdf7f54f4-9d7xb 1/1 Running 0 6m48s
4 – Mattermost サービスを展開する
Mattermost サービスは、ポート 8065 で実行されているアプリケーションを公開するために使用されます。 NodePort、ClusterIP、LoadBalancer などのサービスをデプロイするには、いくつかの方法があります。
Mattermost サービス ファイルを作成します。
vim service.yaml
ここでは、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
設定を適用します。
kubectl apply -f service.yaml
サービスが作成されたかどうかを確認します。
$ 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 – Mattermost アプリケーションをデプロイします。
次に、アプリケーションをデプロイします。以下のようにデプロイメント YAML を作成します
vim mattermost_app.yaml
ファイルに以下の行を追加します。
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
アプリケーションをデプロイします。
kubectl apply -f mattermost_app.yaml
デプロイが成功したかどうかを確認します。
$ 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
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
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 – Mattermost Web インターフェイスにアクセスする
これで、Web UI がポート 30095 でアクセスできるようになります。ファイアウォールを有効にしている場合は、ポートの通過を許可します。
##For Firewalld
sudo firewall-cmd --add-service=30095/tcp --permanent
sudo firewall-cmd --reload
##For UFW
sudo ufw allow 30095
次に、URL http://IP_Address:30095 または http://domain-name:30095 を使用してブラウザで Mattermost Web インターフェイスにアクセスします。
Mattermost アカウントを作成し、ログインに進みます。
これで、Mattermost インストールを管理する準備が整いました。オプションは 2 つあり、チームを作成するか、システム コンソールに進み、サーバーに管理者変更を加えます。システムコンソールは以下のように表示されます。
チームを作成してコミュニケーションを開始するには、以下の手順を実行します。
チームの URL を設定します。
必要な詳細を入力してチームの作成を完了します。
作成が完了すると、図に示すように、チームがコミュニケーションできる状態になります。
Kubernetes 管理を学習するための書籍:
- ベスト Kubernetes 学習本
結論。
それだけでも十分な学習でした!
Kubernetes クラスターに Mattermost をインストールして構成する方法を説明しました。これがインパクトがあったことを願っています。
続きを見る:
- DockerコンテナでMattermostサーバーを実行する方法
- Mattermost サーバーを CentOS 8|RHEL 8 にインストールする
- Mattermost サーバーを Ubuntu にインストールする
- Kubernetes クラスターでの Wiki.js のインストールと構成