3

我想使用我已经拥有的三个组件来设置 Web 应用程序:

  1. 在 domain.google.com 上注册的域名
  2. 托管在 Firebase Hosting 上并提供服务的前端网络应用example.com
  3. 负载均衡器后面的 Kubernetes 集群后端,具有外部静态 IP1.2.3.4

我想从example.com/apiapi.example.com

我最好的猜测是使用 Cloud DNS 连接 IP 地址和子域(或 URL)

  • 1.2.3.4->api.exmple.com
  • 1.2.3.4->example.com/api

问题在于 Cloud DNS 使用自定义名称服务器,如下所示:

ns-cloud-d1.googledomains.com

因此,如果我设置 Google 默认名称服务器,我只能访问 Firebase 托管,如果我使用自定义名称服务器,我只能访问 Kubernetes 后端。

能够同时访问 api.example.com 和 example.com 的正确方法是什么?

编辑:作为一种临时解决方法,我将两个默认名称服务器和两个来自云 DNS 的自定义名称服务器组合在一起,如下所示:

  • ns-cloud-d1.googledomains.com(风俗)
  • ns-cloud-d2.googledomains.com(风俗)
  • ns-cloud-b1.googledomains.com(默认)
  • ns-cloud-b2.googledomains.com(默认)

但是,如果有人知道正确的方法 - 请发布答案。

4

2 回答 2

1

方法一:

example.com --> Firebase Hosting (A record)
api.example.com --> Kubernetes backend

优点:超级简单

缺点:在进行 API 调用之前浏览器需要 CORS 请求。

方法二:

example.com --> Firebase Hosting via k8s ExternalName service
example.com/api --> Kubernetes backend

不幸的是,我自己努力使这项工作与服务一起工作,type: ExternalName我所能做的就是无限重定向,我仍然无法调试。

方法3:

example.com --> Google Cloud Storage via NGINX proxy to redirect paths to index.html
example.com/api --> Kubernetes backend

如果您希望所有路由都像 SPA 一样重定向到 index.html,则需要将静态文件部署到 Cloud Storage,并在前面使用 NGINX 代理。这种方法完全不使用 Firebase 托管。

复杂之处在于 /api 重定向,这取决于您使用的 Ingress。

希望有帮助。

于 2019-01-23T08:21:26.593 回答
0

我建议创建两个主机路径。第一个是使用 NodePort 类型访问“example.com”。然后,您可以为“api.example.com”使用外部名称服务。

于 2018-08-08T20:55:38.797 回答