使用 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 错误。