如何在GKE上通过入口映射不匹配的路由

时间:2018-08-19 22:00:56

标签: kubernetes google-cloud-platform load-balancing google-kubernetes-engine

我正在尝试通过在我们的GKE群集中使用ingress对象在GCP上自动设置负载均衡器。

我有三个GKE部署,每个部署都可以在端口8080上的服务中使用,该服务具有唯一的nodePort。

使用ingress-fanout.yaml时,它将创建4个后端服务,而不是yaml中指定的3个。第四项服务默认为所有不匹配的路由。我认为第四项服务是因为我们在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

更新:我删除了许多原始问题,并缩小了问题范围。当健康检查开始成功时,就清除了旧问题。

1 个答案:

答案 0 :(得分:0)

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

Ingress支持添加默认后端。您可能已经尝试过搜索“入口默认后端”。您可以在以下位置找到有关此文档的文档:https://kubernetes.io/docs/concepts/services-networking/ingress/#single-service-ingress

如果没有其他匹配项,基本上这样做会设置默认的后端:

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