公司 蒙特利尔市 地点 加拿大魁北克省蒙特利尔 行业 政府

挑战

像许多政府一样,蒙特利尔市拥有许多遗留系统,而且“我们有些系统比在这里工作的一些开发人员年龄还大”,该市的首席技术官 Jean-Martin Thibault 说。“我们有大型机、各种 Windows 版本、各种 Linux 版本、新旧 Oracle 系统、Sun 服务器、各种数据库。像所有大公司一样,一些最重要的系统,例如预算和人力资源,都是在过去 30 年里内部在大型机上开发的。”总共有 1,000 多个应用程序,其中大部分运行在不同的生态系统中。2015 年,一个新的管理团队决定打破这些孤岛,并投资 IT,以实现该市更集成化的治理。他们需要弄清楚如何现代化架构。

解决方案

第一步是容器化。团队从一个由四到五台服务器组成的小型 Docker 场开始,使用 Rancher 提供对 Docker 容器及其日志的访问,并使用 Jenkins 进行部署。解决方案架构师 Marc Khouzam 说:“我们的工作基于新趋势;我们理解了不变性、不停机部署等带来的好处。”他们很快意识到也需要编排,并选择了 Kubernetes。企业架构师 Morgan Martinet 说:“Kubernetes 提供了如何为任何类型的应用程序描述架构的概念,并基于这些概念部署运行基础设施所需的一切。它正在成为事实上的标准。”

影响

上市时间大幅缩短,从几个月缩短到几周。部署时间从几个月缩短到几小时。Thibault 说:“过去,你必须申请虚拟机,仅仅这项工作就可能需要几周时间,很轻松。现在你甚至不必申请任何东西。你只需创建你的项目,它就会被部署。”Kubernetes 还提高了该市计算资源的使用效率:Martinet 说:“以前,我们目前在 Kubernetes 上运行的 200 个应用程序组件需要数百台虚拟机,而现在,如果我们谈论一个单一的生产环境,我们能够将它们运行在 8 台机器上,包括 Kubernetes 的主节点。”所有这些都由一个只有 5 人的小团队操作 Kubernetes 集群完成。

作为加拿大第二大城市,蒙特利尔拥有大量遗留系统来维持政府运作。尽管这些系统并未追溯到该市于 1642 年建城之时,但“我们有些系统比在这里工作的一些开发人员年龄还大”,该市首席技术官 Jean-Martin Thibault 开玩笑说。

“我们有大型机、各种 Windows 版本、各种 Linux 版本、新旧 Oracle 系统、Sun 服务器、各种数据库。一些最重要的系统,例如预算和人力资源,都是在过去 30 年里内部在大型机上开发的。”

近年来,这一事实成为了一个巨大的痛点。总共有 1,000 多个应用程序,运行在几乎同样多的不同生态系统中。2015 年,一个新的市政府管理团队决定打破这些孤岛,并投资 IT,以实现更集成化的治理。Thibault 说:“组织是孤立的,因此架构也是孤立的。一旦我们集成到一个 IT 团队中,我们决定重新设计整体企业架构。”

现代化架构的第一步是容器化。解决方案架构师 Marc Khouzam 说:“我们的工作基于新趋势;我们理解了不变性、不停机部署等带来的好处。”团队从一个由四到五台服务器组成的小型 Docker 场开始,使用 Rancher 提供对 Docker 容器及其日志的访问,并使用 Jenkins 进行部署。

但是这个 Docker 场的设置有一些限制,包括缺乏自愈和基于流量的动态伸缩,以及优化服务器资源和伸缩到相同容器的多个实例所需的工作量。团队很快意识到也需要编排。Thibault 说:“Kubernetes 应运而生,带来了所有这些功能,使得管理更容易,并为用户提供了更多好处。”

团队评估了几种编排解决方案,但 Kubernetes 脱颖而出,因为它解决了所有痛点。(他们还受到了雅虎日本案例的启发,团队成员认为该案例接近他们的愿景。)企业架构师 Morgan Martinet 说:“Kubernetes 提供了如何为任何类型的应用程序描述架构的概念,并基于这些概念部署运行基础设施所需的一切。它正在成为事实上的标准。它还承诺了跨云提供商的移植性。现在选择 Kubernetes 为我们提供了许多选项,例如在内部或任何 IaaS 提供商中运行集群,甚至在任何主要云提供商中使用 Kubernetes 即服务。”

决策中的另一个重要因素是供应商中立性。Thibault 说:“作为政府实体,我们选择产品和提供商时保持中立至关重要。Cloud Native Computing Foundation 独立于任何公司,提供了这一点。”

Kubernetes 的实施始于使用内部 Ansible 剧本部署一个小集群,该集群很快被 Kismatic 发行版取代。考虑到他们在操作 Kubernetes 平台时看到的复杂性,他们决定为开发团队提供基于 Helm 的自动化 CI/CD 解决方案。Khouzam 说:“Kubernetes 上的集成 CI/CD 解决方案标准化了各个开发团队设计和部署解决方案的方式,但允许他们保持独立。”

在重新架构过程中,团队还添加了 Prometheus 用于监控和警报,Fluentd 用于日志记录,Grafana 用于可视化。Martinet 说:“我们对正在部署的内容有了更清晰的可见性。”Khouzam 补充道:“最大的好处是我们可以跟踪任何事物,即使是不在 Kubernetes 集群中运行的事物。这是我们统一监控工作的方式。”

总而言之,云原生解决方案对速度和管理开销都产生了积极影响。通过标准化、代码生成、自动部署到 Kubernetes 以及通过 Prometheus 进行标准化监控,上市时间大幅缩短,从几个月缩短到几周。部署时间从几个月和几周的规划缩短到几小时。Thibault 说:“过去,你必须申请虚拟机,仅仅这项工作就可能需要几周时间才能正确配置。”此外,对于专用系统,通常需要引入专家以其自己的方法进行安装,这可能需要数周甚至数月。

现在,Khouzam 说:“我们几乎可以部署任何已经 Docker 化的应用程序,而无需任何人的帮助。在 Kubernetes 中运行一个项目完全取决于你需要编程实际软件的时间。它不再依赖于部署。部署速度如此之快,以至于可以忽略不计。”

Kubernetes 还提高了该市计算资源的使用效率:Martinet 说:“以前,我们目前在 Kubernetes 中运行的 200 个应用程序组件需要数百台虚拟机,而现在,如果我们谈论一个单一的生产环境,我们能够将它们运行在 8 台机器上,包括 Kubernetes 的主节点。”所有这些都由一个只有 5 人的小团队操作 Kubernetes 集群完成。Martinet 补充道:“无论你衡量什么,这都是一个巨大的进步。”

因此,团队的未来战略是尽可能地针对 Kubernetes,这不足为奇。Thibault 说:“如果某个东西不能在 Kubernetes 中运行,我们会等它。”这意味着他们尚未将该市的任何 Windows 系统迁移到 Kubernetes,尽管这是他们希望做的事情。Martinet 说:“我们尽可能与市场合作,向我们的供应商施压,要求他们支持 Kubernetes,因为它是一种更容易管理的解决方案。”

Thibault 预见到在不久的将来,该市 60% 的工作负载将在 Kubernetes 平台上运行——基本上是他们可以在那里运行的任何和所有用例。他说:“它比我们过去做事的方式效率高得多。我们不会回头。”