複数の外部データベースを使用したGitLabチャートの設定(Alpha)
デフォルトでは、GitLab はmain データベースと呼ばれる単一のアプリケーションデータベースを使用します。
GitLabを拡張するために、GitLabを複数の外部アプリケーションデータベース、すなわちmain とci を使うように設定することができます。次の図は、ポッドが複数のデータベースとどのようにやり取りするかを示しています:
前提条件:
- 外部データベースのドキュメントに記載されているすべての前提条件。
-
gitlabhq_productionデータベースと同じ PostgreSQL サーバ上で動作する、追加の空のgitlabhq_production_ciデータベース。 -
kubectl、helmCLIツールを使用したKubernetesクラスターへのアクセス。詳細については、GitLabチャートの前提条件を参照してください。
複数の外部データベースをセットアップするには
-
データベースユーザー
gitlabのPostgreSQLシークレットを保持するKubernetesシークレットを作成します。このパスワードは、異なるパスワードを持つ2つの異なる物理サーバー上に複数のデータベースを持つことをサポートするために、異なるものにすることができます。このKubernetesシークレットには
gitlab-postgresql-passwordという名前を選びましょう:kubectl create secret generic gitlab-postgresql-password \ --from-literal=main-gitlab-password=<main-database-password> \ --from-literal=ci-gitlab-password=<ci-database-password> -
GitLabチャートのデプロイに使っている既存のYAMLファイル(例えば
gitlab-values.yaml)に以下を追加し、hostの値をあなたのものに置き換えてください:global: psql: main: host: main.database.host # set this to the host of your external main database database: gitlabhq_production password: secret: gitlab-postgresql-password key: main-gitlab-password ci: host: ci.database.host # set this to the host of your external ci database. Can be the same as the one for main database database: gitlabhq_production_ci # difference in database containing CI schema, results in `database_tasks: true` as well password: secret: gitlab-postgresql-password key: ci-gitlab-password postgresql: install: falseどこに:
-
postgresql.install:falseに設定すると、内蔵データベースが無効になり、代わりに外部データベースが使用されます。 -
global.psql.main.host:外部mainデータベースのホスト名を設定します。ドメインまたは IP アドレスを指定できます。 -
global.psql.main.password.secret:PostgreSQLユーザーを保持するために使用されたKubernetesシークレットの名前。この例ではgitlab-postgresql-password。 -
global.psql.main.password.key:シークレット内の、パスワードを含むキー。この例ではmain-gitlab-passwordです。 -
global.psql.ci.host:外部のciデータベースのホスト名を設定します。ドメインでも IP アドレスでもかまいません。mainとciの両方のデータベースが同じデータベースサーバー上にある場合は、global.psql.main.hostと同じ値にすることができます。 -
global.psql.ci.password.secret:PostgreSQLユーザーを保持するために使用されたKubernetesシークレットの名前。この例ではgitlab-postgresql-password。 -
global.psql.ci.password.key:シークレット内の、パスワードを含むキー。この例ではci-gitlab-passwordです。
-
-
最後に、
gitlab-values.yamlを使って GitLab チャートをデプロイします:helm repo add gitlab https://charts.gitlab.io/ helm repo update helm upgrade --install gitlab gitlab/gitlab --timeout=900s -f gitlab-values.yaml