首页 > 其他分享 >【K8s】专题七(4):Kubernetes 服务发现之 Ingress 进阶

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

时间:2024-07-29 13:55:16浏览次数:16  
标签:... ingress 进阶 kubernetes Ingress nginx io Kubernetes

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

公众号二维码


目录

一、官方文档

二、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 端口

标签:...,ingress,进阶,kubernetes,Ingress,nginx,io,Kubernetes
From: https://blog.csdn.net/2401_82795112/article/details/140436398

相关文章

  • Kubernetes 集群中 Pod 使用镜像的批量导出脚本
    目录动机脚本使用实例获取指定命名空间获取所有命名空间生成csv文件动机最近,由于DockerHub镜像的失效,在重新启动Pod时,拉取镜像失败,导致Pod无法正常启动。因此,我需要批量检查集群中有哪些Pod使用了官方的DockerHub镜像,并将这些镜像保存到本地的Harbor仓库中。为此,......
  • C语言进阶版—扫雷游戏
    文章目录1.打印棋盘2.游戏逻辑3.游戏框架3.1打印菜单3.2do……while实现主逻辑3.3创建棋盘3.4初始化棋盘3.5设置雷3.6排查雷完整游戏代码1.打印棋盘  在正式讲解扫雷游戏之前,我们简单来看一下打印出来的棋盘.  第一步我们要打印每行的框架printf("......
  • 【Golang 面试 - 进阶题】每日 3 题(三)
    ✍个人博客:Pandaconda-CSDN博客......
  • 21、flask-进阶-类视图和RESTful-前后端分离概念
    前后端分离与不分离概念前后端不分离:如render_template('index.html',data=data)这种就是前后端不分离前端和后端一起渲染前后端分离:后端返回json数据-jsonify()前端使用ajax来请求数据:ajax各自处理各自的数据,代码不在一起http请求方式:GET:查询POST:添加数据......
  • 20、flask-进阶-自定义静态文件static和模板文件templates的路径配置
    自定义static目录和templates目录的路径原本flask默认的static和templates目录是在App目录下的:如下图如果想把这两个目录更改位置,如放在根目录下:代码如下:__init__.pyfromflaskimportFlaskfrom.viewsimportbluefrom.extsimportinit_extsimportos#获......
  • 19、flask-进阶-内置对象
    内置对象g对象:global全局对象g对象是专门用来保存用户的数据的g对象在一次请求中的所有的代码的地方都是可以使用的突变变量存储位置的限制,为函数传递添加了新的方式,比如我们在before_request产生一个数据在后面需要使用,可以保存在g对象中,就可以在其他视图中使用这个数......
  • 18、flask-进阶-插件-缓存flask-caching - 钩子函数(中间件)
    1.认识flask-caching插件使用插件1.安装$flaskinstallflask-caching2.初始化在exts.py中导入并初始化fromflask_cachingimportCache#初始化插件cache=Cache(config={'CACHE_TYPE':'simple'#缓存类型})#和app对象绑定definit_exts(app):......
  • 【C++进阶学习】第九弹——哈希的原理与实现——开放寻址法的讲解
    前言:在前面,我们已经学习了很多存储机构,包括线性存储、树性存储等,并学习了多种拓展结构,效率也越来越高,但是是否有一种存储结构可以在大部分问题中都一次找到目标值呢?哈希可能能实现目录一、哈希的概念二、哈希冲突三、哈希冲突解决3.1开放寻址法节点结构插入操作查......
  • 我的新书《Android系统多媒体进阶实战》正式发售了!!!
    我的新书要正式发售了,把链接贴在下面,感兴趣的朋友可以支持下。❶发售平台:当当,京东,抖音北航社平台,小红书,b站❷目前当当和京东已开启预售❸当当网https://u.dangdang.com/KIDHJ❹京东商城https://item.m.jd.com/product/10109083199634.html?gx=RnAoqRAjajbdh8lR5Q&gxd......
  • 代码随想录 day 37 完全背包 | 零钱兑换 II | 组合总和 Ⅳ | 爬楼梯 (进阶)
    完全背包完全背包解题思路由于我们可以重复放入物体,那么在遍历背包重量时就必须从前往后遍历,因为这样就可以重复放入了,其余的部分和01背包相同知识点完全背包心得学会了如何解决纯完全背白零钱兑换II零钱兑换II解题思路和之前01背包求总数的思路相同,唯一的不同点在......