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

istio入门到精通-2

上部分讲到了hosts[*] 匹配所有的微服务,这部分细化一下

在 Istio 的 VirtualService 配置中,hosts 字段用于指定该虚拟服务适用的
目标主机或域名。如果使用具体的域名(如 example.com),则只有请求的主机
域名与 example.com 匹配时,该虚拟服务才会生效
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: nginx
spec:hosts:- "example.com"  # 仅适用于 example.com 域名gateways:- nginx-gateway  # 关联的 Gatewayhttp:- match:- uri:prefix: /  # 匹配所有路径route:- destination:host: nginx  # 目标服务port:number: 80  # 目标端口
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:name: nginx-gateway
spec:selector:istio: ingressgatewayservers:- port:number: 80name: httpprotocol: HTTPhosts:- "example.com"  # Gateway 只接受 example.com 的流量

客户端访问 http://example.com 时,流量会被路由到 nginx 服务。
客户端访问 http://foo.com 时,流量不会被处理,因为 foo.com 不匹配 hosts: [“example.com”]

hosts: ["example.com"]**表示该虚拟服务仅适用于 example.com 域名。
如果客户端请求的域名是 example.com,Istio 会应用该虚拟服务的路由规则。
如果客户端请求的域名是 foo.com 或任何其他域名,则不会匹配该虚拟服务。
​**gateways: ["nginx-gateway"]**表示该虚拟服务与名为 nginx-gateway 的 Istio Gateway 关联。
只有通过 nginx-gateway 进入的流量才会被该虚拟服务处理。
​**http 路由规则**match 部分定义了匹配规则。这里使用 uri.prefix: / 表示匹配所有路径。
route 部分定义了路由目标。这里将流量路由到 nginx 服务的 80 端口
  1. ​多个 hosts 字段
    在 hosts 字段中列出多个域名或服务名称,适用于不同域名或服务共享相同的路由规则
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: multi-host
spec:hosts:- "example.com"  # 第一个域名- "foo.com"      # 第二个域名gateways:- nginx-gateway  # 关联的 Gatewayhttp:- match:- uri:prefix: /route:- destination:host: nginx  # 目标服务port:number: 80

hosts 字段包含 example.com 和 foo.com,表示该虚拟服务适用于这两个域名。
所有匹配的流量都会被路由到 nginx 服务。

  1. ​多个 http 路由规则
    如果你需要为不同的域名或服务定义不同的路由规则,可以在 http 部分使用多个 match 块。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: multi-host
spec:hosts:- "example.com"- "foo.com"gateways:- nginx-gatewayhttp:- match:- authority:exact: example.com  # 匹配 example.comroute:- destination:host: nginxport:number: 80- match:- authority:exact: foo.com  # 匹配 foo.comroute:- destination:host: foo-serviceport:number: 8080
解释:使用 authority 字段精确匹配域名。
访问 example.com 的流量会被路由到 nginx 服务。
访问 foo.com 的流量会被路由到 foo-service 服务。3. ​多个 destination 目标
如果你需要将流量路由到多个目标服务,可以在 route 部分列出多个 destination。yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: multi-destination
spec:hosts:- "example.com"gateways:- nginx-gatewayhttp:- match:- uri:prefix: /route:- destination:host: nginxport:number: 80weight: 70  # 70% 的流量- destination:host: foo-serviceport:number: 8080weight: 30  # 30% 的流量```
流量会根据权重分配,70% 的流量路由到 nginx,30% 的流量路由到 foo-service。
适用于灰度发布或负载均衡场景。5、多个 VirtualService
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: example-service
spec:hosts:- "example.com"gateways:- nginx-gatewayhttp:- match:- uri:prefix: /route:- destination:host: nginxport:number: 80
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: foo-service
spec:hosts:- "foo.com"gateways:- nginx-gatewayhttp:- match:- uri:prefix: /route:- destination:host: foo-serviceport:number: 8080每个 VirtualService 对应一个独立的服务。
这种方式更清晰,便于管理和维护   6、如果你需要匹配多个子域名,可以使用通配符 *。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: wildcard-host
spec:hosts:- "*.example.com"  # 匹配所有子域名,如 foo.example.com, bar.example.comgateways:- nginx-gatewayhttp:- match:- uri:prefix: /route:- destination:host: nginxport:number: 80
*.example.com 会匹配所有以 example.com 结尾的子域名。
适用于需要统一处理多个子域名的场景。总结
​多个 hosts:适用于多个域名共享相同路由规则。
​多个 http 路由规则:适用于为不同域名定义不同的路由规则。
​多个 destination:适用于将流量分配到多个目标服务(如灰度发布)。
​多个 VirtualService:适用于路由规则差异较大的场景。
​通配符域名:适用于统一处理多个子域名。

相关文章:

istio入门到精通-2

上部分讲到了hosts[*] 匹配所有的微服务,这部分细化一下 在 Istio 的 VirtualService 配置中,hosts 字段用于指定该虚拟服务适用的 目标主机或域名。如果使用具体的域名(如 example.com),则只有请求的主机 域名与 exa…...

第5章:vuex

第5章:vuex 1 求和案例 纯vue版2 vuex工作原理图3 vuex案例3.1 搭建vuex环境错误写法正确写法 3.2 求和案例vuex版细节分析源代码 4 getters配置项4.1 细节4.2 源代码 5 mapState与mapGetters5.1 总结5.2 细节分析5.3 源代码 6 mapActions与mapMutations6.1 总结6.2…...

[Python入门学习记录(小甲鱼)]第5章 列表 元组 字符串

第5章 列表 元组 字符串 5.1 列表 一个类似数组的东西 5.1.1 创建列表 一个中括号[ ] 把数据包起来就是创建了 number [1,2,3,4,5] print(type(number)) #返回 list 类型 for each in number:print(each) #输出 1 2 3 4 5#列表里不要求都是一个数据类型 mix [213,"…...

