これまでの復習
- EKSでMattermostを構築ということで少しずつ進めてきました。
- EKSでMattermostを構築した話:0.概要編 - Qiita
- EKSでMattermostを構築した話:1. VPC作成編 - Qiita
- EKSでMattermostを構築した話:2. EKSクラスター作成編 - Qiita
- EKSでMattermostを構築した話:3-1. EKSクラスターでアプリケーションを稼働させる前にセットアップしておくべきツール編 - Qiita
- EKSでMattermostを構築した話:3-2. EKSクラスターでアプリケーションを稼働させる前にセットアップしておくべきツール編 - Qiita
- EKSでMattermostを構築した話:4-1. Mattermostのインストール(helm理解編) - Qiita
- EKSでMattermostを構築した話:4-2. Mattermostのインストール(helm適用編) - Qiita
- Mattermost Configの設定 ←
今回はここ
MattermostのConfigを変更する
- 前回(EKSでMattermostを構築した話:4-2. Mattermostのインストール(helm適用編) - Qiita)で手元にダウンロードしたhelm chartsの
values.yaml
を編集していきます。 - 今回は他のAWSリソースと連携する箇所を編集していきたいです。
- 具体的には以下ですね。
-
S3連携
データを消失させないために、S3と連携させる -
RDS連携
データベースを切り出すために、RDSと連携させる -
SES連携
Mattermostユーザーがパスワードを忘れた際に再設定をさせるために、SESと連携させる -
EFS連携
Mattermostのプラグイン機能を実現するために、EFSと連携させる -
ALB連携
アプリケーションロードバランサーを構築するために、ALBと連携させる -
Route53連携
ALBのDNS名を自動的に指定したFQDNと紐付けるために、Route53と連携させる
-
1. S3連携
データを消失させないために、S3と連携させる
- S3との連携設定はMattermostが機能として提供してくれているので、
values.yaml
の該当箇所を変更するだけです。 - 具体的には190行目辺りの
configJSON
の中のFileSettings
という部分の★を付けた箇所です。
"FileSettings": {
"EnableFileAttachments": true,
"MaxFileSize": 52428800,
"DriverName": "amazons3",★
"Directory": "",
"EnablePublicLink": false,
"PublicLinkSalt": "",
"ThumbnailWidth": 120,
"ThumbnailHeight": 100,
"PreviewWidth": 1024,
"PreviewHeight": 0,
"ProfileWidth": 128,
"ProfileHeight": 128,
"InitialFont": "luximbi.ttf",
"AmazonS3AccessKeyId": "アクセスキーID",★
"AmazonS3SecretAccessKey": "シークレットアクセスキー",★
"AmazonS3Bucket": "バケット名",★
"AmazonS3Region": "ap-northeast-1",
"AmazonS3Endpoint": "s3.amazonaws.com",
"AmazonS3SSL": true,
"AmazonS3SignV2": true
},
- 今回は、S3用のIAMユーザーを作成してクレデンシャルを生成して、このConfigに記載するって対応をしています。が、IAMロールを使うほうがいいだろうなとは感じています、、、
補足:気付いちゃったこと
- で、ここの設定をしていて気付いたのですが、上記の
Values.yaml
の中のconfigJSON
の設定ってMattermostのシステムコンソール(管理者画面)でいうと以下の画面になるんですね。
- 上記の画面をよくみると
保存する
のボタンがグレーアウトしているんですが、分かりますか? - これ、Mattermostのシステムコンソール(管理者画面)で変更できるように見えて、実は変更できないんです、、、
- 今の設定だとこの
configJSON
がシークレットとして設定されているようで、シークレット故に変更できない、っていう状況なんですね。この辺りも考慮していく点かとは思っていますが、まだ手を付けられていないです。
- Rancherから見ると
configJSON
がシークレットとして扱われていることが分かります。
- Rancherから見ると
2. RDS連携
データベースを切り出すために、RDSと連携させる
- 次にデータベースです。デフォルトだとMySQLがdeploymentとして作られるのですが、ここをRDSにしたいです。
- 変更するのは、80行目辺りの
externalDB
です。
## If use this please disable the mysql chart by setting mysql.enable to false
externalDB:
#enabled: false
enabled: true ★
## postgres or mysql
# externalDriverType: ""
externalDriverType: "postgres" ★
## postgres: "postgres://<USERNAME>:<PASSWORD>@<HOST>:5432/<DATABASE_NAME>?sslmode=disable&connect_timeout=10"
postgres: "postgres://ユーザー名:DBパスワード@DBホスト名.xxxxxxxxx.ap-northeast-1.rds.amazonaws.com:5432/mattermost?sslmode=disable&connect_timeout=10" ★
## mysql: "<USERNAME>:<PASSWORD>@tcp(<HOST>:3306)/<DATABASE_NAME>?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s"
externalConnectionString: ""
- さらに118行目の以下の部分も変更しています。
## Additional env vars
extraEnvVars: # []★
- name: POSTGRES_DB_NAME_MATTERMOST★
value: mattermost★
- name: MM_SQLSETTINGS_DRIVERNAME★
value: "postgres"★
- name: MM_SQLSETTINGS_DATASOURCE★
value: postgres://ユーザー名:DBパスワード@DBホスト名.xxxxxxxxx.ap-northeast-1.rds.amazonaws.com:5432/mattermost?sslmode=disable&connect_timeout=10★
3. SES連携
Mattermostユーザーがパスワードを忘れた際に再設定をさせるために、SESと連携させる
- SMTPに関連する部分は314行目あたりの
EmailSettings
です。
"EmailSettings": {
"EnableSignUpWithEmail": true,
"EnableSignInWithEmail": true,
"EnableSignInWithUsername": true,
"SendEmailNotifications": true, ★
"RequireEmailVerification": false,
"FeedbackName": "mm-test-mail", ★
"FeedbackEmail": "mm-mail@srv.stylez.co.jp", ★
"FeedbackOrganization": "",
"SMTPUsername": "アクセスキーID", ★
"SMTPPassword": "SES設定時のSMTPユーザーのパスワード", ★
"EnableSMTPAuth": true, ★
"SMTPServer": "email-smtp.ap-northeast-1.amazonaws.com", ★
"SMTPPort": "465", ★
"ConnectionSecurity": "TLS", ★
"InviteSalt": "",
"SendPushNotifications": true,
"PushNotificationServer": "https://push-test.mattermost.com",
"PushNotificationContents": "generic",
"EnableEmailBatching": false,
"EmailBatchingBufferSize": 256,
"EmailBatchingInterval": 30,
"SkipServerCertificateVerification": false
}
- ここでもSESの設定をするとできるSMTPユーザー(IAMユーザーとして作成される)のクレデンシャルを直接書き込んでます。
- システムコンソールで確認すると以下の画像の部分です。
残りの設定は次に
- EFSの設定が
values.yaml
以外にも用意しないといけない部分があるので、以下の残りの3つは次回にします。- 4.
EFS連携
Mattermostのプラグイン機能を実現するために、EFSと連携させる - 5.
ALB連携
アプリケーションロードバランサーを構築するために、ALBと連携させる - 6.
Route53連携
ALBのDNS名を自動的に指定したFQDNと紐付けるために、Route53と連携させる
- 4.
まとめ
-
values.yaml
の編集をすることで理想とする構成に近づけていきました。 - 今回説明した箇所はMattermostのシステムコンソール(管理者画面)から設定変更ができる想定のものでしたが、
configJSON
がシークレットとして設定されているため、システムコンソールから変更が加えられないという状況でした。 - シークレット扱いだからこそ、クレデンシャル情報を記載することもできるのですが、もっと良い方法があるような気もします。
- また、Mattermostを運用する人が、これまでシステムコンソールで変更していた設定が、設定ファイルを変更しないといけない、しかも
values.yaml
というのは少し抵抗があるかもしれません。- この運用という観点も考慮した構成を今後は検討していきたいです。
関連記事
- EKSでMattermostを構築した話:0.概要編 - Qiita
- EKSでMattermostを構築した話:1. VPC作成編 - Qiita
- EKSでMattermostを構築した話:2. EKSクラスター作成編 - Qiita
- EKSでMattermostを構築した話:3-1. EKSクラスターでアプリケーションを稼働させる前にセットアップしておくべきツール編 - Qiita
- EKSでMattermostを構築した話:3-2. EKSクラスターでアプリケーションを稼働させる前にセットアップしておくべきツール編 - Qiita
- EKSでMattermostを構築した話:4-1. Mattermostのインストール(helm理解編) - Qiita
- EKSでMattermostを構築した話:4-2. Mattermostのインストール(helm適用編) - Qiita