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

云原生网关部署新范式丨 Higress 发布 1.1 版本,支持脱离 K8s 部署

作者:澄潭

版本特性

Higress 1.1.0 版本已经 Release,K8s 环境下可以使用以下命令将 Higress 升级到最新版本:

kubectl apply -f https://github.com/alibaba/higress/releases/download/v1.1.0/customresourcedefinitions.gen.yaml
helm repo update
helm upgrade higress -n higress-system higress.io/higress

下面介绍该版本的核心特性:

支持非 K8s 部署

在 K8s 部署模式下,Higress 已经支持基于 Nacos 进行服务发现,可以打通 Spring Cloud/Dubbo 等微服务生态。Nacos 作为微服务生态的集大成者,既可以作为注册中心,又可以作为配置中心,在非 K8s 环境下,如果将路由、插件等配置存入 Nacos 中,用户只需一个 Higress 和一个 Nacos 即可搞定一切:

在这里插入图片描述

在 1.1 版本中,Higress 就实现了这个能力,如上图所示,在这个架构中,Nacos 同时可以作为路由配置来源和服务 IP 来源,因为在 Nacos 中存储路由配置也是用了 Ingress API 这套基础 API 抽象,目前 Higress 在 K8s 上可以实现的能力,基于这套架构一样可以搞定。

使用一行命令即可完成非 K8s 环境下的部署(兼容 macOS 和 Linux,Windows 需要安装 Cygwin):

curl -fsSL https://higress.io/standalone/get-higress.sh | bash -s -- -c nacos://<nacos_addr>:8848

-c 参数用于指定非 K8s 场景下的配置存储来源,以 Nacos 为例,通过 nacos:// 指定即可,这种模式下,Higress 的所有配置都将存储在 Nacos 中,后续还将支持 ETCD/Consul等配置来源。

更多的参数可以通过 -h 参数查看,具体如下:

Usage: bash [DIR] [OPTIONS...]
Install Higress (standalone version) into the DIR (the current directory by default).-c, --config-url=URL       URL of the Nacos serviceformat: nacos://192.168.0.1:8848--use-builtin-nacos    use the built-in Nacos service instead ofan external one--nacos-ns=NACOS-NAMESPACEthe ID of Nacos namespace to store configurationsdefault to "higress-system" if unspecified--nacos-username=NACOS-USERNAMEthe username used to access Nacosonly needed if auth is enabled in Nacos--nacos-password=NACOS-PASSWORDthe password used to access Nacosonly needed if auth is enabled in Nacos-k, --data-enc-key=KEY     the key used to encrypt sensitive configurationsMUST contain 32 charactersA random key will be generated if unspecified-p, --console-password=CONSOLE-PASSWORDthe password to be used to visit Higress Consoledefault to "admin" if unspecified-h, --help                 give this help list

