このChartを外部Gitalyで設定します。
このドキュメントでは、外部のGitalyサービスを使ってこのChartを設定する方法について説明します。
Gitalyが設定されていない場合、オンプレミスまたはVMへのデプロイのために、私たちのOmnibus GitLabパッケージの使用を検討してください。
Chartの設定
gitaly
Chartとそれが提供する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
authToken:
secret: external-gitaly-token # required
key: token # 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サーバーの証明書を追加します。 値ファイルでは、以下を指定します。
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
customCAs
で指定されている秘密鍵がすべて一意であることを確認してください。 秘密鍵はすべてマウントされるので、衝突を避けるためです。証明書の鍵は_クライアント側_で用意する必要はありません。