EKSでMattermostを構築した話:4-1. Mattermostのインストール(helm理解編)


これまでの復習

  • EKSでMattermostを構築ということで少しずつ進めてきました。
  1. EKSでMattermostを構築した話:0.概要編 - Qiita
  2. EKSでMattermostを構築した話:1. VPC作成編 - Qiita
  3. EKSでMattermostを構築した話:2. EKSクラスター作成編 - Qiita
  4. EKSでMattermostを構築した話:3-1. EKSクラスターでアプリケーションを稼働させる前にセットアップしておくべきツール編 - Qiita
  5. EKSでMattermostを構築した話:3-2. EKSクラスターでアプリケーションを稼働させる前にセットアップしておくべきツール編 - Qiita
  6. Mattermostのインストール ← 今回はここ
  7. Mattermost Configの設定

今回作成するもの

  • これまでの対応でEKSができたので、次はEKS上で実際にアプリケーションを動かしていきたいです。
  • 今回、実際に動かすアプリケーションはMattermostです。チャットアプリですね。
    • このMattermostをhelmでインストールする前段階として、今回はhelmについての理解を深めていきます。

helmを利用するのですが

  • Mattermostのインストールにはhelmを利用します。
    • ところで、このhelmって何なのでしょうか?
  • helm船のかじのことらしいです。かじって分かりますか?

  • 船の図を見てみて分かるのは、かじは船の後方の下の方についていて、かじの方向を変えることで船の進行方向を変えられる、そんなイメージですよね。

  • でも水面に接しているかじの方向を直接変えるのはむずかしいので、「舵柄(かじづか)」があって、その柄の先に動かしやすいハンドル的ななものがつく。それで「面舵いっぱーい」とかやるってことですよね。

    • この図では船が純和風なので舵柄の先がハンドルみたいな円状にはなっていないですが、洋風の船だったらここが円状のハンドルみたいになるのかなと。
    • で、便利に船を操作するためにハンドルが必要なように、便利にKubernetesを操作するためにhelmが必要になってくる、ということなんですね。で、あのハンドルみたいなの名称は「操舵輪(そうだりん)」と言ったり、それ自体を「かじ」と言ったりするそうです。
    • ここまできて、helm=「かじ(操舵輪)」=船(Kubernetes)を便利に操作するものってイメージがつながってきました。
  • ということで改めてKubernetesのアイコンを見てみると、完全にあのハンドルの「かじ」ですよね。このアイコンだけ見るとKubernetes単体でハンドル的な「かじ」も含まれていると思ってしまいますが、この「かじ」の部分はhelmが担っていると考えると、Kubernetesのアイコンに「かじ」使っていいの?とは思いますが、もはやhelm自体がKubernetes上でアプリケーションをデプロイするための事実上の標準的ツールになっているので、そこの辺り含めてKubernetesとまとめて考えても良いのでしょう。

便利ツール「helm」の便利さとは?

  • Kubernetes上でアプリケーションを便利にデプロイできるのがhelmだ、ということは理解できましたが、どんな便利さがあるのでしょうか?これについても調べてみました。

  • これは確かにそうだなーと納得できますよね。個人的にもKubernetesを学び始めてすぐの頃は、podから始まってdeploymentを作っていき、Ingressとか、PersistentVolumeとかを1つずつyamlを作ってapplyしていったのですが、これを毎回1つずつ作ったり、それぞれのリソースを連携させたりとかは面倒だろうなーと感じていました。

    • ここでhelmを利用すれば複数のリソースをhelm install XXXXXって実行するだけで全部いい感じに作って連携までしてくれるってことだと思うと、それは便利だなぁって思いますよね。

helmのインストール

  • ということでhelmの便利さを理解し、その必要性に納得がいったところで、実際にhelmをインストールしていきます。
    • ちなみに今回利用するのはhelm3です。インストール先は踏み台サーバーです。
    • curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bashを実行するとインストールできます。
$ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash 
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed 
100 6840 100 6840 0 0 33861 0 --------------- 33694 
Downloading https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz 
Preparing to install helm into /usr/local/bin 
helm installed into /usr/local/bin/helm 
  • 確認します。helm3がインストールされました。
$ helm version 
version BuildInfo{Version: "v3.2.4", GitCommit:"8ad808ef43d3b826f31a5ad8dfbb4fe05d143688", GitTreeState: "clean", GoVersion:"g01.13.12"}
  • これで「操舵輪(ハンドル)」をゲットできたので、次はどこに船を進ませればいいかを決めるための「Charts(海図)」が必要になります。たしかに地図(海図)は大事ですよね。
  • この海図がhelm hubという場所にあるということなので、helm hubを見行きたいと思います。
  • Mattermostで検索するといくつかヒットします

  • 上記のようにブラウザ越しで確認はできましたが、今回helmを実行するのは踏み台サーバーなので、そこから見れるか以下のコマンドを実行します。

$ helm repo list 
Error: no repositories to show 
  • だめ、、、リポジトリがない。ということなのでリポジトリを追加します。
$ helm repo add stable https://kubernetes-charts.storage.googleapis.com/ 
"stable" has been added to your repositories 
  • もう一度確かめます。
$ helm repo list
NAME URL stable https://kubernetes-charts.storage.googleapis.com/
  • リポジトリの追加ができました!ではこの追加したリポジトリにMattermostのChartsが含まれているか確認します。
$ helm search repo | grep mattermost
mattermost/mattermost-enterprise-edition        1.6.0           5.25.0                                                                                                  Mattermost Enterprise server with high availiti...
mattermost/mattermost-push-proxy                0.5.0           5.22.4                                                                                                  Mattermost Push Proxy server
mattermost/mattermost-team-edition              3.13.0          5.25.0                                                                                                  Mattermost Team Edition server.
stable/mattermost-team-edition                  3.1.2           5.9.0                                                                                                   Mattermost Team Edition server.
  • ありました。いくつか種類がありますが、今回はmattermost/mattermost-team-editionを使うことにしました。

まとめ

  • helm事始め、としてhelmがなぜ必要かを確認して、その便利さを知ることができました。
  • helmのインストールとリポジトリの追加、そしてMattermostのchartsがあることを確認しました。
  • 次はmattermost/mattermost-team-editionを利用して、EKS上にMattermostを構築していきたいと思います。

関連記事