在平台工程理念中,平台,也被称为内部开发者平台(Internal Developer Platform,简称IDP),是一种基础设施,使开发团队能够更快、更轻松、更一致地交付应用程序。Kubernetes本身是一个强大的平台,但是将其作为IDP交给开发团队,并期望他们都能成功,会引入过多的复杂性和太多的功能。因此,非常重要的是建立一些防护措施,使他们能够有效地使用K8s,同时不增加与可靠性、成本效率和安全性相关的风险。
虽然Kubernetes本身不适合作为完整的IDP,但它是构建IDP的坚实基础。Kubernetes为平台工程师提供了许多工具,用于为开发人员构建IDP,从而提供更简化的应用程序构建和运行方式。那么,下一个合乎逻辑的问题是如何构建一个提供积极的开发者体验,不妨碍部署到生产环境的平台。通过使用策略和治理、基于角色的访问控制(RBAC)和默认网络策略,您可以应用防护措施来防止在集群中发生不良情况。
Kubernetes平台的组成部分
基于Kubernetes的IDP不仅包括Kubernetes本身,当然还包括开发人员所需的工具和流程。IDP还需要包括您希望在Kubernetes中建立的策略和治理,作为防护措施。这种组合使您能够为开发人员提供“快速路径”,使他们能够更快地部署应用程序。构成您的Kubernetes平台的主要四个组件如下:
附加组件
附加组件是您需要提供的默认“开箱即用”功能的工具,它们扩展了Kubernetes的功能,包括DNS、TLS、入口、日志记录、跟踪等等。这些可以是开源项目,也可以是供应商的软件。
创建治理
Kubernetes治理是创建政策、流程和一套标准政策的过程,这些政策定义和执行Kubernetes平台中的最佳实践,以及资源管理、调度、升级和基于角色的访问控制。
启用部署(持续集成/持续交付)
这是您的应用程序从代码进入平台的方式。在IDP中,您正在为开发人员创建一个更轻松地将新应用程序和服务部署到平台的“快速路径”,同时仍然保持高效和安全。
提供反馈
IDP的一个重要部分是向开发团队提供及时的反馈。您的平台的这一部分必须包括与他们已经使用的工具集成的问题的快速检测和通知。它还应在代码审查过程中为开发人员提供建议的纠正选项。
治理和政策:一个分为三个阶段的方法
当您考虑如何在Kubernetes中应用治理和政策时,这实际上是一个过程。它始于您开始选择和/或创建必要的政策。接下来,您需要一种自动化的方法来识别政策违规情况,然后提供有关如何纠正这些政策违规情况的指导。最后,您需要能够自动阻止这些违规情况进入您的集群。
团队通常在开始部署Kubernetes时不会遇到任何初始问题。您的开发团队甚至可能感到满意,编写和发布应用程序和服务而没有明显的问题。不幸的是,平台团队往往在稍后意识到他们错过了一些重要的防护措施,以帮助维护安全性并始终应用最佳实践。在许多平台上,开发人员可以随意在想要的时候部署所需的内容。除非您团队中的某个人回过头来手动审核所有设置,否则在出现问题之前可能会没有意识到任何问题。
您可以使用开源的策略引擎,例如 Polaris 或 Open Policy Agent(OPA),在 Kubernetes 中自动应用您的政策。使用这些解决方案,您可以确保您的配置与您的环境中的政策保持一致,这可以帮助您保持一切运行顺利。
选择政策
当开始使用政策来强制执行与Kubernetes成本效益、安全性和可靠性相关的最佳实践时,运营人员通常不确定从何处开始或应该关注什么。最好的方法是通过确定对您重要的内容来开始,这就是您创建政策的方式。如果成本对您最重要,那么专注于影响成本的政策,比如资源请求和限制。如果安全是您的主要关注点,那么着手解决以root身份运行的容器或生成网络策略等问题。我们的建议是从小处开始——选择一两个朝着目标前进的政策,并在整个范围内实施。
识别、纠正和阻止违规行为
接下来,您需要找出您的集群中当前违反政策的地方,并逐一开始纠正这些问题。在修复关键类别的问题后,您可以开始在准入时执行您的政策。一旦您开始在准入时阻止这一两个政策,您就可以放心,知道这些问题不应再次出现,然后您可以在下一组您想要强制执行的政策中重复这个过程。在您知道之前,您将尽可能高效和安全。
构建强大的内部开发者平台
对于内部开发者平台来说,应用Kubernetes治理和政策使您能够高效有效地管理资源,以帮助控制成本,并确保应用程序具有所需的资源以实现最佳功能。它还通过控制访问权限和实施最佳实践来确保安全性和合规性,通过建立标准的自动化流程来应用部署和扩展,提高可靠性和弹性。强大的Kubernetes治理和政策是构建一个安全、高效和可靠的内部开发者平台的关键组成部分,既满足开发人员的需求,又适用于整个组织。