Skip to content

Releases: alibaba/higress

v2.1.6

30 Jul 13:53
d98f8b8
Compare
Choose a tag to compare

Higress

📋 Overview of This Release

This release includes 31 updates, covering enhancements, bug fixes, performance optimizations, and more.

Update Distribution

  • New Features: 13 items
  • Bug Fixes: 5 items
  • Refactoring and Optimization: 7 items
  • Documentation Updates: 5 items
  • Testing Improvements: 1 item

⭐ Key Highlights

This release contains 2 major updates, which are highly recommended to focus on:

  • feat: Add Higress API MCP server (#2517): The newly added Higress API MCP server functionality enhances AI Agent's management capabilities over Higress resources, supporting the creation, deletion, modification, and querying of routes and services through MCP, thereby improving the system's flexibility and maintainability.
  • Migrate WASM Go Plugins to New SDK and Go 1.24 (#2532): The underlying compilation dependency for developing Wasm Go plugins has been switched from TinyGo to native Go 1.24, improving plugin compatibility and performance, ensuring alignment with the latest technology stack, and providing users with more stable and efficient plugin support.

For more details, please refer to the detailed description of key features below.


🌟 Detailed Description of Key Features

Below are the detailed descriptions of the important features and improvements in this release:

1. feat: Add Higress API MCP server

Related PR: #2517 | Contributor: @cr7258

Usage Background

In modern microservice architectures, the API gateway, as the entry point, requires flexible and powerful configuration management capabilities. Higress, as a high-performance API gateway, provides rich features for managing routes, service origins, and plugins. However, the existing configuration management methods may not be flexible enough to meet complex operational needs. To address this issue, PR #2517 introduces the Higress API MCP Server, providing a new way to manage configurations through the Higress Console API. This feature is primarily aimed at operations personnel and developers who need advanced and dynamic management of Higress.

Feature Details

This change implements the Higress API MCP Server, re-implementing an MCP server using golang-filter that can call the Higress Console API to manage routes, service origins, and plugins. The specific implementation includes:

  1. Added the HigressClient class to handle interactions with the Higress Console API.
  2. Implemented various management tools such as route management (list-routes, get-route, add-route, update-route), service origin management (list-service-sources, get-service-source, add-service-source, update-service-source), and plugin management (get-plugin, delete-plugin, update-request-block-plugin).
  3. Modified relevant configuration files and README documentation, providing detailed configuration examples and usage instructions.
  4. Code changes involve multiple files, including config.go, client.go, server.go, etc., ensuring the completeness and extensibility of the feature.

Usage Instructions

To enable and configure the Higress API MCP Server, follow these steps:

  1. Add the MCP Server configuration in the Higress ConfigMap, specifying the URL, username, and password of the Higress Console.
  2. When starting the Higress Gateway, ensure that mcpServer.enable is set to true.
  3. Use the provided tool commands (e.g., list-routes, add-route) to manage routes, service origins, and plugins.
  4. Configuration example:
apiVersion: v1
kind: ConfigMap
metadata:
  name: higress-config
  namespace: higress-system
data:
  higress: |-
    mcpServer:
      sse_path_suffix: /sse
      enable: true
      servers:
        - name: higress-api-mcp-server
          path: /higress-api
          type: higress-api
          config:
            higressURL: http://higress-console.higress-system.svc.cluster.local
            username: admin
            password: <password>

Notes:

  • Ensure that the Higress Console URL, username, and password are correct.
  • It is recommended to use environment variables or encrypted storage for the password to enhance security.

Feature Value

The Higress API MCP Server brings the following specific benefits to users:

  1. Improved Operational Efficiency: Through a unified MCP interface, users can more conveniently manage and configure Higress resources via AI Agent, reducing the complexity and error rate of manual operations.
  2. Enhanced System Flexibility: Support for dynamic management and updating of routes, service origins, and plugins makes the system more flexible and able to quickly respond to changes in business requirements.
  3. Increased System Stability: Automated configuration management reduces the possibility of human errors, thereby enhancing the stability and reliability of the system.
  4. Easy Integration: The design of the Higress API MCP Server makes it easy to integrate with other AI agents and tools, facilitating the construction of a complete automated operations system.

2. Migrate WASM Go Plugins to New SDK and Go 1.24

Related PR: #2532 | Contributor: @erasernoob

Usage Background

With the development of the Go language, new versions provide many performance optimizations and security improvements. This PR aims to migrate WASM Go plugins from the old SDK to the new SDK and upgrade the Go version to 1.24. This not only resolves some known issues in the old version but also paves the way for future feature expansion and performance optimization. The target user group includes developers and operations personnel using Higress for microservice management and traffic control.

Feature Details

This PR mainly implements the following features: 1) Updated the workflow files for building and testing plugins to support the new Go version; 2) Modified the Dockerfile and Makefile, removing support for TinyGo and switching to the standard Go compiler for generating WASM files; 3) Updated the go.mod file, referencing new package paths and versions; 4) Adjusted the import path of the logging library, unifying the use of the new logging library. These changes allow the plugins to better utilize the new features of Go 1.24, such as improved garbage collection and more efficient compiler optimizations. Additionally, removing support for TinyGo simplifies the build process and reduces potential compatibility issues.

