客座文章最初由 Kendall Miller 在Fairwinds 博客[1]上发表
从基础设施即代码到策略即代码
不久以前,人们开始讨论基础设施即代码(Infrastructure as Code,IaC)。其部分原因是云原生领域的技术成熟的速度。不久前,基础架构还只是有形的基础架构,你必须走动数据中心并按下物理机上的按钮,移动机架,并调整电线以进行基础架构更改——因此,IaC 是一次激动人心的飞跃,直到最近才因云的出现而成为可能。Kubernetes 的基础架构即代码[2]可减少人为错误,增强可重复性和一致性,改善跟踪和可审计性,并有助于灾难恢复。
人们已经看到了基础设施以代码的形式存在的好处,因此它正成为一种被广泛采用的云最佳实践。
在这个日益云化的世界中,下一步是 Kubernetes 的策略即代码(Policy as Code,PaC)。与 IaC 的经历类似,就在不久以前(有些情况仍然如此),许多公司的策略是由以下方面来执行的:
- 大楼门口的保安检查人们的包,以强制执行可以带进或带出的东西
- 经理们在办公室里走来走去,越过人们的肩膀,确保他们在做正确的事情
- 长长的“策略文件”,公司真的只是祈祷人们能遵守
策略即代码是什么
定义:策略即代码是通过机器可读的定义文件管理和创建策略实施工具的过程,而不是通过最佳实践文档或交互式配置工具(带有单击按钮的 GUI)。
策略自动化可以用几种不同的工具,但这些工具许多都涉及一个大型复杂的图形用户界面(GUI),一个人进去点击一串按钮直到他们实施控制以满足公司标准(桌面合规、基础设施等)。但是自动化还不够,因为它会产生单点故障——比如一个人记得 GUI 中所有要按的按钮——当他离开公司时会发生什么?
因此,作为代码记录和存储策略正在成为行业标准。Kubernetes 中策略作为代码的美妙之处在于,它允许你:
- 随时间的变化跟踪策略
- 包括策略执行的“为什么”信息
- 编写代码,使其本身成为文档的一种形式,以消除单点故障
Kubernetes 策略即代码的未来
正如基础设施即代码已经成为广泛采用的标准一样,Kubernetes 的策略即代码也在朝着同样的方向发展,因此定义基础设施的代码以及定义如何使用基础设施的代码都可以存储在一个可跟踪的仓库中。成熟的云组织会发现,在保持“最佳实践文档”的同时,真心希望他们的员工遵守规则,这在规模上是不够的。而且,尽管大规模自动化这一过程的工具是必要的,但仅凭这一点是不够的。
团队将寻找一种方式来存储用于大规模执行策略自动化的指令。
在 2021 年的云原生世界中,预计策略即代码将成为像 Kubernetes 在过去几年那样的热门词汇。
接下来是什么?
对策略作为代码感兴趣?查看Fairwinds Insights[3],其中包含大量开箱即用的 Kubernetes 策略即代码。它利用了 Kubernetes 在安全性、效率和可靠性方面的最佳实践,以及对Open Policy Agent[4]的支持,以编写自己的自定义策略并执行在集群中部署的策略。
参考资料
[1]
Fairwinds 博客: https://www.fairwinds.com/blog/what-is-kubernetes-policy-as-code
[2]
Kubernetes 的基础架构即代码: https://www.fairwinds.com/blog/why-infrastructure-as-code-kubernetes
[3]
Fairwinds Insights: https://www.fairwinds.com/insights
[4]
Open Policy Agent: https://www.openpolicyagent.org/