外部PostgreSQLデータベース
この文書では、既にPostgreSQLデータベースを持っていることを前提としています。
もしお持ちでなければ、AWS Auroraや GCP Cloud SQLのようなクラウド提供のソリューションをご検討ください。 オンプレミスやVMへのデプロイには、Omnibus GitLabパッケージをご検討ください。
外部データベース要件
gitlab
チャートで外部データベースを使用するには、いくつかの前提条件があります。
- GitLabにはPostgreSQL 11.x以降が必要です。
- 使用する空のデータベースで、デフォルトの名前は
gitlabhq_production
です。 デフォルトの名前を変更する方法は後述します。 -
pg_trgm
、btree_gist
拡張機能が利用可能である必要があります。GitLabは両方の拡張機能がない場合、ロードを試みます。GitLabにSuperuserフラグを持つアカウントを提供していない場合、データベースのインストールを進める前にこの拡張機能がロードされていることを確認してください。 - 上記のデータベースへのフルアクセスを許可されたユーザー。
- 上記ユーザーのパスワードを含むKubernetesSecret。
- データベースがクラスターからアクセス可能であることを確認します。 ファイアウォール・ポリシーがトラフィックを許可するように設定されていることを確認します。
pg_trgm
とbtree_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.secret
gitlab
ユーザー のデータベースパスワードを含む シークレットの名前。](../../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