外部PostgreSQLデータベース

この文書では、既にPostgreSQLデータベースを持っていることを前提としています。

もしお持ちでなければ、AWS Auroraや GCP Cloud SQLのようなクラウド提供のソリューションをご検討ください。 オンプレミスやVMへのデプロイには、Omnibus GitLabパッケージをご検討ください。

外部データベース要件

gitlab チャートで外部データベースを使用するには、いくつかの前提条件があります。

  1. GitLabにはPostgreSQL 11.x以降が必要です。
  2. 使用する空のデータベースで、デフォルトの名前はgitlabhq_productionです。 デフォルトの名前を変更する方法は後述します。
  3. pg_trgmbtree_gist 拡張機能が利用可能である必要があります。GitLabは両方の拡張機能がない場合、ロードを試みます。GitLabにSuperuserフラグを持つアカウントを提供していない場合、データベースのインストールを進める前にこの拡張機能がロードされていることを確認してください。
  4. 上記のデータベースへのフルアクセスを許可されたユーザー。
  5. 上記ユーザーのパスワードを含むKubernetesSecret
  6. データベースがクラスターからアクセス可能であることを確認します。 ファイアウォール・ポリシーがトラフィックを許可するように設定されていることを確認します。
注:pg_trgmbtree_gist の拡張機能をGitLabデータベースに追加する必要があります。つまり、CREATE EXTENSION コマンドはPostgreSQLのデフォルトデータベースではなく、GitLabデータベース(デフォルトではgitlabhq_production)に接続した状態で実行する必要があります。

PostgreSQLをロードバランシングクラスタとして使用し、サービスディスカバリにKubernetes DNSを使用することを計画している場合、bitnami/postgresql チャートをインストールする際に、--set slave.service.clusterIP=Noneと共にインストールすることを推奨します。 これにより、PostgreSQLセカンダリサービスがヘッドレスサービスとして適切にセットアップされ、各セカンダリインスタンスに対してDNS Aレコードが作成されるようになります。 サービスディスカバリにKubernetes DNSを使用する例については、examples/database/values-loadbalancing-discover.yamlファイルを確認してください。

外部データベースを使用するためのgitlab の設定

以下のパラメータを設定する必要があります:

  • postgresql.install:false に設定すると、内部データベースが無効になります。
  • global.psql.host外部データベースのホスト名(ドメインまたはIPアドレス)を設定します。
  • global.psql.password.secretgitlab ユーザー のデータベースパスワードを含む シークレットの名前。](../../installation/secrets.md#postgresql-password)[
  • global.psql.password.keyパスワードはエンコードされていない値でなければなりません。

以下の項目は、デフォルトを使用しない場合、さらにカスタマイズすることができます:

  • global.psql.portデフォルトは5432です。
  • global.psql.databaseデータベースの名前。
  • global.psql.usernameデータベースにアクセスできるユーザー。

データベースへの相互TLS接続を使用する場合:

  • global.psql.ssl.secretクライアント証明書、鍵、作成者を含む秘密鍵。
  • global.psql.ssl.serverCA作成者が参照するシークレット内部のキー(CA).
  • global.psql.ssl.clientCertificateクライアント証明書を参照するシークレット内のキー。
  • global.psql.ssl.clientKey秘密の中のクライアント。

例えば、デプロイ時にHelmの--set フラグでこれらの値を渡します:

helm install gitlab gitlab/gitlab
  --set postgresql.install=false
  --set global.psql.host=psql.example
  --set global.psql.password.secret=gitlab-postgresql-password
  --set global.psql.password.key=postgres-password