GitLabチャートを外部のGitalyで設定します。

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

オンプレミスやVMへのデプロイでGitalyを設定していない場合は、Linuxパッケージの利用をご検討ください。

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

Chartの設定

gitaly チャートとそれが提供する 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
        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で通信させることができます。これを行うには、次のようにします。

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

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

    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.

    global:
      gitaly:
        tls:
          enabled: true
    

    インスタンスごとに有効にするには、そのエントリーにtlsEnabled: true

    global:
      gitaly:
        external:
          - name: default
            hostname: node1.git.example.com
            tlsEnabled: true
    
note
この場合、有効なシークレット名とキーを任意に選択できますが、シークレット内のすべてのキーがマウントされるため、衝突を避けるためにcustomCAs で指定したすべてのシークレットでキーが一意であることを確認してください。これは_クライアント_側なので、証明書のキーを指定する必要はありません