【问题标题】:How to serve Kubernetes backend and Firebase hosting frontend from the same domain name?如何从同一个域名为 Kubernetes 后端和 Firebase 托管前端提供服务?
【发布时间】:2019-01-10 15:59:47
【问题描述】:

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

  1. 在 domain.google.com 上注册的域名
  2. 在 Firebase 托管上托管并从 example.com 提供服务的前端 Web 应用
  3. 负载均衡器后面的 Kubernetes 集群后端,外部静态 IP 1.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(默认)

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

【问题讨论】:

  • 我不完全确定,但您是否探索过使用指向 firebase 的 ExternalName 服务,然后在 Kubernetes 中使用该服务指向 Firebase 的入口控制器和使用另一个服务的后端。
  • 有趣,我需要考虑一下,谢谢。我对这种方法的第一个担忧是我将为 firebase cdn 和 kubernetes 入口流量支付两倍的费用。而且我需要为 SSL 证书找出一些东西,因为在我当前的解决方案中,Firebase 有免费的“真实”SSL,而 Kubernetes 有用于入口的自签名 SSL,当然用户不应该在浏览器中面对“不安全”的证书。

标签: firebase kubernetes firebase-hosting google-kubernetes-engine google-cloud-cdn


【解决方案1】:

方法一:

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

专业版:超级简单

缺点:浏览器需要 CORS 请求才能进行 API 调用。

方法2:

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。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-11-28
      • 2021-02-26
      • 2020-02-12
      • 2016-03-20
      • 2016-02-18
      • 2022-12-08
      • 2013-07-12
      • 1970-01-01
      • 2017-01-21
      相关资源
      最近更新 更多