当前位置: 首页 > news >正文

Gateway和VirtualService

在 Istio 服务网格中,GatewayVirtualService 是两个关键的配置对象,它们分别用于定义入站流量的接入点和路由规则。下面详细介绍这两个配置对象的功能及其相互关系。

Gateway

Gateway 是 Istio 中用于定义入站流量接入点的配置对象。它描述了外部流量如何进入服务网格,通常与边缘路由器或负载均衡器关联。Gateway 配置定义了监听的端口、协议(如 HTTP 或 TLS)以及与之关联的 IP 地址或主机名。

Gateway 的作用
  1. 定义入站端口:指定哪些端口应该监听入站流量。
  2. 定义协议类型:指定支持的协议类型,如 HTTP、HTTPS 或 TCP。
  3. 关联边缘设备:与边缘路由器或负载均衡器关联,以便管理入站流量。
Gateway 示例

以下是一个简单的 Gateway 配置示例:

 

Yaml

深色版本

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:name: example-gateway
spec:selector:istio: ingressgateway # 使用 Istio Ingress Gatewayservers:- port:number: 80name: httpprotocol: HTTPhosts:- "example.com"- port:number: 443name: httpsprotocol: HTTPStls:mode: SIMPLE # 简单的 TLS 模式credentialName: example-tls-secret # 使用的 TLS 秘钥名称hosts:- "example.com"

在这个示例中,example-gateway 监听端口 80 和 443,支持 HTTP 和 HTTPS 协议,并且与主机名 example.com 关联。

VirtualService

VirtualService 是 Istio 中用于定义服务间路由规则的配置对象。它允许你根据不同的条件(如 HTTP 方法、URL 路径、请求头等)来定义如何将请求路由到不同的目标服务或服务实例。

VirtualService 的作用
  1. 请求匹配:根据请求的特征(如 HTTP 方法、URL、头部等)匹配请求。
  2. 请求路由:定义匹配请求后应如何路由。
  3. 流量管理:实现金丝雀发布、AB 测试等流量管理策略。
  4. 重试和超时:定义重试逻辑和超时策略。
VirtualService 示例

以下是一个简单的 VirtualService 配置示例,用于将请求路由到不同的服务版本:

 

Yaml

深色版本

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: example-vs
spec:hosts:- "example.com"gateways:- example-gateway # 与上面定义的 Gateway 关联http:- match:- uri:exact: "/v1/api"route:- destination:host: "v1-service"port:number: 8080weight: 80- destination:host: "v2-service"port:number: 8080weight: 20

在这个示例中,所有针对 example.com 的 HTTP 请求将被路由到 v1-servicev2-service,其中 v1-service 占 80% 的流量,v2-service 占 20% 的流量。

Gateway 和 VirtualService 的组合使用

GatewayVirtualService 通常配合使用,以实现对外部流量的精细控制。Gateway 定义了流量如何进入服务网格,而 VirtualService 则定义了进入网格后的流量如何被路由。

综合示例

以下是结合 GatewayVirtualService 的综合示例:

 

Yaml

深色版本

# example-gateway.yaml
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:name: example-gateway
spec:selector:istio: ingressgatewayservers:- port:number: 80name: httpprotocol: HTTPhosts:- "example.com"# example-vs.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: example-vs
spec:hosts:- "example.com"gateways:- example-gatewayhttp:- match:- uri:exact: "/v1/api"route:- destination:host: "v1-service"port:number: 8080weight: 80- destination:host: "v2-service"port:number: 8080weight: 20

在这个综合示例中,example-gateway 定义了如何监听来自 example.com 的 HTTP 流量,而 example-vs 则定义了如何将这些请求路由到 v1-servicev2-service

相关文章:

  • 揭秘顶级 RAG 技术,不可错过的关键知识!
  • C语言实现归并排序(Merge Sort)
  • oracle 定时任务每月27号到月底
  • AccessClient在MacOS14 (sonoma)闪退无法调用远程桌面
  • Spark 性能优化高频面试题及答案
  • 国产操作系统(统信UOS)网络安全等级保护基础安全加固
  • 杨辉三角-C语言
  • word中的表格全部设置宽度100%
  • 之前请求都是正常的,然后第三方的数据库抖动了导致请求的二次请求出现431
  • PHP视频活体检测API接口示例-视频活体检测引领身份验证新潮流
  • windows安装Redis以后配置远程访问
  • 项目启动错误
  • harmonyos面试题
  • Vue3 中 this 一分钟了解
  • Linux之我不会
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • JAVA SE 6 GC调优笔记
  • Javascript 原型链
  • k8s如何管理Pod
  • opencv python Meanshift 和 Camshift
  • Promise初体验
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Vultr 教程目录
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 测试开发系类之接口自动化测试
  • 从零搭建Koa2 Server
  • 浅谈web中前端模板引擎的使用
  • 深度学习中的信息论知识详解
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • Prometheus VS InfluxDB
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 如何正确理解,内页权重高于首页?
  • ​HTTP与HTTPS:网络通信的安全卫士
  • $.ajax,axios,fetch三种ajax请求的区别
  • (3)nginx 配置(nginx.conf)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C语言)字符分类函数
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (安卓)跳转应用市场APP详情页的方式
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (六)激光线扫描-三维重建
  • (十一)手动添加用户和文件的特殊权限
  • (转)Linq学习笔记
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
  • .net core 6 redis操作类