【发布时间】:2020-06-21 01:06:30
【问题描述】:
我们有几个需要相互通信的微服务(基于 NodeJS 的应用程序),其中两个使用 Redis 和 PostgreSQL。以下是我的微服务的名称。他们每个人都有自己的 SCM 存储库,Helm Chart.Helm 版本是 3.0.1。我们有两个环境,每个环境有两个 values.yaml。每个集群也有三个节点。
首先,在最终用户操作之后,UI 服务触发而不是转到后端。根据最终用户的请求,后端服务需要与 Market、Auth 和 API 等任何服务进行通信。某些情况下 API 和 Market 微服务也需要与 Auth 微服务进行通信。
- 用户界面 -->
- 后端
- 市场 --> 使用 postgreSQL
- Auth --> 使用 Redis
- API
所以我的问题是,
在微服务之间进行通信时我们应该注意什么?
my-svc-namespace.svc.cluster.local是否足以提供给开发人员,还是我们应该在每个 pod 中也指定 ENV?我们的微服务是 NodeJS 应用程序。开发商如何。将在应用程序源代码中处理这个?如果第一个问题的答案是肯定的,他们是否使用此服务名称?
我们想使用每个环境的主机通过入口公开我们的应用程序吗?我猜应该只为 UI 微服务启用入口,对吗?
测试每个服务是否可以相互通信的最佳方法是什么?
kubectl get svc --all-namespaces
NAMESPACE NAME TYPE
database my-postgres-postgresql-helm ClusterIP
dev my-ui-dev ClusterIP
dev my-backend-dev ClusterIP
dev my-auth-dev ClusterIP
dev my-api-dev ClusterIP
dev my-market-dev ClusterIP
dev redis-master ClusterIP
ingress ingress-traefik NodePort
【问题讨论】:
标签: kubernetes kubernetes-helm