在AWS EKS上,我在一个集群中有三个pod,每个pod都由服务公开。问题是服务无法像这里讨论的那样相互通信。在EKS上进行吊舱间通信时出错。目前尚未得到答复,但进一步搜索表明可以通过Ingress完成。我不知道该怎么做?有人能帮忙吗?
代码:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: test
name: ingress-test
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: server-service
port:
number: 8000
我的服务器服务有/api/v1/getAll、/api/v1/updateAll等api。那么,我应该在路径中写些什么?对于数据库服务,我应该做些什么??
假设将来我制作另一个微服务,并打开另一个具有/api/v1/showImage、/api/v1/deleteImage等api的服务,我必须在ingress中写入所有路径,还是它们的另一种工作方式?
Ingress是一个非常好的解决方案,可以用不同的路径在同一域中公开前端和后端(但阅读您的其他问题,它对公开数据库没有帮助(
话虽如此,您不必在Ingress中写入所有路径(除非您愿意(,因为您可以使用pathType: Prefix
,因为它已经在您的示例中了。
让我将您链接到文档示例,这些示例解释了它是如何非常好地工作的。基本上,你可以添加一个规则:
path: /api
pathType: Prefix
为了公开/api
下的后端和所有子路径。
将第二个后端作为第一个后端放在/api
下的情况要复杂得多。如果两个Pod希望在相同的路径上公开,您可能需要以区分它们的方式列出所有子路径。
例如:
支持
/api/v1/foo/listAll
/api/v1/foo/save
/api/v1/foo/delete
后端B
/api/v1/bar/listAll
/api/v1/bar/save
/api/v1/bar/delete
然后可以在子路径/api/v1/foo
(前缀(下公开一个,在/api/v1/bar
(前缀(上公开另一个。
作为另一种选择,您可能希望使用重写目标规则将后端暴露在不同的路径,而不是它们实际期望的路径。