azure - AKS - 将插件 HTTP 应用程序路由与 nginx 重写规则结合起来?

标签 azure nginx kubernetes kubernetes-ingress azure-aks

我正在使用 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 时,它不起作用,因为重写目标 /$1 似乎没有被考虑在内。我只会收到 404 - 因为护士服务本身确实期望调用/foo 而不是/nurse/foo

这是否可以开始配置,如果可以,知道我的错误在哪里吗?

enter image description here

最佳答案

以下内容将重写路径,以便对 /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

关于azure - AKS - 将插件 HTTP 应用程序路由与 nginx 重写规则结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64535744/

相关文章:

azure - 创建不带配置文件的 ApplicationInsight TelemetryConfiguration

angular - Azure Web App HTTP 错误 414 - URL 请求太长

sql - 如何从 bash 脚本格式化 PostgreSQL 查询中的引号

kubernetes - Istio 直接 Pod 到 Pod 通信

http - 如何在 Nginx 服务器上允许 PUT 文件请求?

kubernetes - 警戒线和污点和容忍之间的区别(污点效应-NoExecute)

azure - 将 Azure DevOps 中选定的工件作为 docker 镜像部署到 ECR

azure - ILogger 的 LogWarning、LogInformation 和 LogDebug 使用什么类型的 Azure 警报信号?

django - 如何在 Django 中将任何 API 请求从 http 重定向到 https?

laravel - 如何设置同一IP地址80端口的域名和子域名?