构建 Kubernetes 平台时需要考虑的 5 件事

构建 Kubernetes 平台时需要考虑的 5 件事

本文翻译自 5 Things to Consider When Building a Kubernetes Platform

这篇文章旨在减少指导性,为评估建立在 Kubernetes 之上的抽象和平台提供一种方法,并帮助CTO办公室评估并为其软件工程团队做出明智的选择。

现代应用程序开发团队需要完全托管的自助服务平台。最近 Kubernetes 的转向中,已经看到许多团队争先恐后地在编排工具上构建平台。内部开发平台的需求由大型工程团队使用定制工具来满足非常具体的技术、流程和人员需求,例如 Uber 的 Devpod 和 Zalando 的 Sunrise。这种方法绝对值得效仿,但对于很多工程团队来说可能是遥不可及的,因为构建平台的成本很高,而且并不是所有软件团队的务实期望。

首席技术官的职责是平衡技术考虑和业务目标。你的责任是通过工程任务提供产品的竞争优势,但通常表现为业务结果的函数。一条通往生产环境的铺好的道路通常并不意味着它有明显的业务优势。

接下来是 CTO 办公室的优先事项清单。这个简短的清单是基于与多位经验丰富的技术领导和新手进行的讨论编制的。以下是一些假设:容器是事实上的应用程序交付机制。考虑使用 Kubernetes,或者已经在使用。云原生技术占据了他们的大部分流程。

1. 流畅的应用交付

应用程序平台必须能够为开发团队提供高速度。高速是两个因素的衍生物,即快速的应用程序交付和较短的开发周期。较短的开发周期来自开发人员认知负担的减少以及对 CI/CD 等现代实践的本地支持。应用程序平台必须支持以源代码开头的构建工作流。这些平台还必须能够支持在任何远程暂存实例上以可重复的方式部署应用程序。如果它能够整合团队现有的工作流程,例如触发测试和更新远程容器注册表,则可获得加分。

2. 多语言支持

一致性是应用平台的标志。该平台必须支持可重复和可复制的按需构建。提升平台体验的是跨所有语言和框架扩展同质体验的能力。无论团队使用何种语言,都保持相同的体验有助于支持当今能够使用任何编程语言编写服务的需求。如果平台支持本机构建过程以实现此目的,那么扩展和自定义此构建过程的能力是促成平台成功的关键因素。当软件工程团队有一些小众需求并且必须遵循复杂或极其具体的步骤来生成他们的容器镜像时,这个因素就会凸显出来。

除了少数例外,现代应用程序都是数据驱动的。平台必须协调应用程序和相关数据服务之间的连接和消费,以便为开发人员提供承诺的效率。容器的使用稍微复杂了一点,更不用说在 Kubernetes 上编排它们了。通过采用服务网格或服务代理策略来减轻这种负担是解决此问题并使他们的平台更具吸引力的常用方法。

3. 内置安全性

与传统工作负载相比,容器化环境的安全性非常不同。由于容器工作负载的短暂性质及其构建的架构(共享内核、权限、网络行为等),保护工作负载的传统方法将行不通。因此,为与容器和容器编排器一起工作而构建的平台必须考虑所有这些变化。一个基本的最佳实践是使用包含所有必需依赖项的已编译二进制文件。构建过程还应该包含一个指令,以去除应用程序运行不需要的所有组件。平台扩展的安全性还应该超越构建精益镜像。该平台必须有助于保持容器注册表的安全。定期扫描镜像被认为是一项重要的附加值。为所有镜像签名正迅速成为最佳实践。在编排部署的平台组件之间建立零信任架构对于改善工作负载的安全状况大有帮助。

4. 可调抽象

Kubernetes 的巨大成功及其操作的复杂性使得迫切需要帮助抽象它。进入门槛高,加上详尽的接口,需要抽象以帮助促进 Kubernetes 在整个组织中的采用。重申一下,并非所有团队都能“工作更多,让其他人做更少”。抽象 Kubernetes 原语以改善开发人员体验的能力是该平台目的的核心。

打造自以为是的平台有时会适得其反。开发人员体验是软件工程团队中技术需求和部落细微差别的脆弱组合。对于软件工程团队来说,能够定制一个平台来满足他们当前的需求并随着他们未来的工作流程而发展对于继续使用工具至关重要。一个平台既可以提供铺平道路,又可以灵活地满足软件工程团队的此类需求,则成功的可能性更高。

开源平台在这方面得分很高,尤其是具有模块化架构的平台,其中一个组件可以换成团队认为合适的其他组件。

5. 外在因素

技术能力范围之外的几个重要特性对平台的成功起着至关重要的作用。其中最重要的是存在于工具外围的社区力量。任何成功的开发者工具,都在开发者群体中拥有忠实的追随者。该工具的许多积极因素都源于这种认知盈余。采用者可以期待从业者的支持和指导,以及以去中心化方式传播的大量知识。

许可和问责制等商业方面有时会发挥作用,尤其是在需要严格合规的垂直领域。在这些情况下,附属于商业实体在成功采用这些平台方面发挥了作用。

平台示例

一个好的起点是从市场上已有的适合您组织需求的众多解决方案之一开始。提供抽象以改善开发人员在 Kubernetes 上的体验的可用工具的一些示例是:

  • RedHat Openshift – 一个用于大规模构建、现代化和部署应用程序的统一平台。
  • Weaveworks GitOps – 一种免费的开源持续交付产品,可在任何 Kubernetes 中运行应用程序。
  • Gimlet – 一个基于 GitOps 的开发者平台,建立在事实上的标准之上。
  • Epinio – 安装到任何 Kubernetes 集群中,将您的应用程序从源代码带到部署。
  • Cloud Foundry Korifi – 云原生工作负载的 Cloud Foundry 体验。
  • D2IQ – 可以更轻松地大规模构建和运行 Kubernetes。
  • KubeFirst – 一个完全自动化的开源应用程序交付和基础设施管理 GitOps 平台。
  • Qovery – 一个可轻松复制您的基础设施并在 AWS 中创建类生产环境的平台。
  • Acorn – 一个简单的 Kubernetes 应用程序部署框架。

结论:自我评估

我们鼓励您在开始选择平台之前创建一份清单,列出对您和您的组织最重要的因素,以便在 Kubernetes 中铺平通往卓越生产的道路。这是示例清单的样子。

您对此类练习的评估有望让您更轻松地找到经过优化以满足工程团队需求的平台。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注