ウェブサイト検索

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 のインストールと構成

関連記事: