Skip to content

discovery_args not work in upstream when using nacos #12392

@Roronoa-Zoro

Description

@Roronoa-Zoro

Description

apisix: 3.13.0

configure nacos as discovery tool, and in one service, specify a metadata as lane:laneA, second machine didn't specify this param, I hope discovery_args can filter out correct Ip(which metadata include lane), but it didn't.
route/upstream configuration.

{
  "id": "l-swagger-demo",
  "priority": 20,
  "uri": "/*",
  "vars": [
          ["http_lane", "==", "laneA"]   
   ],
  "upstream": {
    "type": "roundrobin",
    "discovery_type":"nacos",
    "service_name":"l-swagger-demo",
    "discovery_args":{
      "metadata": {
        "lane":"laneA"
      }
     }
  },
  "plugins": {
          "proxy-rewrite": {
            "headers": {
              "X-Lane": "$http_lane"   
            }
          }
    }
}

and this is result when I query l-swagger-demo from nacos. above condition didn't work.
Can anyone help??? Thanks a lot.

"discovery_args":{
      "metadata": {
        "lane":"laneA"
      }
     }
{
  "name": "DEFAULT_GROUP@@l-swagger-demo", 
  "groupName": "DEFAULT_GROUP",
  "clusters": "",
  "cacheMillis": 10000,
  "hosts": [
    {
      "ip": "1.1.1.5", 
      "port": 20882,
      "weight": 1,
      "healthy": true,
      "enabled": true,
      "ephemeral": true,
      "clusterName": "DEFAULT",
      "serviceName": "DEFAULT_GROUP@@l-swagger-demo", 
      "metadata": {
        "dubbo.metadata-service.url-params": "{\"serialization\":\"kryo\",\"prefer.serialization\":\"kryo\",\"version\":\"1.0.0\",\"dubbo\":\"2.0.2\",\"release\":\"3.3.4\",\"side\":\"provider\",\"port\":\"20882\",\"protocol\":\"dubbo\"}",
        "dubbo.endpoints": "[{\"port\":20882,\"protocol\":\"dubbo\"}]",
        "dubbo.metadata.revision": "3df18f28cfb",
        "dubbo.metadata.storage-type": "local",
        "meta-v": "1.0.0",
        "timestamp": "1750848167084"
      },
      "instanceHeartBeatInterval": 5000,
      "instanceHeartBeatTimeOut": 15000,
      "ipDeleteTimeout": 30000
    },
    {
      "ip": "1.1.1.5", 
      "port": 8080,
      "weight": 1,
      "healthy": true,
      "enabled": true,
      "ephemeral": true,
      "clusterName": "DEFAULT",
      "serviceName": "DEFAULT_GROUP@@l-swagger-demo", 
      "metadata": {
        "preserved.register.source": "SPRING_CLOUD"
      },
      "instanceHeartBeatInterval": 5000,
      "instanceHeartBeatTimeOut": 15000,
      "ipDeleteTimeout": 30000
    },
    {  // this is my local machine, it should only return this one
      "instanceId": "192.168.3.60#8871#DEFAULT#DEFAULT_GROUP@@l-swagger-demo", 
      "ip": "192.168.3.60",
      "port": 8871,
      "weight": 1,
      "healthy": true,
      "enabled": true,
      "ephemeral": true,
      "clusterName": "DEFAULT",
      "serviceName": "DEFAULT_GROUP@@l-swagger-demo", 
      "metadata": {
        "preserved.register.source": "SPRING_CLOUD",
        "lane": "laneA"
      },
      "instanceHeartBeatInterval": 5000,
      "instanceHeartBeatTimeOut": 15000,
      "ipDeleteTimeout": 30000
    }
  ],
  "lastRefTime": 1751367257663,
  "checksum": "",
  "allIPs": false,
  "reachProtectionThreshold": false,
  "valid": true
}

Environment

  • APISIX version (run apisix version):
  • Operating system (run uname -a):
  • OpenResty / Nginx version (run openresty -V or nginx -V):
  • etcd version, if relevant (run curl http://127.0.0.1:9090/v1/server_info):
  • APISIX Dashboard version, if relevant:
  • Plugin runner version, for issues related to plugin runners:
  • LuaRocks version, for installation issues (run luarocks --version):

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestquestionlabel for questions asked by users

Type

No type

Projects

Status

🏗 In progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions