我们正在使用Azure应用程序G/w入口控制器来公开托管在AKS中的服务。如。名为abc的服务在AKS中托管,如下
apiVersion: v1
kind: Service
metadata:
labels:
project: abc
app: abc
env: dev
name: abc
namespace: abc
spec:
ports:
- name: http
# This is the external port of the cluster
port: 8443
protocol: TCP
targetPort: http
selector:
project: abc
app: abc
env: dev
type: ClusterIP
入口配置
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-abc
namespace: abc
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/backend-path-prefix: "/"
rules:
- http:
paths:
- backend:
serviceName: abc
servicePort: 9000
path: /abc*
问题陈述
前端将发送请求到后端,如:https://app-gw-ip/abc/operation.
App G/w应用合适的路由规则,将request_uri转换为"//operation"abc">";在URL路径被"/">覆盖因为后端路径前缀注释。而我们希望request_uri为">/operation">
是否有办法设置后端路径前缀为空字符串?
我要替换"abc/">在URL路径中使用"/"目前它取代了"abc">与"/">.
如果我不使用后端路径前缀,那么后端uri路径将是"abc/operation"这将返回404,因为abc服务没有任何名为abc/operation的端点。
仅使用path作为path: /abc/*
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-abc
namespace: abc
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/backend-path-prefix: "/"
rules:
- http:
paths:
- backend:
serviceName: abc
servicePort: 9000
path: /abc/*