このChartを外部Gitalyで設定します。

このドキュメントでは、外部のGitalyサービスを使ってこのChartを設定する方法について説明します。

Gitalyが設定されていない場合、オンプレミスまたはVMへのデプロイのために、私たちのOmnibus GitLabパッケージの使用を検討してください。

注:外部 Gitaly_サービスは_、Gitaly ノードまたはPraefectクラスターによって提供されます。

Chartの設定

gitaly Chartとそれが提供するGitalyサービスを無効にし、他のサービスを外部サービスに向けます。

以下のプロパティを設定する必要があります:

外部のGitalyサービスは、GitLab Shellのインスタンスを利用します。 あなたの実装に応じて、このChartのシークレットでそれらを設定することもできますし、定義済みのソースのコンテンツでこのChartのシークレットを設定することもできます。

以下のプロパティを設定する必要があるかもしれません

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で通信させることができます。 そのためには、次のようにします。

  1. Gitalyサーバーの証明書を含むKubernetesシークレットを作成します。

    kubectl create secret generic gitlab-gitaly-tls-certificate --from-file=gitaly-tls.crt=<path to certificate>
    
  2. カスタム作成者のリストに外部Gitalyサーバーの証明書を追加します。 値ファイルでは、以下を指定します。

    global:
      certificates:
        customCAs:
          - secret: gitlab-gitaly-tls-certificate
    

    を使うか、helm upgrade コマンドに渡します。--set

    --set global.certificates.customCAs[0].secret=gitlab-gitaly-tls-certificate
    
  3. Gitaly TLS を有効にします。global.gitaly.tls.enabled=true

注意: 秘密の名前と鍵はどのようなものでもかまいませんが、customCAs で指定されている秘密鍵がすべて一意であることを確認してください。 秘密鍵はすべてマウントされるので、衝突を避けるためです。証明書の鍵は_クライアント側_で用意する必要はありません