配置Kong AWS Lambda插件后访问/lambda路径报无匹配路由错误
问题原因及解决方法
核心问题
你混淆了Ingress控制器的作用:当前集群用的是AWS ALB Ingress Controller(负责管理阿里云负载均衡),而非Kong Ingress Controller。这导致:
- 新增的
/lambdaIngress仅配置了ALB的转发规则,但不会在Kong网关内部生成对应的路由(Route),Kong无法识别/lambda路径,因此抛出no Route matched错误。 - 绑定在ALB Ingress上的
konghq.com/plugins注解无效——Kong的插件必须绑定到自身的Route、Service或Consumer资源,而非ALB的Ingress。
解决步骤
1. 创建占位Service
Kong Route必须关联一个Kubernetes Service,即使Lambda插件不需要真实后端,也需要一个占位服务:
apiVersion: v1 kind: Service metadata: name: lambda-dummy-service spec: ports: - port: 80 targetPort: 80 selector: app: lambda-dummy # 无需对应真实Pod
2. 配置Kong路由并绑定插件
通过KongRoute CRD在Kong内部创建/lambda路径的路由,并将Lambda插件绑定到该路由:
apiVersion: configuration.konghq.com/v1 kind: KongRoute metadata: name: lambda-route annotations: konghq.com/plugins: aws-lambda-example # 绑定已创建的Lambda插件 route: hosts: - xxxxx # 替换为你的域名 paths: - /lambda service: name: lambda-dummy-service port: 80
或者直接修改原有KongPlugin,通过targetRef绑定到路由:
apiVersion: configuration.konghq.com/v1 kind: KongPlugin metadata: name: aws-lambda-example targetRef: kind: KongRoute name: lambda-route namespace: default # 替换为你的命名空间 plugin: aws-lambda config: aws_key: xxx aws_secret: xxxx aws_region: xxxx function_name: test-lambda forward_request_body: true forward_request_headers: true forward_request_uri: true
3. 调整ALB Ingress规则优先级
合并两个Ingress为一个,确保更具体的/lambda路径优先匹配,避免被/*规则拦截:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: kong-gateway-ingress annotations: alb.ingress.kubernetes.io/conditions.rule-lambda: | [{"field":"path-pattern","pathPatternConfig":{"values":["/lambda"]}}] alb.ingress.kubernetes.io/conditions.rule-default: | [{"field":"path-pattern","pathPatternConfig":{"values":["/*"]}}] spec: rules: - host: xxxxx # 替换为你的域名 http: paths: - path: /lambda pathType: ImplementationSpecific backend: service: name: kong-gw-ingress-gateway-proxy port: number: 443 - path: /* pathType: ImplementationSpecific backend: service: name: kong-gw-ingress-gateway-proxy port: number: 443
验证配置
- 检查KongRoute状态:
kubectl get kongroutes
- 访问
mydomain/lambda测试是否正常转发到Lambda函数。
内容的提问来源于stack exchange,提问作者Linh Nguyen
相关产品推荐
相关产品推荐

