你正在查看的文档所针对的是 Kubernetes 版本: v1.27

Kubernetes v1.27 版本的文档已不再维护。你现在看到的版本来自于一份静态的快照。如需查阅最新文档,请点击 最新版本。

公司 Ygrene 地点 Petaluma, Calif 行业 清洁能源融资

挑战

作为一家 PACE(清洁能源资产评估)融资公司,Ygrene 自 2010 年以来已经为超过 10 亿的贷款提供资金。为了批准和处理这些贷款,“我们有很多正在聚合的数据源,而且我们也有许多系统需要对这些数据进行改动,”Ygrene 开发经理 Austin Adams 说。该公司正在使用大量服务器,“我们刚刚达到能够垂直扩展它们的极限。我们有一个非常不稳定的系统,它变得不知所措,要求只是做后台数据处理的实时。用户看到的性能很差。我们需要一个解决方案,不需要我们对代码库进行大量重构。作为一家金融公司,Ygrene 还需要确保他们安全地传输应用程序。”

解决方案

从 Engine Yard 和 Amazon Elastic Beanstalk 上迁移了应用后,Ygrene 团队采用云原生技术和实践:使用 Kubernetes 来帮助垂直扩展和分配工作负载,使用 Notary 加入构建时间控制和获取使用第三方依赖的可信赖 Docker 镜像,使用 Fluentd “掌握堆栈中的所有情况”,这些都运行在 Amazon EC2 Spot 上。

影响

以前,部署通常需要三到四个小时,而且每周或每两周要把一些两三个月工作量的任务在系统占用低的时候进行部署。现在,他们用 5 分钟来配置 Kubernetes,然后用一个小时进行整体部署与烟雾测试。Adams 说:“我们每周可以部署三到四次,只需一周或两天的工作量。”“我们在工作周、白天的任意时间进行部署,甚至不需要停机。以前我们不得不请求企业批准,以关闭系统,因为即使在半夜,人们也可能正在访问服务。现在,我们可以部署、上传代码和迁移数据库,而无需关闭系统。公司获得新功能,而不必担心某些业务会丢失或延迟。”此外,通过使用 kops 项目,Ygrene 现在可以用以前成本的十分之一使用 AWS EC2 Spot 运行其 Kubernetes 集群。Adams 说,这些云原生技术“改变了可扩展性、可观察性和安全性(我们正在添加新的非常安全的数据源)的游戏。”“没有 Kubernetes、Notary 和 Fluent,我们就无法告诉投资者和团队成员,我们知道刚刚发生了什么事情。”

在不到十年的时间里, Ygrene 就为可再生能源项目提供了超过 10 亿美元的贷款。

PACE (清洁能源物业评估)融资公司开发经理 Austin Adams 表示:“我们抵押房屋或商业建筑,用贷款来为任何可以节约电力、生产电力、节约用水或减少碳排放的项目提供资金支持。”

为了批准这些贷款,公司需要处理大量的承销数据。Adams 说:“我们必须要验证有关财产、公司或人员的问题,像这样的工作数以千计。因此,我们有很多正在聚合的数据源,并且我们也有大量系统需要实时对这些数据进行改动。”

到 2017 年,部署和可扩展性已成为痛点。该公司已经使用了大量服务器,“我们刚刚达到能够垂直扩展的极限,”他说。迁移到 AWS Elastic Beanstalk 并不能解决问题:“Scala 服务需要来自主 Ruby on Rails 服务和不同供应商提供的大量数据,因此他们要求从我们的 Ruby 服务以一种服务器无法承受的速率获取信息。在 Elastic Beanstalk 上我们也有许多配置与应用不匹配。这仅仅是一个开始,我们也意识到我们这个系统非常不稳定。”

Adams 和其他团队一起着手寻找一种具有变革性的解决方案,但“不需要我们对代码库进行巨大的重构,”他说。作为一家金融公司,和可伸缩性一样,Ygrene 需要更好的安全性。他们通过采用云原生技术找到了答案:Kubernetes 帮助纵向扩展和分配工作负载,Notary 在各个级别实现可靠的安全性,Fluentd 来提供可观察性。Adams 说:“Kubernetes 是社区前进的方向,也是我们展望未来的证明。”