启动成功后,本机端口占用情况如下:

  • 80 端口:Higress Gateway 暴露,用于 HTTP 协议代理
  • 443 端口:Higress Gateway 暴露,用于 HTTPS 协议代理
  • 15020 端口:Higress Gateway 暴露,用于暴露 Prometheus 指标 (http://node_ip:15020/stats/prometheus)
  • 8080 端口:Higress Console 暴露,用于 Higress 控制台管理

让我们在本地启动一个 SpringCloud 服务注册到这个 Nacos 上:

在这里插入图片描述

在 Higress 控制台的服务列表也可以看到这个服务(Higress 默认配置监听启动参数指定的 Nacos 的 public 命名空间,可以在服务来源中新增其他命名空间):

在这里插入图片描述

创建路由指向这个服务:

在这里插入图片描述

测试路由成功:

在这里插入图片描述

Http to Dubbo 配置简化

在之前的版本里,使用 Http to Dubbo 的能力,需要开启 Istio CRD,然后通过 Envoyfilter 进行配置;新版本 Higress 增加了 Http2Rpc 这个 CRD,实现了 Http to Dubbo 的配置简化。

假设我们现在已经部署了如下一个 Dubbo 服务,其服务名为com.alibaba.nacos.example.dubbo.service.DemoService,并指定了该服务的 version 为“1.0.0”,group 为“dev”:

interface:

package com.alibaba.nacos.example.dubbo.service;public interface DemoService {String sayName(String name);
}

implement:

@DubboService(version = "${demo.service.version}", group = "${demo.service.group}")
public class DefaultService implements DemoService {@Value("${demo.service.name}")private String serviceName;public String sayName(String name) {RpcContext rpcContext = RpcContext.getContext();return String.format("Service [name :%s , port : %d] %s("%s") : Hello,%s",serviceName,rpcContext.getLocalPort(),rpcContext.getMethodName(),name,name);}
}

创建 Http2Rpc CRD

apiVersion: networking.higress.io/v1
kind: Http2Rpc
metadata:name: httproute-http2rpc-demonamespace: higress-system
spec:dubbo: service: com.alibaba.nacos.example.dubbo.service.DemoServiceversion: 1.0.0group: devmethods: - serviceMethod: sayNameheadersAttach: "*"httpMethods: - "GET"httpPath: "/dubbo/sayName"params:- paramKey: nameparamSource: QUERYparamType: "java.lang.String"

创建 Ingress 关联 Http2Rpc

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:annotations:higress.io/destination: providers:com.alibaba.nacos.example.dubbo.service.DemoService:1.0.0:dev.DEFAULT-GROUP.public.nacoshigress.io/rpc-destination-name: httproute-http2rpc-demoname: httproute-http2rpc-demo-ingressnamespace: higress-system
spec:ingressClassName: higressrules:- http:paths:- backend:resource:apiGroup: networking.higress.iokind: McpBridgename: defaultpath: /dubbopathType: Prefix

通过以上配置,我们就可以执行以下 curl 命令来调用这个 dubbo 服务了:

$curl "localhost/dubbo/sayName?name=abc" {"result":"Service [name :demoService , port : 20880] sayName("abc") : Hello,abc"}

支持 SkyWalking Tracing 配置

对 Higress 的全局配置 ConfigMap 对象 higress-config 做如下配置即可开启 SkyWalking Tracing:

apiVersion: v1
data:higress: |-tracing:enable: truesampling: 100timeout: 500skywalking:service: skywalking-oap-server.op-system.svc.cluster.localport: 11800
...
...
kind: ConfigMap
metadata:name: higress-confignamespace: higress-system

调用链路:

在这里插入图片描述

调用链路拓扑:

在这里插入图片描述

后续版本 Roadmap

目前确定的后续版本核心功能如下,欢迎在:https://github.com/alibaba/higress/issues/425 下提出你期待的功能,我们将实时更新后续 Roadmap。

在这里插入图片描述

社区近期活动

Wasm 插件编程挑战赛,赢取 12w 奖金池

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

了解详情:https://tianchi.aliyun.com/competition/entrance/532104/information

相关文章:

云原生网关部署新范式丨 Higress 发布 1.1 版本,支持脱离 K8s 部署

作者&#xff1a;澄潭 版本特性 Higress 1.1.0 版本已经 Release&#xff0c;K8s 环境下可以使用以下命令将 Higress 升级到最新版本&#xff1a; kubectl apply -f https://github.com/alibaba/higress/releases/download/v1.1.0/customresourcedefinitions.gen.yaml helm …...

【通讯录】--C语言

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …...

通过两种实现方式理解CANoe TC8 demo是如何判断接收的以太网报文里的字段的

假设有一个测试用例,需求是:编写一个测试用例,发送一条icmpv4 echo request报文给DUT,identifier字段设置为10。判断DUT能够回复icmpv4 echo reply报文,且identifier字段值为10。 实现:在canoe的simulation setup界面插入一个test节点,ip地址为:192.168.0.1,mac地址为…...

Mysql- 存储引擎

目录 1.Mysql体系结构 2.存储引擎简介 3.存储引擎特点 InnoDB MyISAM Memory 4.存储引擎选择 1.Mysql体系结构 MySQL整体的逻辑结构可以分为4层&#xff1a; 连接层&#xff1a;进行相关的连接处理、权限控制、安全处理等操作 服务层&#xff1a;服务层负责与客户层进行…...

vite / nuxt3 项目使用define配置/自定义,可以使用process.env.xxx获取的环境变量

每日鸡汤&#xff1a;每个你想要学习的瞬间&#xff0c;都是未来的你向自己求救 首先可以看一下我的这篇文章了解一下关于 process.env 的环境变量。 对于vite项目&#xff0c;在我们初始化项目之后&#xff0c;在浏览器中打印 process.env&#xff0c;只有 NODE_ENV这个变量&…...

在Linux、Ubuntu中跨平台编译ARM(AARCH64)平台的binutils

Binutils 是GNU(https://www.gnu.org/)提供的一组二进制工具的集合。通常,在已经安装了Linux操作系统的个人电脑上,系统就已经自带了这个工具集。但在进行嵌入式开发的时候,可能会用到支持ARM64平台的Binutils,这时就需要用到交叉编译。 此前,在【1】我们已经介绍过Ubun…...

SpringCloudAlibaba微服务实战系列(五)Sentinel1.8.5+Nacos持久化

Sentinel数据持久化 前面介绍Sentinel的流控、熔断降级等功能&#xff0c;同时Sentinel应用也在面临着一个问题&#xff1a;我们在Sentinel后台管理界面中配置了一堆流控、降级规则&#xff0c;但是Sentinel一重启&#xff0c;这些规则全部消失了。那么我们就要考虑Sentinel的持…...

pytest中conftest的用法以及钩子基本使用

一、conftest是什么&#xff1f; conftest是pytest进阶中的高级应用&#xff0c;最近正好用到这一块儿&#xff0c;研究之后&#xff0c;向大家分享该高级应用。 二、使用步骤 1.conftest代码块 以全局性使用driver为主&#xff0c;只启动一次浏览器&#xff1a; pytest.fi…...

数据结构---顺序栈、链栈

特点 typedef struct Stack { int* base; //栈底 int* top;//栈顶 int stacksize //栈的容量; }SqStack; typedef struct StackNode { int data;//数据域 struct StackNode* next; //指针域 }StackNode,*LinkStack; 顺序栈 #define MaxSize 100 typedef struct Stack { int*…...

我的MacBook Pro:维护心得与实用技巧

文章目录 我的MacBook Pro&#xff1a;维护心得与实用技巧工作电脑概况&#xff1a;MacBook Pro 2019款 16 寸日常维护措施个人维护技巧其他建议 我的MacBook Pro&#xff1a;维护心得与实用技巧 无论是学习还是工作&#xff0c;电脑都是IT人必不可少的重要武器。一台好电脑除…...

Higress非K8S安装

Higress非K8S安装 文章目录 Higress非K8S安装环境安装安装higress进入到higress 的目录下修改下nacos的地址启动Higress登录higress管理页面 Higress 是基于阿里内部构建的下一代云原生网关&#xff0c;官网介绍&#xff1a;https://higress.io/zh-cn/docs/overview/what-is-hi…...

QT--day4(定时器事件、鼠标事件、键盘事件、绘制事件、实现画板、QT实现TCP服务器)

QT实现tcpf服务器代码&#xff1a;&#xff08;源文件&#xff09; #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//给服务器指针实例化空间server new QTc…...

hjm家族信托科技研究报告

目录 绪论 研究背景与意义 一、选题背景 二、选题意义 研究内容与主要研究方法 一、本文内容 二、研究方法 创新与不足 一、创新 二、不足之处 文献综述与理论基础 文献综述 国外研究现状国内研究现状国内外研究综述 理论基础 金融创新理论组合投资理论生命周期理论…...

[SQL挖掘机] - 视图相关操作

创建视图: create view view_name as select column1, column2, ... from table_name where condition;以上语句创建了一个名为view_name的视图&#xff0c;它基于table_name表格&#xff0c;并选择了列column1、column2等作为结果集。可以使用where子句来指定条件。 注意: 视…...

【Quartus FPGA】EMIF DDR3 读写带宽测试

在通信原理中&#xff0c;通信系统的有效性用带宽来衡量&#xff0c;带宽定义为每秒传输的比特数&#xff0c;单位 b/s&#xff0c;或 bps。在 DDR3 接口的产品设计中&#xff0c;DDR3 读/写带宽是设计者必须考虑的指标。本文主要介绍了 Quartus FPGA 平台 EMIF 参数配置&#…...

Flutter:flutter_local_notifications——消息推送的学习

前言 注&#xff1a; 刚开始学习&#xff0c;如果某些案例使用时遇到问题&#xff0c;可以自行百度、查看官方案例、官方github。 简介 Flutter Local Notifications是一个用于在Flutter应用程序中显示本地通知的插件。它提供了一个简单而强大的方法来在设备上发送通知&#…...

Spring AOP (面向切面编程)原理与代理模式—实例演示

一、AOP介绍和应用场景 Spring 中文文档 (springdoc.cn) Spring | Home 官网 1、AOP介绍&#xff08;为什么会出现AOP &#xff1f;&#xff09; Java是一个面向对象&#xff08;OOP&#xff09;的语言&#xff0c;但它有一些弊端。虽然使用OOP可以通过组合或继承的方…...

什么是SCRUM认证体系 ?

Scrum认证是一个针对个人职业发展的认证体系&#xff0c;基础级认证主要面向Scrum的三个角色&#xff1a;Scrum Master、Scrum Product Owner 和 Developers。Scrum认证体系由Scrum官方机构—国际Scrum联盟&#xff08;ScrumAlliance.org&#xff09;制定和维护&#xff0c;Scr…...

DoIP学习笔记系列:(二)VN5620 DoIP测试配置实践笔记

文章目录 1. 添加.cdd2. CAPL中调用接口发送DoIP请求3. “Ethernet Packet Builder”的妙用4. CANoe也可以做交互界面在进行测试前,先检查车载以太网硬件连线是否正确,需要注意连接两端的Master、Slave,100M、1000M等基本情况,在配置VN5620的时候就可以灵活处理了。成功安装…...

Grafana - TDEngine搭建数据监测报警系统

TDengine 与开源数据可视化系统 Grafana 快速集成搭建数据监测报警系统 一、介绍二、前置条件三、Grafana 安装及配置3.1 下载3.2 安装3.2.1 windows安装 - 图形界面3.2.2 linux安装 - 安装脚本 四、Grafana的TDEngine配置及使用4.1 登录4.2 安装 Grafana Plugin 并配置数据源4…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...