K8s Nginx Lngress 常用的 9个 配置(Annotation),你知道几个?

2025-05-27 0 20

K8s Nginx Lngress 常用的 9个 配置(Annotation),你知道几个?

上一篇文章介绍了 ingress vhost这个annotation的使用,趁热打铁我们一口气介绍 9 个常用的annotation

1、ingress class

如果一个k8s 集群里面部署多个ingress controller的时候,如果配置ingress 希望指定到某个ingress controller的时候,ingress claas就发挥巨大作用了。

一方面在controller启动的时候需要通过参数指定ingress class

  1. –ingress-class=ngx-ds

另一方面,在创建ingress的时候,通过annotation指定ingress class,如下所示

  1. apiVersion:extensions/v1beta1
  2. kind:Ingress
  3. metadata:
  4. name:other-ngx-k8s
  5. namespace:other-ngx
  6. annotations:
  7. kubernetes.io/ingress.class:"ngx-ds"
  8. spec:
  9. rules:
  10. -host:other-ngx-k8s.demo.com.cn
  11. http:
  12. paths:
  13. -path:/
  14. backend:
  15. serviceName:other-ngx-k8s-ngx-svc
  16. servicePort:9001

2、 强制https

  1. apiVersion:networking.k8s.io/v1beta1
  2. kind:Ingress
  3. metadata:
  4. name:test-ingress
  5. annotations:
  6. nginx.ingress.kubernetes.io/rewrite-target:/
  7. nginx.ingress.kubernetes.io/force-ssl-redirect:"true"
  8. nginx.ingress.kubernetes.io/ssl-redirect:"true"
  9. nginx.ingress.kubernetes.io/preserve-trailing-slash:"true"
  10. spec:
  11. rules:
  12. -http:
  13. paths:
  14. -path:/testpath
  15. backend:
  16. serviceName:test
  17. servicePort:80

3、请求超时

  1. apiVersion:networking.k8s.io/v1beta1
  2. kind:Ingress
  3. metadata:
  4. name:cafe-ingress-with-annotations
  5. annotations:
  6. nginx.org/proxy-connect-timeout:"30s"
  7. nginx.org/proxy-read-timeout:"20s"
  8. spec:
  9. rules:
  10. -host:cafe.example.com
  11. http:
  12. paths:
  13. -path:/tea
  14. backend:
  15. serviceName:tea-svc
  16. servicePort:80
  17. -path:/coffee
  18. backend:
  19. serviceName:coffee-svc
  20. servicePort:80

4、跨域访问

我们经常将nginx作为api的网关,支持跨域必不可少。通过

  1. apiVersion:networking.k8s.io/v1beta1
  2. kind:Ingress
  3. metadata:
  4. name:test-ingress
  5. annotations:
  6. nginx.ingress.kubernetes.io/enable-cors:"true"
  7. nginx.ingress.kubernetes.io/cors-allow-methods:"PUT,GET,POST,OPTIONS"
  8. nginx.ingress.kubernetes.io/cors-allow-headers:"X-Forwarded-For,X-app123-XPTO"
  9. nginx.ingress.kubernetes.io/cors-expose-headers:"*,X-CustomResponseHeader"
  10. nginx.ingress.kubernetes.io/cors-max-age:600
  11. nginx.ingress.kubernetes.io/cors-allow-credentials:"false"
  12. spec:
  13. rules:
  14. -http:
  15. paths:
  16. -path:/testpath
  17. backend:
  18. serviceName:test
  19. servicePort:80

5、限流

限流也经常使用,通过 rps 限制每秒请求数,rpm 限制每分钟请求数,connections限制连接数。

  1. apiVersion:networking.k8s.io/v1beta1
  2. kind:Ingress
  3. metadata:
  4. name:test-ingress
  5. annotations:
  6. nginx.ingress.kubernetes.io/limit-rps:"5"
  7. nginx.ingress.kubernetes.io/limit-rpm:"300"
  8. nginx.ingress.kubernetes.io/limit-connections:"10"
  9. spec:
  10. rules:
  11. -http:
  12. paths:
  13. -path:/testpath
  14. backend:
  15. serviceName:test
  16. servicePort:80

6、最大body

这个主要是针对外部请求,防止将流量打满,proxy-body-size 设置最大请求 body,如果超过则会返回 413 请求错误。

  1. apiVersion:networking.k8s.io/v1beta1
  2. kind:Ingress
  3. metadata:
  4. name:test-ingress
  5. annotations:
  6. nginx.ingress.kubernetes.io/proxy-body-size:8m
  7. spec:
  8. rules:
  9. -http:
  10. paths:
  11. -path:/testpath
  12. backend:
  13. serviceName:test

7、客户端白名单

这个主要是用于安全限制,只允许特定的客户端请求,但由于现在网络中NAT的广泛应用,这个参数使用的场景比较有限。

  1. apiVersion:networking.k8s.io/v1beta1
  2. kind:Ingress
  3. metadata:
  4. name:test-ingress
  5. annotations:
  6. ingress.kubernetes.io/whitelist-source-range:"10.0.0.0/24,172.10.0.1"
  7. spec:
  8. rules:
  9. -http:
  10. paths:
  11. -path:/testpath
  12. backend:
  13. serviceName:test

8、默认服务

这个经常使用,当客户端请求一个不存在的path的时候,我们不希望返回 404 ,跳转到一个默认的服务上。

  1. apiVersion:networking.k8s.io/v1beta1
  2. kind:Ingress
  3. metadata:
  4. name:test-ingress
  5. annotations:
  6. nginx.ingress.kubernetes.io/default-backend:<svcname>
  7. spec:
  8. rules:
  9. -http:
  10. paths:
  11. -path:/testpath
  12. backend:
  13. serviceName:test

9、access log开关

nginx ingress 默认是开启access log的,如果你想关闭,可以通过将

  1. apiVersion:networking.k8s.io/v1beta1
  2. kind:Ingress
  3. metadata:
  4. name:test-ingress
  5. annotations:
  6. nginx.ingress.kubernetes.io/enable-access-log:"false"
  7. spec:
  8. rules:
  9. -http:
  10. paths:
  11. -path:/testpath
  12. backend:
  13. serviceName:test

原文链接:https://www.toutiao.com/i7048816377095864839/

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 行业资讯 K8s Nginx Lngress 常用的 9个 配置(Annotation),你知道几个? https://www.kuaiidc.com/62793.html

相关文章

发表评论
暂无评论