有了 Kubernetes,该团队能够快速将 Ygrene 应用程序用 Docker 容器化。“我们必须改变一些实现和代码,以及系统的构建方式,” Adams 说,“但我们已经能够在一个月左右的时间内将主要系统引入 Kubernetes,然后在两个月内投入生产。对于一家金融公司来说,这已经非常快了。”

怎么样?Adams 说,这些云原生技术“改变了可扩展性、可观察性和安全性(我们正在添加新的非常安全的数据源)的游戏。”“没有 Kubernetes、Notary 和 Fluent,我们就无法告诉投资者和团队成员,我们知道刚刚发生了什么事情。”

Adams 说,尤其 Notary 简直就是“天赐之物”。“我们要清楚,我们针对第三方依赖项的攻击面较低,或者至少是托管的。因为我们使用 Notary 作为一个信任系统,我们也使用它作为区分,所以生产镜像由 Notary 签名,但一些开发镜像就不签署。这是为了确保未签名镜像无法进入生产集群。我们已经在测试集群中使用它,以使构建的应用更安全。”

通过使用 kops 项目,Ygrene 能够用以前成本的十分之一从 Elastic Beanstalk 迁移到 AWS EC2 Spot 上运行其 Kubernetes 集群。Adams 说:“以前为了扩展,我们需要增加实例大小,导致高成本产出低价值。现在,借助 Kubernetes 和 kops,我们能够在具有多个实例组的 Spot 上水平缩放。”

这也帮助他们降低了在公共云中运行所带来的风险。“我们发现,基本上,如果我们能够使用中断可能性极低、无中断历史的 EC2 Spot 选择实例类,并且我们愿意付出足够高的价格,我们几乎可以得到和使用 Kubernetes 相同的保证,因为我们有足够的节点,”软件工程师 Zach Arnold 说,他领导了向 Kubernetes 的迁移。“现在,我们已经重新架构了应用程序的这些部分,使之不再位于同一台服务器上,我们可以推送到许多不同的服务器,并实现更稳定的部署。”

因此,团队现在可以在一天中的任何时间传输代码。阿诺德说:“以前这样做是很危险的,因为它会拖慢整个贷款管理软件。”“但现在,我们可以在白天安全部署。”

以前,部署通常需要三到四个小时,而且每周或每两周要把一些两三个月工作量的任务在系统占用低的时候进行部署。现在,他们用5分钟来配置 Kubernetes,然后用一个小时进行整体部署与烟雾测试。Adams 说:“我们每周可以部署三到四次,只需一周或两天的工作量。”“我们在工作周、白天的任意时间进行部署,甚至不需要停机。以前我们不得不请求企业批准,以关闭系统,因为即使在半夜,人们也可能正在访问服务。现在,我们可以部署、上传代码和迁移数据库,而无需关闭系统。公司增加新项目,而不必担心某些业务会丢失或延迟。”

云原生也影响了 Ygrene 的 50 多名开发人员和承包商的工作方式。Adams 和 Arnold 花了相当长的时间“教人们思考开箱即用的”,Arnold 说。“我们最终选择了称之为“航运四S”:安全、可靠、稳妥、快速。”(有关其安全部分的更多内容,请参阅他们关于"持续黑客攻击"策略的文章。至于工程师,Adams 说,“他们已经能够跟上软件进步的步伐。我想一天结束时,开发人员会感觉更好,他们也会感觉与现代软件开发社区的联系更加紧密。”

展望未来,Adams 很高兴能探索更多的 CNCF 项目,包括 SPIFFE 和 SPIRE。“CNCF 是众多项目惊人的孵化器。现在,我们定期查看其网页,了解是否有任何新的、可敬的高质量项目可以应用到我们的系统中。它实际上已成为我们了解自身需要什么样的软件以使我们的系统更加安全和具有可伸缩性的信息中心。”