外部のPostgreSQLサービスを使ったGitLabの設定
GitLabをクラウドプロバイダーでホストしている場合、オプションでPostgreSQLのマネージドサービスを使うことができます。例えば、AWSはPostgreSQLを実行するマネージドRelational Database Service(RDS) を提供しています。
あるいは、Linuxパッケージとは別に自分のPostgreSQLインスタンスやクラスターを管理することもできます。
クラウドマネージドサービスを利用したり、独自のPostgreSQLインスタンスを提供したりする場合です:
- データベース要件文書に従って PostgreSQL をセットアップします。
-
gitlab
ユーザーを任意のパスワードで設定し、gitlabhq_production
データベースを作成し、そのユーザーをデータベースのオーナーにします。このセットアップの例は、セルフコンパイルのインストール・ドキュメントで見ることができます。 - クラウド管理サービスを使用している場合は、
gitlab
ユーザーに追加のロールを付与する必要があるかもしれません:- Amazon RDSでは、
rds_superuser
ロールが必要です。 - Azure Database for PostgreSQL には
azure_pg_admin
ロールが必要です。Azure Database for PostgreSQL - Flexible Serverでは、インストール前に拡張機能のallow-listingが必要です。 - Google Cloud SQL には
cloudsqlsuperuser
ロールが必要です。
これは、インストールやアップグレードの際に拡張機能をインストールするためのものです。別の方法として、エクステンションが手動でインストールされていることを確認し、将来のGitLabアップグレード時に発生する可能性のある問題についてお読みください。
- Amazon RDSでは、
-
GitLabアプリケーションサーバーを設定し、
/etc/gitlab/gitlab.rb
ファイルで外部PostgreSQLサービスの適切な接続詳細を設定します:# Disable the bundled Omnibus provided PostgreSQL postgresql['enable'] = false # PostgreSQL connection details gitlab_rails['db_adapter'] = 'postgresql' gitlab_rails['db_encoding'] = 'unicode' gitlab_rails['db_host'] = '10.1.0.5' # IP/hostname of database server gitlab_rails['db_password'] = 'DB password'
GitLabの複数ノードセットアップの詳細については、リファレンスアーキテクチャを参照してください。
-
変更を有効にするために再設定します:
sudo gitlab-ctl reconfigure
トラブルシューティング
SSL SYSCALL error: EOF detected
エラーの解決
外部のPostgreSQLインスタンスを使用している場合、以下のようなエラーが表示されることがあります:
pg_dump: error: Error message from server: SSL SYSCALL error: EOF detected
このエラーを解決するには、PostgreSQLの最小要件を満たしていることを確認してください。RDSインスタンスを適切なバージョンにアップグレードすると、このエラーなしでバックアップを実行できるようになります。詳細については、イシュー#64763 (Segmentation fault citingLooseForeignKeys::CleanupWorker
causes complete database restart) を参照してください。