❶ k8s Nginx Ingress 常用的 9個 配置(annotation)
上一篇文章介紹了 ingress vhost這個annotation的使用,趁熱打鐵我們一口氣介紹 9 個常用的annotation。
如果一個k8s 集群裡面部署多個ingress controller的時候,如果配置ingress 希望指定到某個ingress controller的時候,ingress claas就發揮巨大作用了。
一方面在controller啟動的時候需要通過參數指定ingress class
另一方面,在創建ingress的時候,通過annotation指定ingress class,如下所示
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"通過這個annotation可以強制 https,如果是http請求,會通過 301 redirect到 https。
nginx.org/proxy-connect-timeout 和nginx.org/proxy-read-timeout 這兩個參數分別設置nginx的建立連接以及等待結果的超時時間。
我們經常將nginx作為api的網關,支持跨域必不可少。通過nginx.ingress.kubernetes.io/cors-allow-methods 設置支持跨域請求的方法。
限流也經常使用,通過 rps 限制每秒請求數,rpm 限制每分鍾請求數,connections限制連接數。
這個主要是針對外部請求,防止將流量打滿,proxy-body-size 設置最大請求 body,如果超過則會返回 413 請求錯誤。
這個主要是用於安全限制,只允許特定的客戶端請求,但由於現在網路中NAT的廣泛應用,這個參數使用的場景比較有限。
這個經常使用,當客戶端請求一個不存在的path的時候,我們不希望返回 404 ,跳轉到一個默認的服務上。
nginx ingress 默認是開啟access log的,如果你想關閉,可以通過將 nginx.ingress.kubernetes.io/enable-access-log 設置成false。