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

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 基于 Nacos 的注册中心/配置中心能力,实现了无需依赖 K8s,也能使用 Ingress API 管理网关路由。

作者:澄潭

版本特性


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://<nacos_addr> 指定即可,这种模式下,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 service
                            format: nacos://192.168.0.1:8848
     --use-builtin-nacos    use the built-in Nacos service instead of
                            an external one
     --nacos-ns=NACOS-NAMESPACE
                            the ID of Nacos namespace to store configurations
                            default to "higress-system" if unspecified
     --nacos-username=NACOS-USERNAME
                            the username used to access Nacos
                            only needed if auth is enabled in Nacos
     --nacos-password=NACOS-PASSWORD
                            the password used to access Nacos
                            only needed if auth is enabled in Nacos
 -k, --data-enc-key=KEY     the key used to encrypt sensitive configurations
                            MUST contain 32 characters
                            A random key will be generated if unspecified
 -p, --console-password=CONSOLE-PASSWORD
                            the password to be used to visit Higress Console
                            default 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-demo
  namespace: higress-system
spec:
  dubbo: 
    service: com.alibaba.nacos.example.dubbo.service.DemoService
    version: 1.0.0
    group: dev
    methods: 
    - serviceMethod: sayName
      headersAttach: "*"
      httpMethods: 
      - "GET"
      httpPath: "/dubbo/sayName"
      params:
      - paramKey: name
        paramSource: QUERY
        paramType: "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.nacos
    higress.io/rpc-destination-name: httproute-http2rpc-demo
  name: httproute-http2rpc-demo-ingress
  namespace: higress-system
spec:
  ingressClassName: higress
  rules:
  - http:
      paths:
      - backend:
          resource:
            apiGroup: networking.higress.io
            kind: McpBridge
            name: default
        path: /dubbo
        pathType: 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: true
      sampling: 100
      timeout: 500
      skywalking:
       service: skywalking-oap-server.op-system.svc.cluster.local
       port: 11800
...
...
kind: ConfigMap
metadata:
  name: higress-config
  namespace: higress-system

调用链路:

调用链路拓扑:


后续版本 Roadmap


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


社区近期活动


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

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


参与 HigressOps 夏季营


加入 Higress 社区

收录于合集 #Higress

8

上一篇云原生网关如何实现安全防护能力


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
5月前
|
Kubernetes Cloud Native 安全
云原生机密计算新范式 PeerPods技术方案在阿里云上的落地和实践
PeerPods 技术价值已在阿里云实际场景中深度落地。
|
3月前
|
运维 Dubbo Cloud Native
Dubbo 云原生重构出击:更快部署、更强控制台、更智能运维
Apache Dubbo 最新升级支持云原生,提供一键部署微服务集群与全新可视化控制台,提升全生命周期管理体验,助力企业高效构建云原生应用。
342 25
|
9月前
|
负载均衡 物联网 测试技术
部署硬件负载均衡时,如何评估设备的处理能力?
部署硬件负载均衡时,如何评估设备的处理能力?
566 130
|
9月前
|
运维 负载均衡 监控
部署硬件负载均衡和软件负载均衡时,分别需要考虑哪些因素?
部署硬件负载均衡和软件负载均衡时,分别需要考虑哪些因素?
404 127
|
7月前
|
Kubernetes Cloud Native Serverless
OpenKruise v1.8版本解读:解锁云原生应用管理的无限可能
OpenKruise在2025年2月发布了最新的1.8版本。此版本带来了诸多重要的更新与增强,致力于进一步提升云原生应用管理的效率、弹性和可靠性。
|
7月前
|
人工智能 运维 监控
阿里云携手神州灵云打造云内网络性能监测标杆 斩获中国信通院高质量数字化转型十大案例——金保信“云内网络可观测”方案树立云原生运维新范式
2025年,金保信社保卡有限公司联合阿里云与神州灵云申报的《云内网络性能可观测解决方案》入选高质量数字化转型典型案例。该方案基于阿里云飞天企业版,融合云原生引流技术和流量“染色”专利,解决云内运维难题,实现主动预警和精准观测,将故障排查时间从数小时缩短至15分钟,助力企业降本增效,形成可跨行业复制的数字化转型方法论。
397 6
|
9月前
|
运维 负载均衡 算法
部署硬件负载均衡设备时要注意哪些问题?
部署硬件负载均衡设备时要注意哪些问题?
247 57
|
9月前
|
Cloud Native 安全 Serverless
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
|
11月前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
12月前
|
弹性计算 监控 负载均衡
slb部署使用路径规则进行更细粒度控制
slb部署使用路径规则进行更细粒度控制
146 7

热门文章

最新文章

推荐镜像

更多