如何在 Google Kubernetes Engine 上设置可扩展自定义域和自动 SSL 的架构

How to set up an architecture of scalable custom domains & auto-SSL on Google Kubernetes Engine

我们正在研究允许客户通过我们的托管服务使用他们的域名的最佳解决方案。托管服务基于 Google App Engine 标准。要求是:

  1. 客户可以通过CNAME或A记录将自己的域名指向我们的服务器
  2. 我们的服务器应该能够使用 Let's Encrypt
  3. 自动为他们生成 SSL 证书
  4. 我们的服务器应该能够处理客户上传的自定义 SSL 证书
  5. 在我们的服务器中添加新客户(新配置、SSL 证书等)时应该稳健可靠
  6. 应该是可扩展的,并且可以处理大量自定义域和流量(例如从 0 到 10000)
  7. 最低运营成本(维护基础设施所需的时间越少越好)

Google Kubernetes Engine(以前称为 Google 容器引擎)似乎是前进的方向。是否有特定的、经过验证的方法来设置它?任何 suggestions/experiences 分享将不胜感激。

我建议通过此 link 开始设置 GKE 集群。

为了您在 GKE 上使用 SSL,我建议您创建一个在此 link 中指定的入口,如果您使用默认的 GLBC 入口控制器,它会自动在 GCP 中创建一个负载均衡器资源。生成的 LB 配置(端口、主机路径规则、证书、后端服务等)由入口对象本身的配置定义。你可以将domain域名指向Loadbalancer的IP。

如果您想将 Ingress(以及由此产生的 LB)配置为使用由“Let's Encrypt”创建的证书,您将修改在入口的 YAML 中显示的配置。 对于实际集成 Let's Encrypt for Kubernetes,实际上可以通过使用名为 cert-manager 的服务来自动获取 TLS/SSL 证书并将它们存储在秘密中。 这个 link shows how to use cert-manager with GKE。

如果您想使用自我管理的 SSL 证书,请参阅此 link for more information. The GKE is scalable by the GKE's cluster autoscaler,它会根据您想要 运行 的工作负载需求自动调整集群大小。