使用外部 Gitaly 配置 chart

本文档旨在提供有关如何使用外部 Gitaly 服务配置此 Helm chart 的文档。

如果您没有配置 Gitaly,对于内部自有部署或部署到 VM,请考虑使用我们的 Omnibus GitLab 包

note外部 Gitaly services 可以由 Gitaly 节点提供,或者 Praefect 集群。

配置 Chart

禁用 gitaly chart 及其提供的 Gitaly 服务,并将其它服务指向外部服务。

您需要设置以下属性:

  • global.gitaly.enabled:设置为 false 以禁用包含的 Gitaly chart。
  • global.gitaly.external:这是一个外部 Gitaly 服务 的数组。
  • global.gitaly.authToken.secret包含身份验证令牌的 secret 的名称。
  • global.gitaly.authToken.key:secret 中的 key,包含令牌内容。

The external Gitaly services will make use of their own instances of GitLab Shell. Depending your implementation, you can configure those with the secrets from this chart, or you can configure this chart’s secrets with the content from a predefined source.

外部 Gitaly 服务将使用自己的 GitLab Shell 实例。 根据您的实施,您可以使用此 chart 中的 secret 配置以上属性,也可以使用来自预定义源的内容配置此 chart 的 secret。

可能需要设置以下属性:

一个完整的示例配置,带有两个外部服务(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 节点,您也可以定义多个主机。语法略有不同,以允许所需的复杂性。

An example values file is provided, which shows the appropriate set of configuration. The content of this values file is not interpreted correctly via --set arguments, so should be passed to Helm with the -f / --values flag.

提供了一个 示例值文件,其中显示了适当的配置集。这个值文件的内容没有通过 --set 参数正确解释,所以应该使用 -f / --values 标志传递给 Helm。

通过 TLS 连接外部 Gitaly

If your external Gitaly server listens over TLS port, you can make your GitLab instance communicate with it over TLS. To do this, you have to

如果您的外部 Gitaly 服务器通过 TLS 端口侦听,您可以让您的 GitLab 实例通过 TLS 与其通信。要做到这一点,你必须:

  1. 创建包含 Gitaly 服务器证书的 Kubernetes Secret

    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
    

    或使用 --set 将其传递给 helm upgrade 命令

    --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您可以为此选择任何有效的 secret 名称和键,但请确保键在 customCAs 中指定的所有 secret 中是唯一的,以避免冲突,因为 secret 中的所有键都将被挂载。 您不需要提供证书的密钥,因为这是_客户端_侧。