ingress-nginx:如何插入access_by_lua_block{}仅为特定的位置?



我在单个host:下有多个location块,如下所示:

apiVersion: networking.k8s.io/v1
kind: ingress
metadata:
name: ingress-nginx
annotations:
kubernetes.io/ingress.calass: nginx
ngnx.ingress.kubernetes.io/use-regex: "true"
ngnx.ingress.kubernetes.io/rewrite-target: /$2
spec:
ingressClassName: nginx
rules:
- host: ingress.mydomain.org.local
http:
paths:
- path: /app1(/|$)(.*)
pathType: Prefix
backend:
service:
name: app1-service
port:
number: 5678
- path: /api(/|$)(.*)
pathType: Prefix
backend:
service:
name: api-service
port:
number: 5678

我需要插入access_by_lua_block{...}仅为一个位置,说:/api-我怎么做?我尝试了ngnx.ingress.kubernetes.ioconfiguration-snippet,像这样:

annotations:
ngnx.ingress.kubernetes.ioconfiguration-snippet: |
location ~* "^/api(/|$)(.*)" {
access_by_lua_block {
....
}
}

,但这只是在每个其他位置条目下添加一个嵌套的location ~* "^/api(/|$)(.*)"块。有什么办法可以实现吗?

正如@mdaniel所建议的,当你只需要对其中一个应用注释时,答案总是创建第二个入口资源。

多个Ingress controller在一个集群中的平稳共存是由Ingress类概念提供的,它要求以下内容:

  1. 每个Ingress Controller必须只处理其特定类的Ingress资源。

  2. 入口资源应该将ingressClassName字段设置为值,该值对应于用户想要使用的入口控制器的类。

  3. VirtualServer, VirtualServerRoute, Policy和TransportServer资源应该将ingressClassName字段设置为值,该值对应于用户想要使用的入口控制器的类。

有关Ingress资源的更多信息,请参阅本文档。

相关内容

  • 没有找到相关文章

最新更新