在哪里可以找到为 nginx.ingress.kubernetes.io/affinity 注释生成的配置



设置以下注释时:

nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "ALPHA"
nginx.ingress.kubernetes.io/session-cookie-path: /

他们最终在nginx.conf中在哪里?

我正在使用difftool比较nginx.conf之前和之后,但配置是相同的。

如果我例如添加一个:

nginx.ingress.kubernetes.io/rewrite-target /$1

nginx.conf 得到更新。

结果:

rewrite "(?i)/myapp(/|$)(.*)" /$2 break;

简短的回答是,这些设置存在于nginx-ingress使用的lua nginx模块的内存中。

有关其工作原理的较长答案和解释,请参见 https://kubernetes.github.io/ingress-nginx/how-it-works 的文档。特别:

但请务必注意,我们不会在仅影响上游配置的更改(即部署应用时端点更改)时重新加载 Nginx。我们使用 https://github.com/openresty/lua-nginx-module 来实现这一点。请查看以下内容以了解有关其完成方式的更多信息。

下面引用的部分随后提到:

在每个端点更改时,控制器都会从它看到的所有服务中获取端点,并生成相应的后端对象。然后,它将这些对象发送到在 Nginx 中运行的 Lua 处理程序。Lua 代码反过来将这些后端存储在共享内存区域中。然后balancer_by_lua,对于在上下文中运行的每个请求,Lua 代码会检测它应该从哪些端点中选择上游对等体,并应用配置的负载均衡算法来选择对等方。

有问题的后端对象具有会话和 Cookie 信息。接收此消息的代码位于 https://github.com/kubernetes/ingress-nginx/blob/57a0542fa356c49a6afb762cddf0c7dbf0b156dd/rootfs/etc/nginx/lua/balancer/sticky.lua#L151-L166。特别是,同步函数中有这样一行:

ngx_log(INFO, string_format("[%s] nodes have changed for backend %s", self.name, backend.name))

这表明在对后端进行此类更改时,您应该在nginx日志中看到更改的日志条目。

相关内容

  • 没有找到相关文章

最新更新