如何在 Kubernetes 中编辑 Nginx Ingress 配置?

我需要为 Kubernetes Ingress 安装实现日志记录,以便所有请求都记录以下细节:

  • 请求头
  • 请求正文
  • 响应头
  • 响应正文

我了解到,我可以使用 ConfigMap 编辑 Nginx 的 log_format,但是,为了记录响应正文,我需要使用 lua(类似 这样)。

在这种情况下,我应该有可能将此 lua 代码添加到 nginx 配置的每个服务器部分中。最简单的方法是什么?

谢谢!

点赞
用户563072
用户563072

为了能够使用 ConfigMap 配置 nginx Ingress 控制器,你需要创建一个包含这些值的 ConfigMap

nginx Ingress 控制器将使用你在 ConfigMap 的 LogFormat 键中指定的任何值。因此,您应该能够编辑 ConfigMap 并更改 LogFormat 键以指定所需的格式。我实际上没有尝试过这个命令,但它应该是这样的:

kubectl patch configmap nginx-config -p '{"LogFormat":\'$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_time <"$request_body" >"$resp_body"\'}'
2017-12-22 13:22:17
用户1198930
用户1198930

我认为我找到了解决方案。我需要使用自定义nginx模板。一般来说,步骤应该如下:

  1. 从位于/etc/nginx/template/nginx.tmpl的ingress-nginx控制器获取nginx.tmpl
  2. 根据您的需求进行编辑
  3. 通过卷进行映射

详细说明在这里

2018-01-14 12:42:21