通过Nginx Ingress处理多个子路径



我很难让Ingress控制器正确处理子路径。我的体系结构-两个服务位于一个域的不同路径上。每个服务都有自己的入口配置:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress1
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/rewrite-target: /
cert-manager.io/cluster-issuer: "letsencrypt-production-issuer"
kubernetes.io/ingress.allow-http: "false"    
spec:
tls:
- hosts:
- api.mydomain.com
secretName: my-secret
rules:
- host: api.mydomain.com
http:
paths:
- path: /path1
backend:
serviceName: service1
servicePort: 80

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress2
annotations:
kubernetes.io/ingress.class: "nginx"
cert-manager.io/cluster-issuer: "letsencrypt-production-issuer"
kubernetes.io/ingress.allow-http: "false"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- api.mydomain.com
secretName: my-secret
rules:
- host: api.mydomain.com
http:
paths:
- path: /path2
backend:
serviceName: service2
servicePort: 80

有了上面的配置,1st ingress就可以工作了,我可以在api.mydomain.com/path1上到达我的端点,同时api.myddomain.com/path2返回http 400。我做错了什么?

因此,实际问题与ingress无法找到端点有点不同。我的后端服务是安全的gRPC服务,因此希望通过https或grpcs调用。因此,将入口设置为针对安全后端运行解决了问题:

nginx.ingress.kubernetes.io/secure-backends: "true"

对于更新版本的k8s,您应该使用不同的属性。

相关内容

  • 没有找到相关文章

最新更新