Kubernetes Ingress-Nginx ConfigMap 配置完全指南
什么是 ConfigMap
ConfigMap 是 Kubernetes 中用于存储非敏感配置数据的 API 对象,它以键值对的形式保存配置信息。在 Ingress-Nginx 项目中,ConfigMap 被用来动态配置 Nginx 控制器的各种参数,使得我们可以灵活调整 Nginx 的行为而无需重新构建容器镜像。
ConfigMap 基本使用
要覆盖 Ingress-Nginx 的默认配置,只需在 ConfigMap 的 data 部分添加相应的键值对。例如:
data:
map-hash-bucket-size: "128"
ssl-protocols: SSLv2
重要注意事项:
- ConfigMap 中的所有值都必须是字符串类型
- 布尔值需要用引号包裹,如 "true" 或 "false"
- 数字也需要用引号包裹,如 "100"
- 数组类型(如
[]string)可以用逗号分隔的字符串表示
核心配置参数详解
日志相关配置
| 参数名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| access-log-path | string | "/var/log/nginx/access.log" | 访问日志文件路径 |
| error-log-path | string | "/var/log/nginx/error.log" | 错误日志文件路径 |
| error-log-level | string | "notice" | 错误日志级别 |
| disable-access-log | bool | "false" | 是否禁用访问日志 |
日志级别可选值包括:debug, info, notice, warn, error, crit, alert, emerg
性能调优参数
| 参数名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| client-header-buffer-size | string | "1k" | 客户端请求头缓冲区大小 |
| client-body-buffer-size | string | "8k" | 客户端请求体缓冲区大小 |
| client-header-timeout | int | 60 | 读取客户端请求头的超时时间(秒) |
| client-body-timeout | int | 60 | 读取客户端请求体的超时时间(秒) |
安全相关配置
| 参数名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| enable-modsecurity | bool | "false" | 是否启用 ModSecurity WAF |
| enable-owasp-modsecurity-crs | bool | "false" | 是否启用 OWASP ModSecurity 核心规则集 |
| allow-snippet-annotations | bool | "false" | 是否允许使用 Nginx 代码片段注解 |
| annotations-risk-level | string | "High" | 注解风险级别 |
高级功能配置
| 参数名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| enable-ocsp | bool | "false" | 是否启用 OCSP 装订 |
| retry-non-idempotent | bool | "false" | 是否对非幂等请求进行重试 |
| disable-ipv6 | bool | "false" | 是否禁用 IPv6 |
| enable-underscores-in-headers | bool | "false" | 是否允许请求头中使用下划线 |
最佳实践建议
-
性能调优:根据实际流量情况调整缓冲区大小和超时时间,高并发场景可适当增大缓冲区
-
安全配置:
- 生产环境建议启用 ModSecurity 和 OWASP CRS
- 谨慎使用 allow-snippet-annotations,可能带来安全风险
-
日志管理:
- 生产环境建议保留访问日志用于审计
- 调试时可临时将日志级别设为 debug
-
兼容性配置:
- 如需支持旧客户端,可能需要调整 ssl-protocols
- 某些特殊应用可能需要启用 enable-underscores-in-headers
配置示例
以下是一个生产环境推荐的 ConfigMap 配置示例:
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-configuration
namespace: ingress-nginx
data:
client-header-buffer-size: "4k"
client-body-buffer-size: "16k"
error-log-level: "warn"
enable-modsecurity: "true"
enable-owasp-modsecurity-crs: "true"
allow-snippet-annotations: "false"
通过合理配置这些参数,您可以优化 Ingress-Nginx 的性能、安全性和可用性,使其更好地适应您的业务需求。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



