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
で指定したすべてのシークレットでキーが一意であることを確認してください。これは_クライアント_側なので、証明書のキーを指定する必要はありません。