GitLabでのオブジェクトストレージ利用の設定方法
概要
GitLabで、ファイルをオブジェクトストレージへ保存するようにしました。その設定方法について説明します。
環境
- GitLab 15.8
GitLabのオブジェクトストレージ利用
GitLabでは、LFSでのファイルやCIでのartifactなどのファイルをオブジェクトストレージに保存することができます。
私はVPSにGitLabをインストールして使っているのですが、VPSに割り当てられているストレージのサイズが小さいためオブジェクトストレージを利用しています。
ここでは、GitLabでオブジェクトストレージを使う方法について紹介します。
私が利用しているオブジェクトストレージは、Wasabiです。S3互換のオブジェクトストレージで、今回のGitLabでも使うことができます。
設定
GitLabでオブジェクトストレージを使う場合、/etc/gitlab/gitlab.rb
などの設定ファイルを編集します。
編集時には、オブジェクトストレージのバケット名やアクセスのためのアクセスキーが必要となるので、あらかじめ準備します。
編集する箇所は次です。
gitlab_rails['object_store']['enabled'] = true
gitlab_rails['object_store']['connection'] = {
'provider' => 'AWS',
'region' => 'ap-northeast-1',
'aws_access_key_id' => '<ACCESS_KEY_ID>',
'aws_secret_access_key' => '<SECRET_ACCESS_KEY>',
'endpoint' => 'https://s3.ap-northeast-1.wasabisys.com/'
}
gitlab_rails['object_store']['storage_options'] = {}
gitlab_rails['object_store']['proxy_download'] = true
gitlab_rails['object_store']['objects']['artifacts']['bucket'] = '<バケット名>'
gitlab_rails['object_store']['objects']['external_diffs']['bucket'] = '<バケット名>'
gitlab_rails['object_store']['objects']['lfs']['bucket'] = '<バケット名>'
gitlab_rails['object_store']['objects']['uploads']['bucket'] = '<バケット名>'
gitlab_rails['object_store']['objects']['packages']['bucket'] = '<バケット名>'
gitlab_rails['object_store']['objects']['dependency_proxy']['bucket'] = '<バケット名>'
gitlab_rails['object_store']['objects']['terraform_state']['bucket'] = '<バケット名>'
gitlab_rails['object_store']['objects']['ci_secure_files']['bucket'] = '<バケット名>'
gitlab_rails['object_store']['objects']['pages']['bucket'] = '<バケット名>'
<ACCESS_KEY_ID>や<SECRET_ACCESS_KEY>の部分には、それぞれの環境に合ったオブジェクトストレージへのアクセスのための値を記述します。
endpointの部分は私が利用しているWasabiのものを記述しています。それぞれの環境に合わせて書き換える必要があります。
gitlab_rails[‘object_store’][‘objects’]以下には、オブジェクトストレージのバケット名を記入します。それぞれの役割毎にバケットを分けるため、たくさんのバケットを作成する必要があります。私はここの部分ではまりました。バケット名をちゃんと指定していないと、GitLabの起動に失敗するので、ちゃんと設定するようにします。
これで、設定は終わりです。最後に設定を反映させます。
sudo gitlab-ctl reconfigure
もしも、このコマンドを実行したときに、Warningやerrorが発生したときは、オブジェクトストレージのバケットにアクセスできない可能性があります。バケット名が間違っていないか、アクセス可能なIDやKEYを設定しているのか確認します。
さいごに
他にもバックアップを保存したりもできるのですが、これは設定箇所が別にあり、一括で設定できないものになっています。そのため、ここでは設定方法を紹介していません。
私は一部のデータだけオブジェクトストレージに保存しようとしたのですが、エラーが発生してGitLabがダウンしてしまいました。そこで、全てのデータをオブジェクトストレージへ保存するようにしたら正常に動くようになりました。
同じようなことをしたい人の参考になれば嬉しいです。