Docker 学习(四)——Dockerfile 创建镜像

Dockerfile是一个文本格式的配置文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。有了Dockerfile,当我们需要定制自己额外的需求时,只需在D…...

Java多线程与高并发专题——为什么 Map 桶中超过 8 个才转为红黑树?

引入 JDK 1.8 的 HashMap 和 ConcurrentHashMap 都有这样一个特点:最开始的 Map 是空的,因为里面没有任何元素,往里放元素时会计算 hash 值,计算之后,第 1 个 value 会首先占用一个桶(也称为槽点&#xff…...

LeetCode hot 100—二叉树的中序遍历

题目 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2]示例 2: 输入:root [] 输出:[]示例 3: 输入:root […...

代码随想录算法训练营第35天 | 01背包问题二维、01背包问题一维、416. 分割等和子集

一、01背包问题二维 二维数组,一维为物品,二维为背包重量 import java.util.Scanner;public class Main{public static void main(String[] args){Scanner scanner new Scanner(System.in);int n scanner.nextInt();int bag scanner.nextInt();int[…...

与中国联通技术共建:通过obdiag分析OceanBase DDL中的报错场景

中国联通软件研究院(简称联通软研院)在全面评估与广泛调研后,在 2021年底决定采用OceanBase 作为基础,自研分布式数据库产品CUDB(即China Unicom Database,中国联通数据库)。目前,该…...

IDEA 接入 Deepseek

在本篇文章中,我们将详细介绍如何在 JetBrains IDEA 中使用 Continue 插件接入 DeepSeek,让你的 AI 编程助手更智能,提高开发效率。 一、前置准备 在开始之前,请确保你已经具备以下条件: 安装了 JetBrains IDEA&…...

斗地主小游戏

<!DOCTYPE html> <html><head><meta charset="utf-8"><title>斗地主</title><style>.game-container {width: 1000px;height: 700px;margin: 0 auto;position: relative;background: #35654d;border-radius: 10px;padding…...

如何改变怂怂懦弱的气质(2)

你是否曾经因为害怕失败而逃避选择&#xff1f;是否因为不敢拒绝别人而让自己陷入困境&#xff1f;是否因为过于友善而被人轻视&#xff1f;如果你也曾为这些问题困扰&#xff0c;那么今天的博客就是为你准备的。我们将从行动、拒绝、自我认知、实力提升等多个角度&#xff0c;…...

C# OnnxRuntime部署DAMO-YOLO人头检测

目录 说明 效果 模型信息 项目 代码 下载 参考 说明 效果 模型信息 Model Properties ------------------------- --------------------------------------------------------------- Inputs ------------------------- name&#xff1a;input tensor&#xff1a;Floa…...

基于GeoTools的GIS专题图自适应边界及高宽等比例生成实践

目录 前言 一、原来的生成方案问题 1、无法自动读取数据的Bounds 2、专题图高宽比例不协调 二、专题图生成优化 1、直接读取矢量数据的Bounds 2、专题图成果抗锯齿 3、专题成果高宽比例自动调节 三、总结 前言 在当今数字化浪潮中&#xff0c;地理信息系统&#xff08;…...

各种DCC软件使用Datasmith导入UE教程

3Dmax: 先安装插件 https://www.unrealengine.com/zh-CN/datasmith/plugins 左上角导出即可 虚幻中勾选3个插件,重启引擎 左上角选择文件导入即可 Blender导入Datasmith进UE 需要两个插件, 文章最下方链接进去下载安装即可 一样的,直接导出,然后UE导入即可 C4D 直接保存成…...

尚硅谷爬虫note15

一、当当网 1. 保存数据 数据交给pipelines保存 items中的类名&#xff1a; DemoNddwItem class DemoNddwItem(scrapy.Item): 变量名 类名&#xff08;&#xff09; book DemoNddwItem(src src, name name, price price)导入&#xff1a; from 项目名.items import 类…...

云原生系列之本地k8s环境搭建

前置条件 Windows 11 家庭中文版&#xff0c;版本号 23H2 云原生环境搭建 操作系统启用wsl(windows subsystem for linux) 开启wsl功能&#xff0c;如下图 安装并开启github加速器 FastGithub 2.1 下载地址&#xff1a;点击下载 2.2 解压安装文件fastgithub_win-x64.zip 2…...

关于tomcat使用中浏览器打开index.jsp后中文显示不正常是乱码,但英文正常的问题

如果是jsp文件就在首行加 “<% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8" %>” 如果是html文件 在head标签加入&#xff1a; <meta charset"UTF-8"> 以jsp为例子&#xff0c;我们…...

mysql foreign_key_checks

‌foreign_key_checks‌是一个用于设置是否在DML/DDL操作中检查外键约束的系统变量。该变量默认启用&#xff0c;通常在正常操作期间启用以强制执行参照完整性。 功能描述 foreign_key_checks用于控制是否在DML&#xff08;数据操纵语言&#xff09;和DDL&#xff08;数据定义…...

开发环境搭建-06.后端环境搭建-前后端联调-Nginx反向代理和负载均衡概念

一.前后端联调 我们首先来思考一个问题 前端的请求地址是&#xff1a;http://localhost/api/employee/login 后端的接口地址是&#xff1a;http://localhost:8080/admin/employee/login 明明请求地址和接口地址不同&#xff0c;那么前端是如何请求到后端接口所响应回来的数…...

REST API前端请求和后端接收

1、get请求&#xff0c;带"?" http://localhost:8080/api/aop/getResult?param123 GetMapping("getResult")public ResponseEntity<String> getResult(RequestParam("param") String param){return new ResponseEntity<>("12…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...