我正在尝试为我的 microk8s 杂波上的 nginx 入口控制器编写 2 个入口规则:
api
服务)。 RPC 路径均遵循以下模式:/thing.v1.ThingService/AMethod
,例如:/pizzas.v1.PizzasService/ListFlavours
fe
服务)这就是我所拥有的:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: fanout-ingress
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
cert-manager.io/issuer: letsencrypt-prod
spec:
ingressClassName: nginx
rules:
- host: dev.fancy.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: fe
port:
number: 80
tls:
- hosts:
- dev.fancy.com
secretName: letsencrypt-prod-tls
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: fanout-ingress-grpc
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
nginx.ingress.kubernetes.io/backend-protocol: 'GRPC'
cert-manager.io/issuer: letsencrypt-prod
spec:
ingressClassName: nginx
rules:
- host: dev.fancy.com
http:
paths:
- path: "/.*Service.*"
pathType: ImplementationSpecific
backend:
service:
name: api
port:
number: 8080
tls:
- hosts:
- dev.fancy.com
secretName: letsencrypt-prod-tls
在此配置中,调用
/pizzas.v1.PizzasService/ListFlavours
不起作用,它会返回 404。
如果我在
fanout-ingress-grpc
规则中使用这个更具体的配置,一切都会正常:
http:
paths:
- path: /pizzas.v1.PizzasService/ListFlavours"
pathType: ImplementationSpecific
所以看来是正则表达式不起作用。请给我任何指导吗?
根据文档,您可以使用此注释:
nginx.ingress.kubernetes.io/use-regex:“true”