higress-group / higress-console Goto Github PK
View Code? Open in Web Editor NEWhigress console
License: Other
higress console
License: Other
当安装包内的Grafana看板有更新,或者实际运行环境中的看板出现错乱时,需要支持强制重置看板配置的功能。
目前没有登陆认证功能,需要自动生成随机密码,基于secret配置编辑
参见 #101。
支持全局、域名和路由三个层次的插件配置。用户可以在这三个层次上启用某个插件并配置其参数,也可以选则禁用某个插件。
目标是降低用户在管理 HTTPS 证书方面的工作量和复杂度。
对接 cert-manager,实现证书自动签发、自动续期等功能。域名管理中可以选择使用自助管理的证书,还是关联 cert-manager 由系统自动维护相关证书。
子任务列表:
由于登录页面与内部页面没有共用同一个模版,用户首次打开控制台时,页面会直接跳到登录页面。用户无法选择语言。
Higress 已经支持将 HTTP 请求转换为 Dubbo 请求转发给后端的 Dubbo 服务。故 Higress Console 需要支持配置此类路由。
Higress 中的 Dubbo 协议转换功能参见文档:https://higress.io/zh-cn/docs/user/dubbo.html
这里需要支持用户配置路由目标和转换规则。
子任务列表:
根据 #58 定义的API实现到 Ingress annotation 的对应转换
注解 | 说明 |
---|---|
higress.io/proxy-next-upstream-tries | 请求的最大重试次数。默认为3次。 |
higress.io/proxy-next-upstream-timeout | 请求重试的超时时间,单位秒。默认未配置超时时间。 |
higress.io/proxy-next-upstream | 请求重试条件,使用英文逗号作为分隔。默认值为error,timeout,合法值如下:error:建立连接失败,请求出错5xx。timeout:建立连接超时,请求出错5xx。invalid_header:请求出错5xx。http_xxx:针对具体响应状态码的情况进行重试。例如:http_502、http_403。non_idempotent:对于非幂等请求出错时进行重试。默认情况下,MSE Ingress针对非幂等POST、PATCH请求出错时不会进行重试;如果配置non_idempotent,可以开启重试。off:关闭重试。 |
服务来源 API 已经实现完成。但由于请求响应模型均有一定调整,前端页面需要重新进行对接并完成联调。
可以由测试用例驱动开发,免去本地安装higress,降低前后端联调成本
mock apiserver 接口的返回,配置 expect 的资源结构,和生成的资源做比对
相关引擎侧 issue:
根据 #58 定义的API实现到 Ingress annotation 的对应转换
注解 | 说明 |
---|---|
higress.io/rewrite-target | 重写Path,支持捕获组(Capture Group)。 |
higress.io/upstream-vhost | 重写Host。 |
ingress 简单模型对应的api字段:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: tls-example-ingress
spec:
tls:
- hosts:
- https-example.foo.com
secretName: testsecret-tls
rules:
- host: https-example.foo.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service1
port:
number: 80
namespace 默认限定 higress-system
介绍前后端工程目录,和开发指引,可以针对配置路由生效的场景举个例子
Admin API:https://higress.yuque.com/qnr8w5/wlbt7k/igwto2#IBobg
目前已有四个基础策略对应的路由配置字段:
需要根据对应的 ingress annotation 能力进一步细化 api 字段,提供给这个前端issue用于设计表单格式:#57
实现 Patch API 的机制
注解 | 说明 |
---|---|
higress.io/rewrite-target | 重写Path,支持捕获组(Capture Group)。 |
higress.io/upstream-vhost | 重写Host。 |
引擎侧相关issue:alibaba/higress#165
注解 | 说明 |
---|---|
higress.io/request-header-control-add | 请求在转发给后端服务时,添加指定Header。若该Header存在,则其值拼接在原有值后面。语法如下:单个Header:Key Value。多个Header:使用YAML特殊符号|,每对Key Value单独处于一行。 |
higress.io/request-header-control-update | 请求在转发给后端服务时,修改指定Header。若该Header存在,则其值覆盖原有值。语法如下:单个Header:Key Value。多个Header:使用YMAL特殊符号|,每对Key Value单独处于一行。 |
higress.io/request-header-control-remove | 请求在转发给后端服务时,删除指定Header。语法如下:单个Header:Key。多个Header:使用英文逗号分隔。 |
注解 | 说明 |
---|---|
higress.io/response-header-control-add | 请求在收到后端服务响应之后并且转发响应给客户端之前,添加指定Header。若该Header存在,则其值拼接在原有值后面。语法如下:单个Header:Key Value。多个Header:使用YAML特殊符号|,每对Key Value单独处于一行。 |
higress.io/response-header-control-update | 请求在收到后端服务响应之后并且转发响应给客户端之前,修改指定Header。若该Header存在,则其值覆盖原有值。语法如下:单个Header:Key Value。多个Header:使用YMAL特殊符号|,每对Key Value单独处于一行。 |
higress.io/response-header-control-remove | 请求在收到后端服务响应之后并且转发响应给客户端之前,删除指定Header。语法如下:单个Header:Key。多个Header:使用英文逗号分隔。 |
注解 | 说明 |
---|---|
higress.io/enable-cors | 开启或关闭跨域。 |
higress.io/cors-allow-origin | 允许的第三方站点,第三方站点之间使用英文逗号分隔,支持通配符*。默认值为*,即允许所有第三方站点。 |
higress.io/cors-allow-methods | 允许的请求方法,如GET、POST、PUT等,请求方法之间使用英文逗号分隔,支持通配符*。默认值为GET、PUT、POST、DELETE、PATCH、OPTIONS。 |
higress.io/cors-allow-headers | 允许的请求Header,Header之间使用英文逗号分隔,支持通配符*。默认值为DNT、X-CustomHeader、Keep-Alive、User-Agent、X-Requested-With、If-Modified-Since、Cache-Control、Content-Type、Authorization。 |
higress.io/cors-expose-headers | 允许暴露给浏览器的响应Header,响应Header之间使用英文逗号分隔。 |
higress.io/cors-allow-credentials | 是否允许携带凭证信息。默认允许。 |
higress.io/cors-max-age | 预检结果的最大缓存时间,单位为秒。默认值为1728000秒。 |
注解 | 说明 |
---|---|
higress.io/proxy-next-upstream-tries | 请求的最大重试次数。默认为3次。 |
higress.io/proxy-next-upstream-timeout | 请求重试的超时时间,单位秒。默认未配置超时时间。 |
higress.io/proxy-next-upstream | 请求重试条件,使用英文逗号作为分隔。默认值为error,timeout,合法值如下:error:建立连接失败。timeout:建立连接超时。http_xxx:针对具体响应状态码的情况进行重试。例如:http_502、http_403。non_idempotent:对于非幂等请求出错时进行重试。默认情况下,MSE Ingress针对非幂等POST、PATCH请求出错时不会进行重试;如果配置non_idempotent,可以开启重试。off:关闭重试。 |
参见 #108
此外,证书管理相关接口也需要能够返回由 cert-manager 维护的证书数据,并在数据模型中区分出哪些是用户管理的,哪些是系统内部维护的。
根据 #58 定义的API实现到 Ingress annotation 的对应转换
注解 | 说明 |
---|---|
higress.io/enable-cors | 开启或关闭跨域。 |
higress.io/cors-allow-origin | 允许的第三方站点,第三方站点之间使用英文逗号分隔,支持通配符*。默认值为*,即允许所有第三方站点。 |
higress.io/cors-allow-methods | 允许的请求方法,如GET、POST、PUT等,请求方法之间使用英文逗号分隔,支持通配符*。默认值为GET、PUT、POST、DELETE、PATCH、OPTIONS。 |
higress.io/cors-allow-headers | 允许的请求Header,Header之间使用英文逗号分隔,支持通配符*。默认值为DNT、X-CustomHeader、Keep-Alive、User-Agent、X-Requested-With、If-Modified-Since、Cache-Control、Content-Type、Authorization。 |
higress.io/cors-expose-headers | 允许暴露给浏览器的响应Header,响应Header之间使用英文逗号分隔。 |
higress.io/cors-allow-credentials | 是否允许携带凭证信息。默认允许。 |
higress.io/cors-max-age | 预检结果的最大缓存时间,单位为秒。默认值为1728000秒。 |
根据 #58 定义的API实现到 Ingress annotation 的对应转换
引擎侧相关issue:alibaba/higress#165
注解 | 说明 |
---|---|
higress.io/request-header-control-add | 请求在转发给后端服务时,添加指定Header。若该Header存在,则其值拼接在原有值后面。语法如下:单个Header:Key Value。多个Header:使用YAML特殊符号|,每对Key Value单独处于一行。 |
higress.io/request-header-control-update | 请求在转发给后端服务时,修改指定Header。若该Header存在,则其值覆盖原有值。语法如下:单个Header:Key Value。多个Header:使用YMAL特殊符号|,每对Key Value单独处于一行。 |
higress.io/request-header-control-remove | 请求在转发给后端服务时,删除指定Header。语法如下:单个Header:Key。多个Header:使用英文逗号分隔。 |
注解 | 说明 |
---|---|
higress.io/response-header-control-add | 请求在收到后端服务响应之后并且转发响应给客户端之前,添加指定Header。若该Header存在,则其值拼接在原有值后面。语法如下:单个Header:Key Value。多个Header:使用YAML特殊符号|,每对Key Value单独处于一行。 |
higress.io/response-header-control-update | 请求在收到后端服务响应之后并且转发响应给客户端之前,修改指定Header。若该Header存在,则其值覆盖原有值。语法如下:单个Header:Key Value。多个Header:使用YMAL特殊符号|,每对Key Value单独处于一行。 |
higress.io/response-header-control-remove | 请求在收到后端服务响应之后并且转发响应给客户端之前,删除指定Header。语法如下:单个Header:Key。多个Header:使用英文逗号分隔。 |
统一在 higress-system 命名空间下
apiVersion: v1
kind: ConfigMap
metadata:
name: domain-wildcard.abc.com
namespace: default
data:
domain: "*.abc.com"
cert: my-secret
enableHttps: force
名称为domain-开头,后面跟域名,如果出现 * 字符,替换为 wildcard
实现Nacos、Zookeeper等服务来源获取服务列表
在根目录帮忙放一个LICENSE文件吧。
参见 #108
目前 Higress 通过官方仓库已经对外提供了多个内置插件(插件列表),所以 Higress Console 需要支持为路由关联这些 Wasm 插件并配置相关参数。
用户可以在三个层次上配置 Wasm 插件:全局、域名和路由。同时考虑到未来会增加更多插件,也支持对接用户自己开发的插件,所以插件也需要单独的管理模块。插件使用 OCI 镜像的方式进行交付。所有元数据信息均保存在镜像当中。前端界面也需要拉取当前的支持的插件列表并动态生成相关的配置界面。
子任务列表:
根据API 设计文档和各个字段的数据格式,完善后端 API 中的请求数据校验机制,在数据格式不合法时抛出 ValidationException
。
基本校验
ServiceSource 模型校验
TlsCertificate 模型校验
Domain 模型校验
Route 模型校验
详情参见 #105
为了避免并发更新导致的变更相互覆盖,后端 API 在返回数据给前端是需要同时提供版本号信息(即 ResourceVersion)。前端在提交更新请求时也需要附带版本号信息(创建请求不需要)。如果后端检测到存储中的资源版本号与前端提交的版本号不符,应返回 409 Conflict。前端页面应提示用户刷新页面重新编辑。
copyRight 参考higress官网 https://higress.io/zh-cn/
服务列表,增加刷选框(前端刷选)
通过 Ingress 把K8s 内部命名空间(如:kube-system)内的服务暴露出去会有安全风险,所以应该对这部分数据进行过滤。
在返回数据时进行过滤。
N/A
详情参见 #105
KubernetesModelConverter 是负责将数据在业务模型与 K8s CRD 之间进行转换的核心模块。单元测试需要尽可能的覆盖其各个功能分支。
免去人工操作,版本发布后可以自动发布Helm制品
当前Helm包放在 OSS 上管理,可以通过github action 上传到OSS。
可以参考 seata 的配置
seata config: https://github.com/seata/seata/blob/0112719ad0e8c4225a9f59a8598f83cda296a760/pom.xml#L268
seata checkstyle.xml: https://github.com/seata/seata/blob/2.x/style/seata_checkstyle.xml
seata suppressions.xml: https://github.com/seata/seata/blob/2.x/style/seata_suppressions.xml
目前每次重新发布后,都会出现由于静态资源被缓存而导致的界面功能异常问题。被缓存的资源有两部分:
故希望能够通过优化前端构建流程的方法,解决静态资源缓存问题。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.