写点什么

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

  • 2023-07-24
    浙江
  • 本文字数:3069 字

    阅读完需:约 10 分钟

作者:澄潭

版本特性

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


kubectl apply -f https://github.com/alibaba/higress/releases/download/v1.1.0/customresourcedefinitions.gen.yamlhelm repo updatehelm upgrade higress -n higress-system higress.io/higress
复制代码


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

支持非 K8s 部署

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


image


在 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 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 上:


image.png


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


image.png


创建路由指向这个服务:


image.png


测试路由成功:


image

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/v1kind: Http2Rpcmetadata:  name: httproute-http2rpc-demo  namespace: higress-systemspec:  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/v1kind: Ingressmetadata:  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-systemspec:  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: v1data:  higress: |-    tracing:      enable: true      sampling: 100      timeout: 500      skywalking:       service: skywalking-oap-server.op-system.svc.cluster.local       port: 11800......kind: ConfigMapmetadata:  name: higress-config  namespace: higress-system
复制代码


调用链路:


image.png


调用链路拓扑:


image.png

后续版本 Roadmap

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


image.png

社区近期活动

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

image.png


image


image


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

参与 HigressOps 夏季营

image


发布于: 刚刚阅读数: 3
用户头像

阿里云云原生 2019-05-21 加入

还未添加个人简介

评论

发布
暂无评论
云原生网关部署新范式丨 Higress 发布 1.1 版本,支持脱离 K8s 部署_阿里云_阿里巴巴云原生_InfoQ写作社区