Usage Instructions

To enable and configure this feature, first ensure that your development environment has Go 1.24 installed. Then, you can specify the new build parameters by modifying the project's Makefile and Dockerfile. For example, set GO_VERSION ?= 1.24.4 in the Makefile and use ARG BUILDER=higress-registry.cn-hangzhou.cr.aliyuncs.com/plugins/wasm-go-builder:go1.24.4-oras1.0.0 in the Dockerfile. A typical use case is when you need to deploy new WASM plugins in Higress. Best practices include regularly updating dependencies to the latest versions and ensuring that all related code is adapted to the new version.

Feature Value

This refactoring brings multiple benefits to users: 1) Improved plugin runtime efficiency and stability, thanks to the new features and optimizations in Go 1.24; 2) Simplified build process, reducing dependency on third-party tools (such as TinyGo) and lowering maintenance costs; 3) Unified code style and dependency management, improving the readability and maintainability of the project; 4) Enhanced system security by adopting the latest Go version to fix known security vulnerabilities. These improvements make the Higress ecosystem more robust, providing a more powerful and reliable microservice management platform for users.


📝 Full Changelog

🚀 New Features (Features)

  • Related PR: #2679
    Contributor: @erasernoob
    Change Log: This PR adds support for external service FQDN in image annotations and includes corresponding test cases to ensure the correctness and stability of the new feature.
    Feature Value: Allows users to specify external FQDN as the image target, enhancing the system's flexibility and applicability, and facilitating the integration of more external resources.

  • Related PR: #2667
    Contributor: @hanxiantao
    Change Log: This PR adds support for setting a global route rate limit threshold for the AI Token rate-limiting plugin, while optimizing the underlying logic related to the cluster-key-rate-limit plugin and improving log messages.
    Feature Value: By adding support for global rate limit thresholds, users can more flexibly manage traffic, avoiding the impact of a single route's excessive traffic on the entire system's stability.

  • Related PR: #2652
    Contributor: @OxalisCu
    Change Log: This PR adds support for the first-byte timeout for LLM streaming requests in the ai-proxy plugin by modifying the provider.go file.
    Feature Value: This feature allows users to set a first-byte timeout for LLM streaming requests, improving system stability and user experience.

  • Related PR: #2650
    Contributor: @zhangjingcn
    Change Log: This PR implements the functionality to fetch ErrorResponseTemplate configuration from the Nacos MCP registry by modifying the mcp_model.go and watcher.go files to support new metadata handling.
    Feature Value: This feature enhances t...

Read more

v2.1.5

02 Jul 10:04
36bcb59
Compare
Choose a tag to compare

Higress

📋 Overview of This Release

This release includes 41 updates, covering various aspects such as feature enhancements, bug fixes, and performance optimizations.

Update Content Distribution

  • New Features: 19
  • Bug Fixes: 14
  • Refactoring Optimizations: 2
  • Documentation Updates: 6

⭐ Key Focus

