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

news/2025/3/19 10:54:11/

作者:澄潭

版本特性

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


http://www.ppmy.cn/news/981021.html

相关文章

数据结构和算法——快速排序(算法概述、选主元、子集划分、小规模数据的处理、算法实现)

目录 算法概述 图示 伪代码 选主元 子集划分 小规模数据的处理 算法实现 算法概述 图示 快速排序和归并排序有一些相似&#xff0c;都是用到了分而治之的思想&#xff1a; 伪代码 通过初步的认识&#xff0c;我们能够知道快速排序算法最好的情况应该是&#xff1a; 每…

Vben Admin学习笔记

Modal 弹窗 modal弹窗一般作为单文件组件被引用&#xff0c;下面是两段示例代码&#xff1a; 弹窗文件 Modal.vue // Modal.vue <template><BasicModal v-bind"$attrs" title"Modal Title" :helpMessage"[提示1, 提示2]">Modal I…

自然语言处理从入门到应用——LangChain:模型(Models)-[聊天模型(Chat Models):基础知识]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 聊天模型是语言模型的一种变体。虽然聊天模型在内部使用语言模型&#xff0c;但它们公开的接口略有不同。它们不是提供一个“输入文本&#xff0c;输出文本”的API&#xff0c;而是提供一个以“聊天消息”作为输入和输…

LLM 基础-transformers 库快速入门

一,Transformers 术语 1.1,token、tokenization 和 tokenizer1.2,input IDs1.3,attention mask1.4,bos_token、eop_token、pad_token、eos_token1.5,decoder models1.6,架构与参数二,Transformers 功能 API 概述三,快速上手 3.1,transformer 模型类别3.2,Pipeline&l…

强化学习价值函数方法笔记

在强化学习中&#xff0c;价值函数&#xff08;Value Function&#xff09;是一个核心概念&#xff0c;它用于衡量在不同状态或状态-动作对下&#xff0c;一个智能体&#xff08;agent&#xff09;可以获得的预期累积奖励。价值函数对于智能体做出决策和学习行为策略非常重要。…

8-js高级-7(理解js的事件循环)

一、前言 JS是单线程语言&#xff0c;但是又可以做到异步处理高并发请求&#xff0c;这时就用到了JavaScript的事件循环机制 理解事件循环&#xff0c;可以帮助我们准确分析和运用各种异步形式&#xff0c;减少代码的不确定性&#xff0c;在一些执行效率优化上也能有明确的思路…

Oralce数据库 手工重新创建控制文件

控制文件对于Oralce数据库的作用&#xff0c;就好像微软操作系统中注册表的作用一样。控制文件是一个比较小的二进制文件&#xff0c;记录着数据库的结构信息。如果数据库控制文件发生孙华的话&#xff0c;则Oracle将无法正常启动。通常情况下&#xff0c;在创建数据库时会自动…

没有编程基础,学习风变编程有困难吗?

许多初学者担心学习编程语言太难了。但是&#xff0c;大多数人可以通过时间、决心和正确的资源掌握编码。 许多因素决定了学习者找到编码的难度。一些语言优先考虑简单的命令&#xff0c;而另一些语言则使用密集的语法。有些语言比其他语言有更多的学习资源。在选择第一种编程…