From bb4046b9d884c43028fadafeb2b2f4c8520db333 Mon Sep 17 00:00:00 2001 From: arch3rPro <30855883+arch3rPro@users.noreply.github.com> Date: Sat, 9 Aug 2025 18:29:44 +0800 Subject: [PATCH] feat: add app Higress --- README.md | 9 +++++ apps/higress/README.md | 45 +++++++++++++++++++++++++ apps/higress/README_en.md | 45 +++++++++++++++++++++++++ apps/higress/data.yml | 28 +++++++++++++++ apps/higress/latest/data.yml | 32 ++++++++++++++++++ apps/higress/latest/docker-compose.yml | 22 ++++++++++++ apps/higress/logo.png | Bin 0 -> 39444 bytes 7 files changed, 181 insertions(+) create mode 100644 apps/higress/README.md create mode 100644 apps/higress/README_en.md create mode 100644 apps/higress/data.yml create mode 100644 apps/higress/latest/data.yml create mode 100644 apps/higress/latest/docker-compose.yml create mode 100644 apps/higress/logo.png diff --git a/README.md b/README.md index 71b4bba..cbbbecb 100644 --- a/README.md +++ b/README.md @@ -555,6 +555,15 @@ AI驱动的开源代码知识库与文档协作平台,支持多模型、多数 + +Higress +
Higress +
+ +🌐 阿里巴巴开源的下一代云原生网关 + +latest • [官网链接](https://github.com/alibaba/higress) + diff --git a/apps/higress/README.md b/apps/higress/README.md new file mode 100644 index 0000000..5f66d89 --- /dev/null +++ b/apps/higress/README.md @@ -0,0 +1,45 @@ +# Higress + +Higress 是阿里巴巴开源的下一代云原生网关,实现了流量网关、微服务网关、安全网关三合一的高集成能力,深度集成 Dubbo、Nacos、Sentinel 等微服务技术栈,能够帮助用户大幅降低网关的部署和运维成本。 + +![](https://cdn.jsdelivr.net/gh/xiaoY233/PicList@main/public/assets/Higress.png) + +![](https://img.shields.io/badge/Copyright-arch3rPro-ff9800?style=flat&logo=github&logoColor=white) + +## 简介 + +Higress 是基于 Istio 和 Envoy 构建的下一代云原生网关,具有以下特点: + +- **高性能**:基于 Envoy 构建,提供高性能的数据面能力 +- **可扩展**:支持 Wasm、Lua 脚本扩展 +- **多协议**:支持 HTTP、HTTPS、HTTP2、gRPC、Dubbo 等多种协议 +- **服务发现**:支持 Kubernetes、Nacos、Consul、Eureka 等多种服务发现机制 +- **安全防护**:内置 WAF、限流、熔断等安全防护能力 + +## 使用方法 + +### 访问管理控制台 + +安装完成后,可以通过以下地址访问 Higress 的管理控制台: + +``` +http://your-server-ip:8001/higress-console +``` + +### 配置网关 + +1. 登录管理控制台 +2. 创建路由规则 +3. 配置服务发现 +4. 设置安全策略 + +## 端口说明 + +- **8080**: HTTP 端口,用于处理 HTTP 请求 +- **8443**: HTTPS 端口,用于处理 HTTPS 请求 +- **8001**: 管理控制台端口,用于访问 Higress 控制台 + +## 更多信息 + +- [官方文档](https://higress.io/zh-cn/docs/overview/what-is-higress) +- [GitHub 仓库](https://github.com/alibaba/higress) \ No newline at end of file diff --git a/apps/higress/README_en.md b/apps/higress/README_en.md new file mode 100644 index 0000000..e4a99a6 --- /dev/null +++ b/apps/higress/README_en.md @@ -0,0 +1,45 @@ +# Higress + +Higress is Alibaba's next-generation cloud-native gateway that integrates traffic gateway, microservice gateway, and security gateway capabilities. It deeply integrates with microservice technology stacks such as Dubbo, Nacos, and Sentinel, helping users significantly reduce gateway deployment and maintenance costs. + +![](https://cdn.jsdelivr.net/gh/xiaoY233/PicList@main/public/assets/Higress.png) + +![](https://img.shields.io/badge/Copyright-arch3rPro-ff9800?style=flat&logo=github&logoColor=white) + +## Introduction + +Higress is built on Istio and Envoy, offering the following features: + +- **High Performance**: Built on Envoy, providing high-performance data plane capabilities +- **Extensibility**: Support for Wasm and Lua script extensions +- **Multi-protocol**: Support for HTTP, HTTPS, HTTP2, gRPC, Dubbo, and other protocols +- **Service Discovery**: Support for Kubernetes, Nacos, Consul, Eureka, and other service discovery mechanisms +- **Security Protection**: Built-in WAF, rate limiting, circuit breaking, and other security protection capabilities + +## Usage + +### Accessing the Management Console + +After installation, you can access the Higress management console at: + +``` +http://your-server-ip:8001/higress-console +``` + +### Configuring the Gateway + +1. Log in to the management console +2. Create routing rules +3. Configure service discovery +4. Set security policies + +## Port Information + +- **8080**: HTTP port for handling HTTP requests +- **8443**: HTTPS port for handling HTTPS requests +- **8001**: Management console port for accessing the Higress console + +## More Information + +- [Official Documentation](https://higress.io/en-us/docs/overview/what-is-higress) +- [GitHub Repository](https://github.com/alibaba/higress) \ No newline at end of file diff --git a/apps/higress/data.yml b/apps/higress/data.yml new file mode 100644 index 0000000..4d07f4a --- /dev/null +++ b/apps/higress/data.yml @@ -0,0 +1,28 @@ +name: Higress +tags: + - 网关 + - 开发工具 +title: 阿里巴巴开源的下一代云原生网关 +description: 阿里巴巴开源的下一代云原生网关,实现了流量网关、微服务网关、安全网关三合一的高集成能力 +additionalProperties: + key: higress + name: Higress + tags: + - Gateway + - DevTool + shortDescZh: 阿里巴巴开源的下一代云原生网关 + shortDescEn: Alibaba's next-generation cloud-native gateway + type: network + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://higress.io/ + github: https://github.com/alibaba/higress + document: https://higress.io/zh-cn/docs/overview/what-is-higress + architectures: + - amd64 + - arm64 + description: + en: Higress is Alibaba's next-generation cloud-native gateway that integrates traffic gateway, microservice gateway, and security gateway capabilities. + zh: Higress 是阿里巴巴开源的下一代云原生网关,实现了流量网关、微服务网关、安全网关三合一的高集成能力。 + memoryRequired: 1024 diff --git a/apps/higress/latest/data.yml b/apps/higress/latest/data.yml new file mode 100644 index 0000000..81ea8ec --- /dev/null +++ b/apps/higress/latest/data.yml @@ -0,0 +1,32 @@ +additionalProperties: + formFields: + - default: 8080 + envKey: PANEL_APP_PORT_HTTP + labelEn: HTTP Port + labelZh: HTTP 端口 + required: true + rule: paramPort + type: number + label: + en: HTTP Port + zh: HTTP 端口 + - default: 8443 + envKey: PANEL_APP_PORT_HTTPS + labelEn: HTTPS Port + labelZh: HTTPS 端口 + required: true + rule: paramPort + type: number + label: + en: HTTPS Port + zh: HTTPS 端口 + - default: 8001 + envKey: PANEL_APP_PORT_ADMIN + labelEn: Admin Port + labelZh: 管理端口 + required: true + rule: paramPort + type: number + label: + en: Admin Port + zh: 管理端口 \ No newline at end of file diff --git a/apps/higress/latest/docker-compose.yml b/apps/higress/latest/docker-compose.yml new file mode 100644 index 0000000..46e29b0 --- /dev/null +++ b/apps/higress/latest/docker-compose.yml @@ -0,0 +1,22 @@ +services: + higress: + image: 'higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:latest' + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - '${PANEL_APP_PORT_HTTPS}:8443' + - '${PANEL_APP_PORT_HTTP}:8080' + - '${PANEL_APP_PORT_ADMIN}:8001' + volumes: + - 'higress_data:/data' + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true + +volumes: + higress_data: diff --git a/apps/higress/logo.png b/apps/higress/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb6b64a6c7063530228ceeca266bca4a144926e GIT binary patch literal 39444 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