複数の外部データベースを使用したGitLabチャートの設定(Alpha)
デフォルトでは、GitLab はmain
データベースと呼ばれる単一のアプリケーションデータベースを使用します。
GitLabを拡張するために、GitLabを複数の外部アプリケーションデータベース、すなわちmain
とci
を使うように設定することができます。次の図は、ポッドが複数のデータベースとどのようにやり取りするかを示しています:
前提条件:
- 外部データベースのドキュメントに記載されているすべての前提条件。
-
gitlabhq_production
データベースと同じ PostgreSQL サーバ上で動作する、追加の空のgitlabhq_production_ci
データベース。 -
kubectl
、helm
CLIツールを使用した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