我应该在 GKE 引擎上部署 api-gateway 吗?

Should I deploy api-gateway on GKE engine?

我正在开发一个演示项目,它有 5 个微服务 - 发现服务器、api-gateway、user-order-detail、订单和用户服务。

我会在内部公开订单和用户服务

我将在外部公开 user-order-detail 服务,该服务将使用休息端点调用其他两个服务。

1) 我应该在 kubernetes 引擎上部署发现服务器和 api 网关吗?如果不部署,将如何处理路由?

如果我不部署 api-gateway,这个 rest 调用将如何进行?

2) 此外,每个 spring-cloud 项目中都有一个 application.properties 文件。 docker 图像是否替换了 application.properties 文件?

3) 我正在使用 docker 和 kubernetes 作为第一个 time.Can 有人解释在为我的服务创建 docker 图像后我的下一步应该做什么? (只是步骤,我会弄清楚如何完成这些步骤)

更新:

正在运行的服务:

user-order-detail 负载均衡器
kubernetes ClusterIP
order-management 负载均衡器
user-management 负载均衡器

user-order-detail 命中端点以检索所有用户。 我收到此错误:虚拟主机名不匹配:user-management

请在下面找到答案:-

1) 是的,您可以在 kubernetes 引擎上部署发现服务和 api-网关,请仔细阅读本文档以了解您将公开哪种类型的服务。

Services:- https://kubernetes.io/docs/concepts/services-networking/service/

2) 您可以在构建映像时复制 application.properties 文件,或者如果您想在 运行 时覆盖。请在 Kubernetes 中创建一个 configMap 并按体积注入到 Kubernetes pod 中。请在 ConfigMap 上点击以下链接。

https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#add-configmap-data-to-a-volume

https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#add-configmap-data-to-a-volume

3) 创建图像后要做的步骤:-

  1. 将图像推送到注册表
  2. 在 kubernetes 上部署 pod
  3. 创建一个服务来公开 pod

除了 API 网关,您还可以使用 Ingress 来公开您的服务。 Ingress 更像是 kubernetes 的原生解决方案,因为它使用 kubernetes 语法进行配置,这意味着当您想要更改网关(ingress)时不需要太多重构。您可以在此处比较可用的入口:

https://kubedex.com/ingress/

如果您仍然想要一个 API 网关,我建议使用它,因为它使用 envoy,它是为 kubernetes 本机构建的

https://www.getambassador.io/