使用 NGINX

  • Tier: 基础版,专业版,旗舰版
  • Offering: 私有化部署

我们提供了一个完整的 NGINX 部署,用作 Ingress 控制器。并非所有的 Kubernetes 提供商都原生支持 NGINX Ingress,以确保兼容性。

我们的 NGINX chart fork 是从 GitHub 提取的。详情请参阅 我们的 NGINX fork,了解我们在 fork 中进行了哪些修改。

只能有一个 global.hosts.domain 值。

配置 NGINX#

有关配置详情,请参阅 NGINX chart文档

全局设置#

我们在chart中共享了一些常见的全局设置。请参阅 全局文档,了解常见的配置选项,例如极狐GitLab 和注册表的主机名。

使用全局设置配置主机#

极狐GitLab 服务器和注册表服务器的主机名可以使用我们的 全局设置 chart进行配置。

极狐GitLab Geo#

第二个 NGINX 子chart已捆绑并为极狐GitLab Geo 流量预配置,它支持与默认控制器相同的设置。可以通过 nginx-ingress-geo.enabled=true 启用控制器。

此控制器配置为不修改任何传入的 X-Forwarded-* 标头。如果您希望为 Geo 流量使用不同的提供商,请确保执行相同的操作。

默认控制器值 (nginx-ingress-geo.controller.ingressClassResource.controllerValue) 设置为 k8s.io/nginx-ingress-geo,IngressClass 名称为 {ReleaseName}-nginx-geo,以避免与默认控制器的干扰。可以使用 global.geo.ingressClass 重写 IngressClass 名称。

自定义标头处理仅对主要 Geo 站点所需,以处理从次要站点转发的流量。只有在站点即将提升为主要站点时,才需要在次要站点上使用。

请注意,在故障转移期间更改 IngressClass 将导致其他控制器处理传入流量。由于其他控制器具有不同的负载均衡器 IP 分配,这可能需要对 DNS 配置进行额外更改。

可以通过在所有 Geo 站点上启用 Geo Ingress 控制器并配置默认和额外的 web 服务 Ingress 以使用相关的 IngressClass (useGeoClass=true) 来避免这种情况。

注释值词块列表#

History
    • 在极狐GitLab Helm chart 6.6中引入。

在需要更大控制生成的 NGINX 配置的情况下,NGINX Ingress 允许使用 配置片段,插入标准注释和 ConfigMap 条目未涉及的原始 NGINX 配置的“片段”。

这些配置片段的缺点是允许集群操作员部署包括 LUA 脚本和类似配置的 Ingress 对象,这可能会危及极狐GitLab 安装和集群本身的安全性,包括暴露服务账户令牌和密钥。

为了缓解 Helm chart部署极狐GitLab 中的 CVE-2021-25742,我们使用 nginx-ingress 社区建议的设置 设置了一个 annotation-value-word-blocklist

如果您在极狐GitLab Ingress 配置中使用了配置片段,或者使用极狐GitLab NGINX Ingress 控制器与使用配置片段的第三方 Ingress 对象,您可能会在尝试访问极狐GitLab 第三方域时遇到 404 错误,并在 nginx-controller 日志中看到“无效词”错误。在这种情况下,请审查并调整您的 nginx-ingress.controller.config.annotation-value-word-blocklist 设置。

另请参阅 nginx-controller 日志中的“无效词”错误和我们的chart疑难解答文档中的 404 错误