This release includes 2 significant updates, which are recommended for your attention:

  • feat: add DB MCP Server execute, list tables, describe table tools (#2506): By adding these tools, users can more conveniently manage and operate databases, enhancing the system's flexibility and usability, making database operations more intuitive and efficient.
  • feat: advanced load balance policies for LLM service through wasm plugin (#2531): By introducing advanced load balancing strategies, the performance and resource utilization of LLM services have been improved, allowing users to choose the most suitable strategy to optimize their services based on their needs.

For more details, please refer to the key features section below.


🌟 Detailed Description of Key Features

Here is a detailed description of the important features and improvements in this release:

1. feat: add DB MCP Server execute, list tables, describe table tools

Related PR: #2506 | Contributor: hongzhouzi

Usage Background

In many application development scenarios, developers need to frequently interact with databases, such as executing SQL statements and viewing table structures. While the existing MCP server supports basic database query functions, it lacks more advanced operation tools. This update adds three tools: execute (execute SQL), list tables (list tables), and describe table (describe table), aiming to meet higher user demands for database management. The target user groups include, but are not limited to, database administrators, backend developers, and application developers who need to frequently interact with databases.

Feature Details

Specifically, by modifying the db.go file, new database type constants were introduced, and the new tools were registered in the server.go file. The newly added tools implement the functionality of executing arbitrary SQL statements, listing all table names, and obtaining detailed information about specific tables. The core technical points lie in using the GORM framework to handle different types of database connections and providing customized SQL query logic for each type of database. Additionally, the code changes also involved optimizing the error handling mechanism, such as unifying the error handling function handleSQLError, improving the maintainability of the code. These improvements not only enriched the MCP server's feature set but also enhanced its applicability in various database environments.

Usage Instructions

Enabling these new features is straightforward; just ensure that your MCP server configuration includes the correct database DSN and type. For the execute tool, users can send requests containing the sql parameter to perform INSERT, UPDATE, or DELETE operations; the list tables tool requires no additional parameters and can be called directly to return all table names in the current database; the describe table tool requires a table parameter to specify the table name to view. Typical use cases include, but are not limited to, periodically checking the consistency of database table structures, generating automated scripts, and verifying data before and after migration. It is important to note that when using the execute tool, caution should be exercised to avoid executing commands that may compromise data integrity.

Feature Value

This feature significantly expands the application scope of the MCP server in database management, enabling users to complete daily tasks more efficiently. It not only simplifies complex manual operations and reduces the likelihood of errors but also provides a solid foundation for building automated O&M processes. Especially for projects that need to work across multiple database platforms, this unified and flexible interface design is undoubtedly a boon. Additionally, by improving error handling logic and adding security measures (such as preventing SQL injection), this PR further ensures the stability and security of the system.


2. feat: advanced load balance policies for LLM service through wasm plugin

Related PR: #2531 | Contributor: rinfx

Usage Background

With the widespread application of large language models (LLMs), the demand for high performance and high availability is growing. Traditional load balancing strategies may not meet these requirements, especially when handling a large number of concurrent requests. The new load balancing strategies aim to address these issues by providing smarter request distribution. The target user group includes enterprises and developers who require high-performance and high-availability LLM services.

Feature Details

This PR implements three new load balancing strategies: 1. Minimum Load Strategy, implemented using WASM, suitable for gateway-api-inference-extension; 2. Global Least Request Strategy based on Redis, which tracks and manages the number of requests for each host via Redis, ensuring that requests are allocated to the host with the least current load; 3. Prompt Prefix Matching Strategy, which selects backend nodes based on prompt prefixes, and if no match is found, uses the Global Least Request Strategy. These strategies are implemented using WASM plugins, providing high scalability and flexibility.

Usage Instructions

To enable these load balancing strategies, you need to specify the corresponding strategy type and configuration parameters in the Higress gateway configuration. For example, to enable the Global Least Request Strategy based on Redis, set lb_policy to global_least_request in the configuration file and provide the FQDN, port, username, and password of the Redis service. For the Prompt Prefix Matching Strategy, set lb_policy to prefix_cache and make the corresponding configuration. Best practice is to choose the appropriate strategy based on the actual application scenario and regularly monitor and adjust the configuration to optimize performance.

Feature Value

These new load balancing strategies bring significant performance improvements to LLM services. The Minimum Load Strategy ensures that requests are allocated to the host with the least current load, thereby improving response speed and resource utilization. The Global Least Request Strategy based on Redis further optimizes resource allocation by tracking the number of requests for each host in real time. The Prompt Prefix Matching Strategy improves processing efficiency by caching and reusing KV Cache. These features not only enhance system performance and stability but also improve user experience, especially in high-concurrency scenarios.


📝 Complete Changelog

🚀 New Features (Features)

  • Related PR: #2533
    Contributor: @johnlanni
    Change Log: Added support for the subPath field, allowing users to configure rules for removing request path prefixes, and updated the Chinese and English documentation to include usage instructions for the new feature.
    Feature Value: By introducing the subPath configuration option, the flexibility and customizability of the AI proxy plugin have been enhanced, enabling developers to more finely control the request path processing logic and improve the user experience.

  • Related PR: #2514
    Contributor: @daixijun
    Change Log: This PR commented out the default tracing.skywalking configuration in values.yaml, resolving the issue where skywalking configurations were automatically added when users chose other tracing types.
    Feature Value: By removing unnecessary skywalking configurations, conflicts with user-defined tracing settings are avoided, enhancing the system's flexibility and user experience.

  • Related PR: #2509
    Contributor: @daixijun
    Change Log: This PR implemented handling of the OpenAI responses interface Body and added support for the Volcano Ark large model responses interface, achieved by extending the logic in the provider/doubao.go file.
    Feature Value: The new feature enables the system to support more types of AI response processing, particularly for users using the Volcano Ark large model, significantly enhancing the system's compatibility and flexibility.

  • Related PR: #2488
    Contributor: @rinfx
    Change Log: Added trace_span_key and as_separate_log_field configuration options, allowing the keys for logging and span attribute recording to be different and enabling log content to exist as separate fields.
    Feature Value: By providing more flexible logging and tracing data recording methods, the system's monitoring capabilities have been enhanced, helping developers better understand and optimize application performance.

  • Related PR: #2485
    Contributor: @johnlanni
    Change Log: This PR introduced the errorResponseTemplate feature, allowing the mcp server plugin to customize response content when the backend HTTP status code is greater than 300.
    ...

Read more

v2.1.5-rc.1

18 Jun 01:17
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v2.1.4...v2.1.5-rc.1

v2.1.4

10 Jun 14:24
9f5067d
Compare
Choose a tag to compare

Detailed release notes

https://github.com/alibaba/higress/tree/main/release-notes/2.1.4

What's Changed

  • feat(ai-proxy): support Amazon Bedrock Image Generation by @daixijun in #2212
  • fix: Fix the incorrect rewrite config generated for Nacos 3 MCP Servers by @CH3CHO in #2211
  • feat: update translate-readme action by @littlejiancc in #2208
  • fix: Remove the Authorization request header when using AI-proxy to proxy Gemini by @hanxiantao in #2220
  • fix : fix issue #2222 by @Erica177 in #2231
  • Add test translation workflow by @MAVRICK-1 in #2228
  • mcp server support API auth through OAS3 security schemes by @johnlanni in #2241
  • Fix : add fail strategy for wasmplugin generated by mcp server by @Erica177 in #2237
  • fix: modify log level WARN -> DEBUG in key-auth plugin by @lexburner in #2275
  • fix proxy-wasm-cpp-sdk by @johnlanni in #2281
  • feat: Supports recording request header, request body, response header and response body information in the access log by @forgottener in #2265
  • feat(mcp-server): add HackMD mcp server by @Whitea029 in #2260
  • add mcp service shebao tools by @hourmoneys in #2303
  • feat: Add a github action to copy CRD definitions from api folder to helm folder by @CH3CHO in #2268
  • feat: allow skipping higress dev image build during wasmplugin e2e tests by @cr7258 in #2264
  • feat: Refactor mcpServer.matchList config generation logic by @CH3CHO in #2207
  • add info log of ai-search plugin by @johnlanni in #2323
  • fix(ai-proxy): URL encode model name in Bedrock requests by @HecarimV in #2321
  • feat(ai-proxy): add doubao Image Generation support by @daixijun in #2331
  • feat: cluster-key-rate-limit support setting global rate limit thresholds for routes​ by @hanxiantao in #2262
  • feat(ai-proxy): support OpenAI-compatible image and audio model Mapping by @daixijun in #2341
  • fix: set "EnableSemanticCachefalse" to false when no vector configured in ai-cache by @mirror58229 in #2351
  • feat(ai-proxy): add batches & files support by @daixijun in #2355
  • feat: support dify ai-proxy e2e test || feat: support diify ai-proxy e2e test by @VinciWu557 in #2319
  • fix content-length header not remove in ai-search plugin by @johnlanni in #2363
  • feat(ai-proxy): add modelMapping regexp support by @daixijun in #2358
  • feat(ai-proxy): Fixed the issue that the API pass-through path error does not support openaiCustomUrl after openai is configured. by @daixijun in #2364
  • feat(frontend-gray): Add uniqueGrayTag configuration detection by @heimanba in #2371
  • feat(ai-proxy): add models & image generation support for gemini by @daixijun in #2380
  • feat(ai-proxy): support Google Cloud Vertex by @HecarimV in #2119
  • add upstream override wasm abi by @johnlanni in #2387
  • feat(ai-proxy): Add Claude image understanding and Tools calling capabilities by @daixijun in #2385
  • fix: refactored mcp server auto discovery logic and fix some issue by @Erica177 in #2382
  • fix : fix credential process logic for nacos mcp util and add ut for it by @Erica177 in #2394
  • fix: Support mixing line breaks in a single SSE response by @CH3CHO in #2344
  • Update CRD file in the helm folder by @github-actions in #2392

New Contributors

Full Changelog: v2.1.3...v2.1.4

v2.1.3

09 May 07:31
Compare
Choose a tag to compare

What's Changed

  • Update helm translated README.zh.md by @github-actions in #2152
  • fix: update golang filter README by @Jing-ze in #2147
  • fix : Add nacos username and password login option by @Erica177 in #2170
  • feat: Support /v1/models API in ai-proxy by @CH3CHO in #2164
  • fix(ai-statistics): adjust requestBodyBufferLimit by @HecarimV in #2192
  • fix : fix vs rewrite when mcp protocol is http by @Erica177 in #2203
  • feat: Add SSE direct proxy support to mcp-session filter by @CH3CHO in #2157
  • fix param type error by @Erica177 in #2204

Full Changelog: v2.1.2...v2.1.3

v2.1.2

29 Apr 12:55
Compare
Choose a tag to compare

What's Changed

  • feat:Getting MatchLabels dynamically via gatewaySelectorKey/Value #1857 by @waTErMo0n in #1883
  • fix: update module replacements by @Similarityoung in #2090
  • feat: optimize elasticsearch ai-search plugin and update related docs" by @cr7258 in #2100
  • feat: Support extracting model argument from body in multipart/form-data format by @CH3CHO in #1940
  • update mcp descriptions by @mirror58229 in #2105
  • feat(ai-proxy): support Amazon Bedrock by @HecarimV in #2039
  • update github & e2bdev mcp descriptions by @mirror58229 in #2107
  • test: add test for /pkg/ingress/kube/common by @Tsukilc in #2123
  • add mcp yuque descriptions by @mirror58229 in #2125
  • fix: ai_data_masking add compatibility handling for non-compliant API response structures by @007gzs in #2130
  • fix: Refactor MCP Server into MCP Session and MCP Server by @Jing-ze in #2120
  • feat : support mcp server auto discovery for nacos registry by @Erica177 in #2122
  • Update helm translated README.zh.md by @github-actions in #2141
  • fix : when nacos push empty service instance list, should skip generate by @Erica177 in #2144
  • fix: make mcp server redis client config based by @Jing-ze in #2145
  • When the service source type is nacos3, if mcpserver is turned off, then the discovery mechanism of nacos2 will be enabled by @johnlanni in #2150
  • add: add mcp-context7 descriptions by @mirror58229 in #2149

New Contributors

Full Changelog: v2.1.1...v2.1.2

v2.1.2-rc.1

28 Apr 15:03
Compare
Choose a tag to compare

What's Changed

  • feat:Getting MatchLabels dynamically via gatewaySelectorKey/Value #1857 by @waTErMo0n in #1883
  • fix: update module replacements by @Similarityoung in #2090
  • feat: optimize elasticsearch ai-search plugin and update related docs" by @cr7258 in #2100
  • feat: Support extracting model argument from body in multipart/form-data format by @CH3CHO in #1940
  • update mcp descriptions by @mirror58229 in #2105
  • feat(ai-proxy): support Amazon Bedrock by @HecarimV in #2039
  • update github & e2bdev mcp descriptions by @mirror58229 in #2107
  • test: add test for /pkg/ingress/kube/common by @Tsukilc in #2123
  • add mcp yuque descriptions by @mirror58229 in #2125
  • fix: ai_data_masking add compatibility handling for non-compliant API response structures by @007gzs in #2130
  • fix: Refactor MCP Server into MCP Session and MCP Server by @Jing-ze in #2120
  • feat : support mcp server auto discovery for nacos registry by @Erica177 in #2122

New Contributors

Full Changelog: v2.1.1...v2.1.2-rc.1

v2.1.1

18 Apr 08:48
Compare
Choose a tag to compare

What's Changed

  • feat: update custom-response plugin to returns different content for different response statuse by @Fengxq2014 in #2002
  • polish translate-readme action by @littlejiancc in #2020
  • Feat dynamic tool reset by @luoxiner in #2031
  • fix: ai statistics doc by @cr7258 in #2040
  • mcp: support amap auto ip detection by @johnlanni in #2041
  • [frontend-gray] Reconstruct the business logic to be more friendly towards micro frontends and multi-version support. by @heimanba in #2011
  • support nacos namespace by @luoxiner in #2045
  • fix: fix param mapping use %v instead of %s by @luoxiner in #2046
  • fix: Escape asterisk characters in ai-proxy documents by @CH3CHO in #1999
  • feat:add GetContextId func for HttpContext by @hzhswyz in #2043
  • Fix the issue of traps caused by gc in wasm plugins compiled with go 1.24 by @johnlanni in #2054
  • feat: support config store and redis configuration optional in mcp server by @Jing-ze in #2035
  • feat: Support building waf plugin using Makefile by @CH3CHO in #2061
  • rm plugin id after use by @rinfx in #2070
  • add mcp servers by @johnlanni in #2076
  • fix wasm-go/jwt-auth claims_to_headers bug by @liseri in #2057
  • add mcp descriptions by @mirror58229 in #2080
  • fix: support mcp server database reconnect and fix tool/list method denied by @Jing-ze in #2074
  • Enhance the compatibility of AI observability plugins with different LLM suppliers by @rinfx in #2088

New Contributors

Full Changelog: v2.1.0...v2.1.1

v2.1.1-rc.1

14 Apr 13:13
Compare
Choose a tag to compare

What's Changed

  • feat: update custom-response plugin to returns different content for different response statuse by @Fengxq2014 in #2002
  • polish translate-readme action by @littlejiancc in #2020
  • Feat dynamic tool reset by @luoxiner in #2031
  • fix: ai statistics doc by @cr7258 in #2040
  • mcp: support amap auto ip detection by @johnlanni in #2041
  • [frontend-gray] Refactor the business logic to be more friendly towards micro frontends and multi-version support. by @heimanba in #2011
  • support nacos namespace by @luoxiner in #2045
  • fix: fix param mapping use %v instead of %s by @luoxiner in #2046
  • fix: Escape asterisk characters in ai-proxy documents by @CH3CHO in #1999
  • feat:add GetContextId func for HttpContext by @hzhswyz in #2043
  • Fix the issue of traps caused by gc in wasm plugins compiled with go 1.24 by @johnlanni in #2054
  • feat: support config store and redis configuration optional in mcp server by @Jing-ze in #2035

Full Changelog: v2.1.0...v2.1.1-rc.1

v2.1.0

02 Apr 09:05
2467004
Compare
Choose a tag to compare

What's Changed

Read more