【K8s】专题七(4):Kubernetes 服务发现之 Ingress 进阶

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!

公众号二维码


目录

一、官方文档

二、Ingress 进阶使用(示例)

1、Ingress 实现重定向

2、Ingress 实现路由跳转

3、Ingress 实现自定义配置

4、Ingress 实现 CORS

5、Ingress 实现限流

三、Ingress 配置注意事项


一、官方文档

Ingress Controllers | Kubernetes

Ingress | Kubernetes

Command line arguments - Ingress-Nginx Controller

ConfigMap - Ingress-Nginx Controller


二、Ingress 进阶使用(示例)
1、Ingress 实现重定向

该功能等价于 Nginx 配置中的 return 语句。

...
kind: Ingress
metadata:
  annotations:
    # 当客户端请求的 path 匹配到时,强制重定向至指定地址
    nginx.ingress.kubernetes.io/permanent-redirect: http://demo.com
    # 指定重定向状态码
    nginx.ingress.kubernetes.io/permanent-redirect-code: "301"
    # 当客户端请求的 path 匹配到时,重定向至 HTTPS
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    # 不管客户端请求的 path 是否匹配到,强制重定向至 HTTPS
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
...

2、Ingress 实现路由跳转

该功能等价于 Nginx 配置中的 rewrite 语句。

...
kind: Ingress
metadata:
  annotations:
    # 当客户端请求的 path 匹配到时,跳转至指定路由,$2 代表第二个括号的占位符
    nginx.ingress.kubernetes.io/rewrite-target: /$2
...
spec:
...
       /api(/|$)(.*)
...

3、Ingress 实现自定义配置
...
kind: Ingress
metadata:
  annotations:
    # 插入 location 块配置片段
    nginx.ingress.kubernetes.io/configuration-snippet: |
      rewrite /api/($/.*) /$1 break ;
    # 插入 server 块配置片段
    nginx.ingress.kubernetes.io/server-snippet: |
      server_name demo.com ;
...

4、Ingress 实现 CORS

CORS(跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了其本身以外的其它 origin(域、协议和端口),使得浏览器可以访问加载这些资源。

...
kind: Ingress
metadata:
  annotations:
    # 允许 CORS
    nginx.ingress.kubernetes.io/enable-cors: "true"
    # 指定允许的请求源,默认为 *
    nginx.ingress.kubernetes.io/cors-allow-origin: "http://demo.com"
    # 指定允许的请求方法
    nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS, DELETE"
    # 指定允许的请求头
    nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,X-CustomHeader,X-LANG,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Api-Key,X-Device-Id,Access-Control-Allow-Origin"
    # 指定允许传递凭证
    nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
...

5、Ingress 实现限流
...
kind: Ingress
metadata:
  annotations:
    # 单个 IP 地址允许的并发连接数。超出此限制时,将返回 503 错误
    nginx.ingress.kubernetes.io/limit-connections: "100"
    # 速率限制的放大系数,默认值为 5(充当乘数)
    nginx.ingress.kubernetes.io/limit-burst-multiplier: "5"
    # 单个 IP 地址每秒钟接受的请求数
    nginx.ingress.kubernetes.io/limit-rps: "100"
    # 限制发送给后端服务的发送速率(千字节数/秒),0 为禁用速率限制
    nginx.ingress.kubernetes.io/limit-rate: "0"
    # 从速率限制中排除的源 IP 范围
    nginx.ingress.kubernetes.io/limit-whitelist: "xx.xx.xx.xx/xx, ..."
...


三、Ingress 配置注意事项
  • Ingress 规则是基于路径(path)匹配的,必须确保路径定义清晰,避免重叠或冲突
  • Ingress 规则若不配置 host 字段,则匹配任意未知域名和 IP 地址
  • Ingress 规则若配置有 host 字段,则只能配置并匹配域名
  • Ingress 对象的 apiVersion 必须与 Kubernetes 集群的版本兼容,即需要确定 Kubernetes 集群是否支持 networking.k8s.io/v1 或 extensions/v1beta1
  • 若是 HTTPS 协议访问,建议将 SSL 证书配置在外部 F5 设备或者负载均衡设备上,完成 HTTPS 请求的拆包、解包,并将访问请求转发至后端服务器的 80 端口

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行者Sun1989

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值