GitLabでSendGridを使った通知メール送信設定
GitLabからSendGrid経由でメール送信行う方法についての紹介です。
GitLab Helmチャートを使って構築した場合の手順について紹介しています。
※Azure Kubernetes Serviceに構築したGitLab環境を利用しています。
※GitLab Enterprise Edition v17.3.1-ee(Free版)を利用しています。
GitLabからSendGrid経由でメール送信
SendGridのアカウントやAPI Keyを発行
事前にSendGridのアカウント登録やメール送信用のAPI Key発行が必要です。
こちらで紹介しています。
GUI画面には設定が無い
GUI画面にはメールサーバーなどのメール送信に関する設定はありません。
設定ファイルで設定します。
Helmチャートを使ってインストールした場合は、Globalのパラメータ内で指定します。
Outgoing Email configuration
Outgoing email 
Linuxパッケージ(Omnibus)インストールの場合は、設定ファイルで指定します。
SendGrid APIキーのシークレットを作成
SendGrid APIキーのシークレットファイルを作成して保存します。
今回はgitlab-sendgrid-apikey.ymlという名前で保存しています。
| — | 
シークレットを作成します。
| kubectl apply -f gitlab-sendgrid-apikey.yml -n gitlab | 
検証用の設定です。
Secretの種類にはOpaqueを指定していますが、適時変更してください。
環境に合わせてシークレットを設定するようにします。
values.ymlの設定
values.ymlにメール送信の設定を追記します。
設定内容の詳細は公式サイトのガイドを参照ください。
| 項目 | 概要 | 設定値(例) | 
| display_name | 送信者名 | gitlab-admin(任意) | 
| from | Fromメールアドレス | from@example.com(任意) | 
| smtp | ||
| address | メールサーバーのホスト名またはIPアドレス | smtp.sendgrid.net | 
| authentication | SMTP 認証の種類 | login | 
| enabled | メール送信の有効化 | true | 
| openssl_verify_mode | TLS 検証モード | peer | 
| password | SMTPパスワードのシークレット | secret: gitlab-sendgrid-apikey key: apikey | 
| port | SMTP のポート番号 | 587 | 
| starttls_auto | STARTTLS有効化 | true | 
| user_name | SMTP認証のユーザー名 | apikey | 
values.ymlの抜粋です。
| global:   email:     display_name: gitlab-admin     from: from@example.com   smtp:     address: smtp.sendgrid.net     authentication: login     enabled: true     openssl_verify_mode : peer     password:       secret: gitlab-sendgrid-apikey       key: apikey     port: 587     starttls_auto: true     user_name: apikey | 
※from(送信メールアドレス)には、SendGridで認証されたドメインのメールアドレス、もしくは認証したメールアドレスを設定します。
設定変更内容を適用
設定変更内容を適用します。
| helm upgrade gitlab gitlab/gitlab -f values.yml -n gitlab | 
※gitlab-webservice-defaultのPodの/etc/gitlab/smtp/smtp-passwordでAPI Keyの設定値を確認できます。
ユーザーを作成してメール通知確認
GitLabにはテストメール送信の機能が無いため、ユーザー作成してメール通知を確認します。
メールを受信できれば設定が完了しています。
| ユーザーを作成してメール送信を確認 | |
| Admin areaのUsersで新規ユーザーを作成します。 |  | 
| 設定したメールアドレスで、ユーザー作成メールを受信できれば設定が完了しています。 |  | 
—広告—
最後に
GitLabからSendGridを使ってメール送信する方法について簡単にまとめてみました。
ネットワークでアクセス制限されている場合は、利用するポートでsmtp.sendgrid.netへのアクセス許可設定します。
引き続き色々試してみたいと思います。
AWXからSendGrid経由でメール送信する方法はこちらで紹介しています。
ZabbixからSendGrid経由でメール送信する方法はこちらで紹介しています。

 https://www.tama-negi.com/2021/02/20/azure-sendgrid-free/
 https://www.tama-negi.com/2021/02/20/azure-sendgrid-free/
