如何在Kubernetes特定命名空间部署Kong并通过Ingress路由至服务
解决方案
从你提供的Admin API响应能看到,Kong已经成功识别并创建了对应quick-links-service的Service资源,问题核心在于Ingress路由的生效验证和本地访问的端口转发配置,按以下步骤调整即可:
1. 确认Ingress资源状态
先检查Ingress是否被Kong正确处理:
kubectl get ingress quick-links-ingress -n default
输出中ADDRESS字段应被Kong的Ingress Controller填充,同时可通过Admin API查看路由是否生成:
curl http://localhost:8001/routes
若路由存在,说明Ingress配置已被正确解析。
2. 转发Kong的代理端口
你当前仅转发了Admin端口(8001),但实际处理用户请求的是Kong的代理端口(8000),需额外转发该端口:
# 同时转发代理端口和Admin端口 kubectl port-forward kong-kong-b7f7889d-mwlf9 -n kong 8000:8000 8001:8001
3. 本地访问服务
因为Ingress配置了host: kong.example,本地访问时需要在/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows)中添加映射:
127.0.0.1 kong.example
之后即可通过以下URL访问quick-links-service:
curl http://kong.example:8000/quick-links
由于你配置了konghq.com/strip-path: 'true',Kong会自动去掉/quick-links前缀后转发到服务的根路径。
4. 可选:调整Ingress简化本地测试
如果不想修改hosts文件,可去掉Ingress中的host字段,让Kong匹配所有主机:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: quick-links-ingress annotations: konghq.com/strip-path: 'true' spec: ingressClassName: kong rules: - http: paths: - path: /quick-links pathType: Prefix backend: service: name: quick-links-service port: number: 3000
更新Ingress后,直接通过本地地址访问:
curl http://localhost:8000/quick-links
内容的提问来源于stack exchange,提问作者confusedWarrior
相关产品推荐
相关产品推荐

