使用 NGINX
我们提供完整的 NGINX 部署用作 Ingress Controller。并非所有 Kubernetes 提供商都原生支持 NGINX Ingress 以确保兼容性。
global.hosts.domain
值。
配置 NGINX
查看 NGINX chart 文档,获取有关配置的详细信息。
全局设置
我们的 chart 之间共享一些通用的全局设置。请查看 全局配置文档 了解常见的配置项,例如 GitLab 和 Registry 组件服务器的主机名。
使用全局设置配置主机
GitLab 和 Registry 组件服务器的主机名可以使用全局配置。
极狐GitLab Geo
第二个 NGINX 子图针对极狐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
以避免干扰使用默认控制器。
IngressClass 名称可以使用 global.geo.ingressClass
覆盖。
仅主要 Geo 站点需要自定义标头来处理从次要站点转发的流量。如果站点即将升级为主要站点,则仅需要在次要站点上使用。
请注意,在故障转移期间更改 IngressClass 将导致另一个控制器处理传入流量。由于另一个控制器分配了不同的负载均衡器 IP,因此可能需要对 DNS 配置进行其他更改。
要避免这种情况,您可以通过在所有 Geo 站点上启用 Geo Ingress 控制器并配置默认和额外的 webservice Ingress 以使用关联的 IngressClass (useGeoClass=true
)。
Annotation 值词块列表
引入于极狐GitLab Helm chart 6.6。
在集群操作员需要更好地控制生成的 NGINX 配置的情况下,NGINX Ingress 允许配置片段,插入标准注释和 ConfigMap 条目未解决的原始 NGINX 配置的“片段”。
这些配置片段的缺点是它允许集群操作员部署包含 LUA 脚本和类似配置的 Ingress 对象,这些配置可能会危及极狐GitLab 安装和集群本身的安全性,包括暴露服务账户令牌和 secret。
请参阅 CVE-2021-25742 和此上游 ingress-nginx
问题来获取更多详细信息。
为了规避极狐GitLab 的 Helm chart 部署中的 CVE-2021-25742 - 我们使用 nginx-ingress
社区的建议,设置 annotation-value-word-blocklist。
如果您在极狐GitLab Ingress 配置中使用配置片段,或者将极狐GitLab NGINX Ingress Controller 与使用配置片段的第三方 Ingress 对象一起使用,则在尝试访问极狐GitLab 第三方域名时可能会遇到 404
错误,以及 nginx-controller
日志中的 “invalid word” 错误。在这种情况下,请检查并调整您的 nginx-ingress.controller.config.annotation-value-word-blocklist
设置。