2021年1月21日木曜日

Omnibus Gitlab で外部の nginx と連携する方法

概要

Omnibus Gitlab にはデフォルトで nginx が付属しています
証明書や gitlab_workhorse へのプロキシをしてくれています
今回は付属の nginx を無効にして別の Ubuntu にインストールした nginx と Omnibus Gitlab を連携してみました

環境

  • Gitlab-ee 13.7.3
  • nginx 1.14.0 (on Ubuntu)

nginx の準備

今回は Ubuntu18 を準備してインストールしました
Apache Httpd などで代替することも可能です


* apt -y install nginx
* rm /etc/nginx/sites-enabled/default
* cd /etc/nginx/conf.d
* wget 'https://gitlab.com/gitlab-org/gitlab-recipes/-/raw/master/web-server/nginx/gitlab-omnibus-nginx.conf'
* vim /etc/nginx/conf.d/gitlab-omnibus-nginx.conf


upstream gitlab-workhorse {
  server 192.168.100.11:8081;
}


* systemctl daemon-reload
* systemctl restart nginx

デフォルトのコンフィグファイルを削除して Gitlab が配布している nginx の設定ファイルを配置します
一箇所だけ書き換える場所があり upstream の server 定義を後述する Omnibus Gitlab の gitlab_workhorse の LISTEN アドレスとポートに変更する必要があります
ここはデフォルトだとソケット通信になっているため tcp でのアクセスに変更する必要があります

gitlab.rb の編集

次に Omnibus Gitlab 側の設定変更をします
Omnibus Gitlab も Ubuntu にインストールしています

  • vim /etc/gitlab/gitlab.rb


external_url 'http://192.168.100.10'
nginx['enable'] = false

gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "0.0.0.0:8081"
web_server['external_users'] = ['www-data']
gitlab_rails['trusted_proxies'] = ['192.168.100.10']


192.168.100.10 は nginx 側の IP になります
nginx は false にしましょう
そして gitlab_workhorselisten_addr0.0.0.0:8081 にして外部から接続できるようにします
web_server['external_users'] は nginx を apt でインストールしたい際のデフォルトユーザである www-data を指定します
gitlab_rails['trusted_proxies'] は信頼する外部からのプロキシの IP or CIDR を指定するので事前に作成した nginx の IP を記載しましょう
設定が完了したら reconfigure をかけます

  • gitlab-ctl reconfigure

動作確認

nginx 側の IP にブラウザからアクセスして Gitlab が動作することを確認しましょう
また Omnibus Gitlab の IP にアクセスしてアクセスできないことを確認しましょう

最後に

Omnibus Gitlab の nginx を外部に移行する方法を紹介しました
インスタンスを別にすることで管理もしやすくなると思います
また今回の設定は application_role な Gitlab をスケールするための最低限の設定になるので大規模な Gitlab を運用する場合には必須になるかなと思います

参考サイト

0 件のコメント:

コメントを投稿