首页 > 解决方案 > GCP HTTP(s) 第 7 层负载平衡器中的动态 SSL 分配

问题描述

我正在探索 GCP,我喜欢它让开发人员使用如此昂贵的基础设施的方式。到现在为止我学到了很多很多东西。我不再是初学者,我遇到了这种情况,我无法找到文档或示例,或者我的想法可能是错误的。

我想构建一个自动缩放的托管解决方案,用户可以:

  1. 创建账户
  2. 创建多个网站[这些网站基本上是模板,用户可以定义某些字段并以特定方式呈现网站 | 用户不允许上传文件,而只是一些数据条目]
  3. 在网站中,用户可以连接域 [将“A”记录 DNS 条目放在他们的域中]
  4. 之后,平台会自动提供一个 SSI,网站就会启动并运行。[有点像火力基地]

我可以使用以下配置在一台服务器上轻松创建这样的项目[跳过简单的步骤,如用户身份验证等]:

  1. 我使用 ubunutu 16.04 作为具有 4GB 内存和 10GB 持久磁盘的机器类型
  2. 然后我安装nvm[一个包来管理 node.js]
  3. 之后,我使用安装特定版本的 node.jsnvm
  4. 我编写了一个简单的 javascript 包,在其中我使用 express 服务器用一些 html 响应客户端请求
  5. 为了管理 ssl,我使用了letsencrypt的certbot
  6. 我用来pm2在后台运行 javascipt 文件作为服务

在能够完成这件事之后,我可以看到一切都按照我想要的方式进行。

然后我开始探索 GCP 的负载均衡器,在那里我了解了 4 层和 7 层 LB,并在所有可能的配置中实现了一些 hello world 测试 [使用启动脚本],例如

这是我面临的主要问题: 我找不到将 SSL 动态分配给负载均衡器的传入请求的方法

在我的情况下,请求可能来自任何域,因此 GCP 负载平衡器必须具有某种配置来为特定域提供 SSL [我已经读到它可以为多达 100 个域分配 SSL,但我如何才能使事情自动化] 或者可以在那里是一种方式,而不是请求被代理[LB 生成一个新的请求到内部服务器],请求只是被重定向,以便内部服务器可以自己处理 SSL 管理

我对这些概念的理解可能在某个地方是错误的。请帮我解决问题。我想自己建造firebase-hosting clone。欢迎任何形式的回应

标签: google-cloud-platformload-balancinggcp-load-balancer

解决方案


一种方法是更新您的 JS 脚本以通过 gcloud 为每个新域生成 Google 管理的证书:

gcloud compute ssl-certificates create CERTIFICATE_NAME \
    --description=DESCRIPTION \
    --domains=DOMAIN_LIST \
    --global

然后将其应用于负载均衡器:

gcloud compute target-https-proxies update TARGET_PROXY_NAME \
    --ssl-certificates SSL_CERTIFICATE_LIST \
    --global-ssl-certificates \
    --global

请注意,负载均衡器可能需要 5 到 20 分钟才能开始使用新证书。

您可以在此处找到更多信息。


推荐阅读