使用外部 NGINX Ingres Controller 配置极狐GitLab chart

外部 Ingress 控制器中的 TCP 服务#

极狐 GitLab Shell 组件需要 TCP 流量通过端口 22(默认情况下;可以更改)。Ingress 不直接支持 TCP 服务,因此需要进行一些额外的配置。您的 NGINX Ingress 控制器可能已直接部署(即使用 Kubernetes 规范文件)或通过官方 Helm chart部署。TCP 透传的配置将根据部署方式而有所不同。

直接部署#

在直接部署中,NGINX Ingress 控制器使用 ConfigMap 来配置 TCP 服务。假设您的极狐 GitLab chart 部署在命名空间 gitlab 中,且您的 Helm 发布名称为 mygitlab,那么您的 ConfigMap 应该如下所示:

yaml
1apiVersion: v1 2kind: ConfigMap 3metadata: 4 name: tcp-configmap-example 5data: 6 22: "gitlab/mygitlab-gitlab-shell:22"

在拥有该 ConfigMap 之后,您可以按照 NGINX Ingress 控制器文档中描述的使用 --tcp-services-configmap 选项启用它。

yaml
args: - /nginx-ingress-controller - --tcp-services-configmap=gitlab/tcp-configmap-example

最后,请确保您的 NGINX Ingress 控制器的 Service 除了端口 80 和 443 外,还公开端口 22。

Helm 部署#

如果您已经安装或计划使用 Helm chart 安装 NGINX Ingress 控制器,则需要使用命令行向 chart 添加一个值:

shell
--set tcp.22="gitlab/mygitlab-gitlab-shell:22"

或使用 values.yaml 文件:

yaml
tcp: 22: "gitlab/mygitlab-gitlab-shell:22"

该值的格式与上面“直接部署”部分中描述的相同。

自定义极狐 GitLab Ingress 选项#

NGINX Ingress 控制器使用注解来标记哪个 Ingress 控制器将服务于特定的 Ingress。您可以使用 global.ingress.class 设置来配置此 chart 使用的 Ingress 类。确保在您的 Helm 选项中设置此项。

shell
--set global.ingress.class=myingressclass

虽然不一定是必需的,但如果您使用的是外部 Ingress 控制器,您可能希望禁用此 chart 默认部署的 Ingress 控制器:

shell
--set nginx-ingress.enabled=false

自定义证书管理#

您的 TLS 选项的完整范围在其他地方有记录。

如果您使用的是外部 Ingress 控制器,您可能还在使用外部 cert-manager 实例或以其他自定义方式管理您的证书。有关您的 TLS 选项的完整文档在这里,但为了讨论的目的,这里是需要设置的两个值,用于禁用 cert-manager chart 并告诉极狐 GitLab 组件 charts 不查找内置证书资源:

shell
--set certmanager.install=false --set global.ingress.configureCertmanager=false