如何解决AKS-将插件HTTP应用程序路由与Nginx重写规则结合在一起吗?
我正在使用Azure AKS插件进行HTTP应用程序路由,如here所述。我使用Terraform部署了它,并且通常可以正常工作:
resource "kubernetes_ingress" "ingress" {
metadata {
name = "nurse-ingress"
namespace = kubernetes_namespace.nurse.metadata[0].name
annotations = {
"kubernetes.io/ingress.class" = "addon-http-application-routing"
"nginx.ingress.kubernetes.io/rewrite-target" = "/$1"
}
}
wait_for_load_balancer = true
spec {
backend {
service_name = "nurse-service"
service_port = 80
}
rule {
host = "nurseapp.${azurerm_kubernetes_cluster.main.addon_profile[0].http_application_routing[0].http_application_routing_zone_name}"
http {
path {
backend {
service_name = kubernetes_service.app.metadata[0].name
service_port = 80
}
path = "/app/(.*)"
}
path {
backend {
service_name = kubernetes_service.nurse.metadata[0].name
service_port = 80
}
path = "/nurse/(.*)"
}
}
}
}
}
但是,它仅适用于默认后端(即path = /)。当我在/ nurse或/ app上调用URL时,该URL不起作用,因为似乎未考虑重写目标/$1
。我只会得到一个404-因为护士服务本身确实希望在/ foo而不是在/ nurse / foo
应该可以从头开始进行配置吗?如果可以的话,知道我的错误在哪里吗?
解决方法
以下内容将重写路径,以便将 /sample/suffix
的请求重写为 /suffix
:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sample-ingress
annotations:
kubernetes.io/ingress.class: addon-http-application-routing
nginx.ingress.kubernetes.io/rewrite-target: $2
spec:
rules:
- host: sample.YOUR-ID.westeurope.aksapp.io
http:
paths:
- path: /sample/
pathType: Prefix
backend:
service:
name: sample
port:
number: 80
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。