Ingress-nginx自定义配置文件

k8s集群默认安装的ingress-nginx直接投入测试或生产使用,其不合适的配置参数可能会导致一些访问报错。

例如:

“413 Request Entity Too Large”

“503 Service Unavailable”

此时我们就需要调整ingress-nginx的配置参数来解决问题,有以下三种方式:

ConfigMap

使用ConfigMap设置Nginx的全局配置文件

Annotations

使用Annotations设置特定的Server的配置文件,如:某个hello.test.cn

Custom Template

使用模板设置更多的特定Server的配置文件

在此只介绍下比较常见的ConfigMap、Annotations两种方式。

需求

在此主要以解决以下两个问题为例:

“413 Request Entity Too Large”

此问题为上传文件过大导致,nginx默认限制为1M,可以通过调整client_max_body_size参数解决。

upstream超时

upstream超市可能会导致502、503、504等问题,nginx默认超时时间为60s,可以通过设置proxy_read_timeout、proxy_connect_timeout、proxy_send_timeout参数解决。

ConfigMap

1. 默认配置

默认ingress-nginx的ConfigMap有以下三种并且数据都为空

其中:

三种ConfigMap都没有Data设置,因此数据定义都为空;

nginx-ingress-controller分别引用nginx-configuration、 tcp-services、 udp-services三个ConfigMap。

2.自定义设置

调整参数我们需要选择对应的ConfigMap,经过测试需要选择nginx-configuration。

注意:

使用nginx-configuration,而不是tcp-services和udp-services。

经测试,按照官网”https://kubernetes.github.io/ingress-nginx/examples/customization/custom-configuration/”设置,ConfigMap使用ingress-nginx-controller是不生效的,因为没有ingress-nginx-controller这个ConfigMap,需要使用nginx-configuration。

$ cat configmap.yamlapiVersion: v1data: proxy-connect-timeout: “10” proxy-read-timeout: “120” proxy-send-timeout: “120”kind: ConfigMapmetadata: name: ingress-nginx-controller

在此我将全局配置文件单独列出,也可以将其合并到mandatory.yaml中。

Annotations

ConfigMap适用于全局配置,但是有时我们只需要针对某个特定的站点设置,此时就需要用到Annotations。

例如:要对hello.test.cn 这个站设置client_max_body_size解决上传文件太大问题。

此时client_max_body_size只针对hello.test.cn 这个server生效,其他server仍然使用的是全局配置文件。

总结

在ingress-nginx的配置文件/etc/nginx/nginx.conf中指定了Global filters、TCP services、UDP services区域,应该分别对应三个ConfigMap。

熟悉了ingress-nginx的自定义配置后,我们就可以灵活修改配置参数了。

k8s node节点停机维护,pod如何迁移?

K8S+Jenkins实现SpringBoot项目的CI/CD

Jenkins扩展共享库进阶

Ventoy:新一代多系统启动U盘解决方案

面对中小企业的开源运维平台spug

Docker动态构建Jenkins Slave

Ingress-nginx自定义配置文件》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:https://www.hashtobe.com/1007.html