使用外部 Gitaly 配置 chart
本文档旨在提供有关如何使用外部 Gitaly 服务配置此 Helm chart 的文档。
如果您没有配置 Gitaly,对于内部自有部署或部署到 VM,请考虑使用我们的 Omnibus GitLab 包。
配置 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。
您可能需要设置以下属性:
-
global.shell.authToken.secret
:包含 GitLab Shell secret 的 secret 名称。 -
global.shell.authToken.key
:secret 中的 key,包含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-jh/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 与其通信。要做到这一点,你必须:
-
创建包含 Gitaly 服务器证书的 Kubernetes Secret
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
或使用
--set
将其传递给helm upgrade
命令--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
中指定的所有 secret 中是唯一的,以避免冲突,因为 secret 中的所有键都将被挂载。 您不需要提供证书的密钥,因为这是_客户端_侧。