Baoyuantop commented on code in PR #12448:
URL: https://github.com/apache/apisix/pull/12448#discussion_r2321091455
##########
apisix/schema_def.lua:
##########
@@ -488,6 +488,18 @@ local upstream_schema = {
description = "group name",
type = "string",
},
+ metadata_match = {
Review Comment:
It is recommended to unify it as metadata.
##########
docs/en/latest/discovery/consul.md:
##########
@@ -232,6 +232,61 @@ $ curl http://127.0.0.1:9180/apisix/admin/stream_routes/1
-H "X-API-KEY: $admin_
}'
```
+### discovery_args
+
+| Name | Type | Requirement | Default | Valid | Description
|
+|----------------| ------ | ----------- | ------- | ----- |
------------------------------------------------------------ |
+| metadata_match | object | optional | {} | | Filter service
instances by metadata using containment matching |
+
+#### Metadata filtering
+
+APISIX supports filtering service instances based on metadata. When a route is
configured with metadata conditions, only service instances whose metadata
matched with roles specified in the route's `metadata_match` configuration will
be selected.
+
+Example: If a service instance has metadata `{lane: "a", env: "prod", version:
"1.0"}`, it will match routes configured with metadata `{lane: ["a"]}` or
`{lane: ["a", "b"], env: "prod"}`, but not routes configured with `{lane:
["c"]}` or `{lane: "a", region: "us"}`.
+
+Example of routing a request with metadata filtering:
+
+```shell
+$ curl http://127.0.0.1:9180/apisix/admin/routes/5 -H "X-API-KEY: $admin_key"
-X PUT -i -d '
+{
+ "uri": "/consulWithMetadata/*",
+ "upstream": {
+ "service_name": "APISIX-CONSUL",
+ "type": "roundrobin",
+ "discovery_type": "consul",
+ "discovery_args": {
+ "metadata_match": {
+ "version": ["v1", "v2"]
Review Comment:
I have a question here, is it necessary to set the value to an array? I
checked the service meta format of consul
https://developer.hashicorp.com/consul/docs/reference/service#meta, and I think
setting the value to a string should be sufficient to reduce complexity.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]