k8s (kubernetes)中ingress-nginx建议采用configmap修改全局配置,可读性更高,更加简单方便。具体具体配置参数可参考官网文档:ConfigMap - Ingress-Nginx Controller
今天第一次尝试修改配置,结果即便手工重启pod也不生效。
最终发现是因为configmap的name不对,cm name必须是ingress-nginx-controller 。
原因是在 descirbe deploy里可以看到启动pod的args里指定了
--configmap=$(POD_NAMESPACE)/ingress-nginx-controller
Containers:
controller:
Image: k8s.gcr.io/ingress-nginx/controller:v1.1.0
Ports: 80/TCP, 443/TCP, 8443/TCP
Host Ports: 80/TCP, 443/TCP, 8443/TCP
Args:
/nginx-ingress-controller
--publish-service=$(POD_NAMESPACE)/ingress-nginx-controller
--election-id=ingress-controller-leader
--controller-class=k8s.io/ingress-nginx
--configmap=$(POD_NAMESPACE)/ingress-nginx-controller
--validating-webhook=:8443
--validating-webhook-certificate=/usr/local/certificates/cert
--validating-webhook-key=/usr/local/certificates/key
下面列出修改proxy-body-size的完整configmap文件:
apiVersion: v1
kind: ConfigMap
metadata:
name: ingress-nginx-controller
data:
proxy-body-size: 10m
注意cm里的proxy-body-size指向nginx原始的配置项client_max_body_size, 注意切勿在这里直接使用client_max_body_size,kubect apply -f 后会立即自动生效并应用到每个ingress的站点配置里。
检查是否生效可以采用如下命令:
kubectl --n ingress-nginx exec -it ingress-nginx-controller-d55f7ddf5-ggsbt -- cat /etc/nginx/nginx.conf |grep body_size
可以看到类似如下结果就说明是修改成功了,默认是1m:
client_max_body_size 10m;
client_max_body_size 10m;
client_max_body_size 10m;
client_max_body_size 10m;
client_max_body_size 10m;
client_max_body_size 10m;
client_max_body_size 10m;
client_max_body_size 10m;
client_max_body_size 10m;