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

istio中使用serviceentry结合egressgateway实现多版本路由

假设有一个外部服务,外部服务ip为:10.10.102.90,其中32033为v1版本,32034为v2版本。

现在需要把这个服务引入到istio中,使用egressgateway转发访问该服务的流量,并且需要实现多版本路由,使得header中x-version的值为v1的路由到v1版本,x-version的值为v2的路由到v2版本。

使用serviceentry引入该服务

apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:name: gindemo-service-entry
spec:endpoints:- address: 10.10.102.90labels:version: v1ports:http: 32033- address: 10.10.102.90labels:version: v2ports:http: 32034hosts:- gindemo.test.chlocation: MESH_EXTERNALports:- name: httpnumber: 80protocol: HTTPresolution: STATIC

定义一个egress gateway:

apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:name: gindemo-egressgateway
spec:selector:istio: egressgatewayservers:- port:number: 80name: httpprotocol: HTTPhosts:- gindemo.test.ch

创建一个dr,作为流量入口,接收网格内请求外部服务的流量:

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:name: egressgateway-for-gindemo
spec:host: istio-egressgateway-1-19-6.istio-system.svc.cluster.localsubsets:- name: gindemotrafficPolicy:loadBalancer:simple: RANDOM

创建服务的dr,声明服务的多个版本:

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:name: gindemo-destination-rule
spec:host: gindemo.test.chsubsets:- labels:version: v1name: v1- labels:version: v2name: v2trafficPolicy:loadBalancer:simple: RANDOM

创建一个vs,定义服务路由规则:

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:name: direct-gindemo-through-egress-gateway
spec:gateways:- gindemo-egressgateway # 接收来自网关的流量- mesh # 接收来自网格内的流量hosts:- gindemo.test.chhttp:- match: # 该match实现将来自网格内的流量,转发到egressgateway- gateways:- mesh port: 80route:- destination:host: istio-egressgateway-1-19-6.istio-system.svc.cluster.localport:number: 80subset: gindemoweight: 100- match: # 该match实现将来自egressgateway的流量转发到serviceentry- gateways:- gindemo-egressgatewayheaders:x-version:exact: v1route:- destination:host: gindemo.test.chsubset: v1- match: # 该match实现将来自egressgateway的流量转发到serviceentry- gateways:- gindemo-egressgatewayheaders:x-version:exact: v2port: 80route:- destination:host: gindemo.test.chsubset: v2

http://www.lryc.cn/news/440004.html

相关文章:

  • Java项目——苍穹外卖(二)
  • 【Python日志功能】三.日志记录方法与多模块日志
  • 在pycharm终端中运行pip命令安装模块时,出现了“你要如何打开这个文件”弹出窗口,是什么状况?
  • Axure多人协调的方式
  • 【深度学习】【OnnxRuntime】【Python】模型转化、环境搭建以及模型部署的详细教程
  • React学习笔记(1.0)
  • Axure RP实战:打造高效图形旋转验证码
  • 101012分页属性
  • 从0-1 用AI做一个赚钱的小红书账号(不是广告不是广告)
  • 【Kubernetes】常见面试题汇总(十七)
  • Vue 3 中动态赋值 ref 的应用
  • Spring Boot-应用启动问题
  • 深入解析:如何通过网络命名空间跟踪单个进程的网络活动(C/C++代码实现)
  • C++ 科目二 [const_cast]
  • 【电脑组装】✈️从配置拼装到安装系统组装自己的台式电脑
  • Hadoop生态圈拓展内容(一)
  • 使用随机森林模型在digits数据集上执行分类任务
  • 后端开发刷题 | 打家劫舍
  • 欧美游戏市场的差异
  • DeDeCMS靶场漏洞复现
  • Transformer模型详细步骤
  • LC并联电路在正弦稳态下的传递函数推导(LC并联谐振选频电路)
  • 【前后端】大文件切片上传
  • 图像处理 -- ISP功能之局部对比度增强 LCE
  • C++速通LeetCode简单第5题-回文链表
  • 【Java 优选算法】双指针(下)
  • 动态规划:07.路径问题_珠宝的最大价值_C++
  • COMDEL电源CX2500S RF13.56MHZ RF GENERATOR手侧
  • GPU加速生物信息分析的尝试
  • 【零散技术】详解Odoo17邮件发送(一)