如何使用 GKE 上的入口映射不匹配的路由
How to map unmatched routes with ingress on GKE
我正在尝试通过将 ingress
对象与我们的 GKE 集群一起使用,在 GCP 上自动配置负载均衡器。
我有三个 GKE 部署,每个部署都可以在端口 8080
上使用具有唯一节点端口的服务。
使用 ingress-fanout.yaml
时,它会创建 4 个后端服务,而不是 yaml 中指定的 3 个。第 4 个服务默认为所有不匹配的路由。我假设第 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
更新:我去掉了很多原来的问题,缩小了问题的范围。当运行状况检查开始成功时,旧问题就解决了。
首先,"backends"与您指定的"paths"没有任何关系。 "backends" 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...]
我正在尝试通过将 ingress
对象与我们的 GKE 集群一起使用,在 GCP 上自动配置负载均衡器。
我有三个 GKE 部署,每个部署都可以在端口 8080
上使用具有唯一节点端口的服务。
使用 ingress-fanout.yaml
时,它会创建 4 个后端服务,而不是 yaml 中指定的 3 个。第 4 个服务默认为所有不匹配的路由。我假设第 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
更新:我去掉了很多原来的问题,缩小了问题的范围。当运行状况检查开始成功时,旧问题就解决了。
首先,"backends"与您指定的"paths"没有任何关系。 "backends" 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...]