首页 文章

如何在GKE上映射具有入口的不匹配路由

提问于
浏览
0

我正在尝试通过将 ingress 对象与我们的GKE集群一起在GCP上自动配置负载均衡器 .

我有三个GKE部署,每个部署都有一个服务端口 8080 ,具有唯一的nodePort .

使用 ingress-fanout.yaml 时,它会创建4个后端服务,而不是yaml中指定的3个后端服务 . 第4个服务默认为所有不匹配的路由 . 我假设第四个服务是因为我们不匹配yaml中未映射的路由 .

如何将不匹配的路由映射到其中一个服务?那可能吗?

这是 ingress-fanout.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: fanout-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "our-static-ip"
    ingress.gcp.kubernetes.io/pre-shared-cert: "our-ssl-cert"
    kubernetes.io/ingress.allow-http: "false"
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
spec:
  rules:
  - host: our-website.com
    http:
      paths:
      - path: /*
        backend:
          serviceName: li-frontend
          servicePort: 8080
      - path: /backend/*
        backend:
          serviceName: li-django
          servicePort: 8080
      - path: /notifications/*
        backend:
          serviceName: li-notifications
          servicePort: 8080

Update: 我删除了许多原始问题并缩小了问题的范围 . 当 Health 检查开始成功时,这清除了旧问题 .

1 回答

  • 0

    首先,“后端”与您指定的“路径”无关 . GCP控制台上的“后端”指向您的GKE节点池 .

    Ingress支持添加默认后端 . 您本可以尝试搜索"ingress default backend" . 你可以在这里找到关于这方面的文件:https://kubernetes.io/docs/concepts/services-networking/ingress/#single-service-ingress

    基本上这样做会在没有其他匹配时设置默认后端:

    spec:
      backend:
        serviceName: testsvc
        servicePort: 80
    rules:
      [...your stuff here...]
    

相关问题