GitLabチャートを外部のGitalyで設定します。
このドキュメントでは、外部のGitalyサービスを使ってGitLabチャートを設定する方法を説明します。
オンプレミスやVMへのデプロイでGitalyを設定していない場合は、Linuxパッケージの利用をご検討ください。
Chartの設定
gitaly チャートとそれが提供する Gitaly サービスを無効にし、他のサービスを外部サービスに向けます。
以下のプロパティを設定する必要があります:
-
global.gitaly.enabled:Gitalyチャートを無効にするには、false。 -
global.gitaly.external:外部Gitalyサービスの配列です。 -
global.gitaly.authToken.secret:認証用のトークンを含むシークレットの名前。 -
global.gitaly.authToken.key:トークンの内容を含むシークレット内のキー。
外部のGitalyサービスはGitLab Shellのインスタンスを利用します。あなたの実装に応じて、このChartのシークレットでそれらを設定することもできますし、定義済みのソースからのコンテンツでこのChartのシークレットを設定することもできます。
以下のプロパティを設定する必要があるかもしれません:
-
global.shell.authToken.secret:GitLab Shell のシークレットを含むシークレットの名前。 -
global.shell.authToken.key:シークレットの内容を含むシークレット内のキー。
2つの外部サービス(external-gitaly.yml)を含む完全な設定例:
global:
gitaly:
enabled: false
external:
- name: default # required
hostname: node1.git.example.com # required
port: 8075 # optional, default shown
- name: praefect # required
hostname: ha.git.example.com # required
port: 2305 # Praefect uses port 2305
tlsEnabled: false # optional, overrides gitaly.tls.enabled
authToken:
secret: external-gitaly-token # required
key: token # optional, default shown
tls:
enabled: false # optional, default shown
上記の設定ファイルを使用し、gitlab.yml を介して他の設定と組み合わせてインストールした例:
helm upgrade --install gitlab gitlab/gitlab \
-f gitlab.yml \
-f external-gitaly.yml
複数の外部Gitaly
これらのChartの外部で複数のGitalyノードを使用する実装の場合、同様に複数のホストを定義することができます。構文は、必要とされる複雑さを許容するために、若干異なります。
適切な設定を示す値ファイルの例が提供されています。この値ファイルの内容は--set 引数では正しく解釈されないため、-f / --values フラグを付けて Helm に渡す必要があります。
外部GitalyへのTLS接続
外部のGitalyサーバーがTLSポートでリッスンしている場合、GitLabインスタンスをTLSで通信させることができます。これを行うには、次のようにします。
-
Gitalyサーバーの証明書を含むKubernetesシークレットを作成します。
kubectl create secret generic gitlab-gitaly-tls-certificate --from-file=gitaly-tls.crt=<path to certificate> -
外部Gitalyサーバーの証明書をカスタム認証局のリストに追加 valuesファイルで、以下を指定します。
global: certificates: customCAs: - secret: gitlab-gitaly-tls-certificateを指定するか、
helm upgradeコマンドに渡します。--set--set global.certificates.customCAs[0].secret=gitlab-gitaly-tls-certificate -
すべてのGitalyインスタンスでTLSを有効にするには、
global.gitaly.tls.enabled: true.global: gitaly: tls: enabled: trueインスタンスごとに有効にするには、そのエントリーに
tlsEnabled: true。global: gitaly: external: - name: default hostname: node1.git.example.com tlsEnabled: true
customCAs で指定したすべてのシークレットでキーが一意であることを確認してください。これは_クライアント_側なので、証明書のキーを指定する必要はありません。