bounty将在2小时内到期。回答此问题有资格获得+50信誉奖励。Sammy正在寻找来自信誉良好的来源的答案:期望将获得一个工作路由nginx ingress yaml,它可以按预期进行重写
我正在进行一个新的Kubernetes集群设置。这个设置将在25个不同的Pod中托管大约25个微服务。这些微服务将通过25个不同的NodePort服务公开。为了从外部访问它们,我尝试将nginx ingress与NLB集成(注意:所有这些设置都托管在AWS EKS中)现在,微服务使用swagger,这意味着URL中有重定向。
例如:https://example.com/customerservice -> https://example.com/swagger/index.html(customerservice svc->pod)https://example.com/orderservice -> https://example.com/swagger/index.html(orderservice svc->pod)
其他23项服务也是如此
服务工作的信息或healthpoint如果我输入整个网址如下:
https://example.com/orderservice/v3/info
https://example.com/customerservice/v3/healthcheck
如果我手动输入整个URL,上述端点可以正常工作。但是,用户希望只输入https://example.com/customerservice,它应该重定向到相应的swagger页面,如https://example.com/swagger/index.html
下面是我的ingress YAML文件,它适用于整个URL,如v3/info或healthcheck,但没有正确执行重定向。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
labels:
app: trial-ingress
name: trial-ingress
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- backend:
service:
name: customerservice-svc
port:
number: 80
path: /customerservice(/|$)(.*)
pathType: Prefix
- backend:
service:
name: orderservice-svc
port:
number: 80
path: /orderservice(/|$)(.*)
pathType: Prefix
字符串
如果我使用上面的入口并尝试加载**https://example.com/customerservice,那么它会将我重定向到https://example.com/swagger/,这意味着它试图重定向到正确的方向,但只接受一个参数/单词(swagger)**并删除其余的字符串,然后给出404错误
**预期结果:当用户尝试加载https://example.com/customerservice时,它应该重定向到customerservice
pod的https://example.com/swagger/index.html**页面,所有其他服务也是如此
2条答案
按热度按时间p5fdfcr11#
如果有帮助,可以尝试以下YAML文件:
字符串
你也可以在这个链接上阅读相关的帖子。
2ic8powd2#
要在Nginx ingress中处理使用Swagger托管微服务的Kubernetes集群的重定向,您需要设置您的ingress规则,以将请求正确重定向到相应的Swagger文档URL。
这意味着更新
rewrite-target
注解以重定向到swaggerindex.html
。然后使用更高级的nginx配置添加自定义逻辑,使用
nginx.ingress.kubernetes.io/configuration-snippet
注解完成,该注解将自定义配置添加到Location配置块(如此处所述)。你的Ingress YAML应该是:
字符串
这将把请求从
https://example.com/customerservice
重写为https://example.com/customerservice/swagger/index.html
(特定于客户服务),其他服务也是如此。你会得到:
型
(To在将其部署到生产环境之前,首先在登台环境中进行测试!)