Kubernetes 在手,美国国防部实现了 F-16 和战舰的 DevSecOps
挑战
近年来,美国国防部(DoD)大型武器系统的软件交付通常需要 3 年到 10 年。“多数团队使用 waterfall,没有最小化可行产品(MVP),没有增量交付,也没有最终用户的反馈回路,”美国空军首席软件官 Nicolas M. Chaillan 说,“进入 AI、机器学习和网络安全时代,每个人都知道我们必须要加快脚步。”
解决方案
Chaillan 和 DoD 负责信息企业的副首席信息官 Peter Ranks 共同创建了 DoD 企业 DevSecOps 参考设计,该设计要求 DoD 系统必须使用 CNCF 许可的 Kubernetes 集群和其他开源技术。
影响
原来发布需要 3 至 8 个月,现在只需要 1 个星期,云 enclave 的运行权(ATO) 1 个星期就能拿到。此外,“我们在平台堆栈上还有连续运行权,”Chaillan 说,“任何时候通过入口,软件都会自动得到授权。所以,一天内可以多次推入软件。”总体来
一些数据
F-16 上安装 Kubernetes 的 MVP 在 45 天完成
发布
只要1 个星期,不再需要 3 至 8 个月时间
总体时间
缩短了 100 多年
美国国防部实现 DevSecOps 前,大型武器系统的软件交付通常需要 3 年到 10 年。
“多数团队使用 waterfall,没有最小化可行产品(MVP),没有增量交付,也没有最终用户的反馈回路,”美国空军首席软件官 Nicolas M. Chaillan 说。此外,“网络安全也大多是事后才会去考虑。”
2018 年夏天,Chaillan 加入,尝试改变这种现状。他的解决方案非常简单,却给国防部带来一场革命。他和 DoD 负责信息企业的副首席信息官 Peter Ranks 共同创建了 DoD 企业 DevSecOps 参考设计,该设计要求 DoD 系统必须使用 CNCF 许可的 Kubernetes 集群和其他开源技术。“DoD 企业 DevSecOps 参考设计规定了 DevSecOps 管道的入口。”Chaillan 说“只要团队遵守参考设计,就能拿到 DoD 系统的连续 ATO(运行权)。”
“在我们这里,选择Kubernetes 做抽象层,所以它的功能就是做抽象,”他说,“这也是它的价值所在:抽象、编排和弹性,以及自我修复。” Envoy 和 Istio 提供控制和数据平面,“这样环境之间就不会再有漂移,这个非常重要,因为我们有多个分类环境,”他补充说。
新方案旨在提出一个理念:“学习、失败都要快,同一个地方不能摔倒两次,”Chaillan 说,“进入 AI、机器学习和网络安全时代,每个人都知道我们必须要加快脚步。”
为了加快应用,我们选好团队,用云原生最佳实践创建最小可行产品(MVP)。部分团队选择了简单的应用程序证明可行。但 Chaillan 却选了一条不同的路:“我选了武器系统,因为这样才能引起将军和高管的关注,才能得到资助。如果只是证明能做,让大家开心一下,那你能做到的也就这么多了。”
于是,2019年秋天,犹他州希尔空军基地的 SoniKube 团队开始在 F-16 喷气式飞机上运行 Kubernetes。DoD Platform One 团队成员在 Jeff McCoy 带领下,深入团队,指导他们将 Kubernetes 部署到喷气式飞机的传统硬件上。“喷气式飞机必须在 2 分钟之内启动 Kubernetes 和 Istio,这是飞机的要求,否则就会出故障,喷气式飞机 2 分钟内必须转起来,”Chaillan 说,“这是最大的挑战。”
仅用45 天,团队就实现了目标,给负责采购、技术和后勤的助理空军部长 Will Roper 博士在喷气式飞机上做了展示。“我们在集群上运行 Istio,然后发布 5 项或 6 项微服务,”Chaillan 说,“很多喷气式用的都是较老的程序语言,能运行 Go、Python 和 Java 让人兴奋。”
目前,共有 37 个团队在 Kubernetes 上构建应用程序。“武器系统的各个侧面都有我们的团队在工作,从空间系统到核系统,再到喷气式系统,”他说。
“DoD 企业 DevSecOps 参考设计规定了 DevSecOps 管道的入口。只要团队遵守参考设计,就能拿到 DoD 系统的连续 ATO(运行权)。”
— 美国空军首席软件官 NICOLAS M. CHAILLAN
有些程序是机密,非机密的就可以共享各自的结果。比如,统一平台把网络攻击和防御能力推到云上。“我们一直用 Kubernetes 编排堆栈,容器化最近 6 个月的工具,”Chaillan 说,“统一平台能快速迭代容器,很成功。”
海军的“24 小时汇编作战”程序也是一个案例:“Kubernetes 让他们能在战舰上推送代码到生产,是在离线情况下【在海上】,”Chaillan 说。Kessel Run 团队“短短几周时间,就为使用各种设备和iPads 的作战人员创造了价值,还有其他前沿使用案例。”
有了这些成功案例之后,Chaillan 倡导 DoD 使用这项企业技术。之后,组建了2 个团队:Cloud One 为开发团队创建云环境,Platform One 在 Kubernetes 集群创建 DevSecOps 环境。两个团队获准在一组发行版中选择,如 OpenShift、Tanzu、D2IQ 和 Rancher。
采用云原生技术和实践,DoD 节省了大量时间。原来发布需要 3 至 8 个月,现在只需要 1 个星期,云 enclave 的运行权(ATO) 1 个星期就能拿到。此外,“我们在平台堆栈上还有连续运行权,”Chaillan 说,“任何时候通过测试和安全入口,软件都会自动得到授权。所以,一天内可以多次推入软件。”
“我们已经培训了一个以前从没做过 Kubernetes 的团队,投入几名人力做培训,把他们安排在军事基地外的写字楼里,仅用 45 天他们就建好了 F-16 MVP,以前这些工作要 1 到 2 年时间才能完成。”
— 美国空军首席软件官 NICOLAS M. CHAILLAN
还有一个好处是:现在容器能拿到 DoD 全网范围的授权。“我们可以集中授权一次,不用各团队去分别授权,”Chaillan 说,“机密环境也一样。”
总体来说,“我们在考虑用 37 个程序,把规划的项目时间缩短 100 年以上,”他补充说道。
此外,把 DevSecOps 带入所有的环境,包括机密环境和非机密环境,“真的很好用,”Chaillan 说,“数据在哪个机密等级,就能在那个机密等级运行;哪里需要,就能在那里运行。所以,有了不论在哪儿,只要准备好了环境的完整配套,我们刚刚授予了 55 个云服务合同、人才和许可证。如果一个 F-16 团队来跟我们说,‘我需要云计算、存储、Kubernetes 发行版、源代码仓库、CI/CD 管道的各种工具、5个 DevSecOps 工程师,’30 天内即可全部到位。”在过去,这个过程要 3 至 6 个月。
Chaillan 的下一个目标是给 DoD 所有应用程序的10 万名员工提供培训。听起来就很吓人对吧,但 Chaillan 说“我们已经培训了一个以前从没做过 Kubernetes 的团队,投入几名人力做培训,把他们安排在军事基地外的写字楼里,仅用 45 天他们就建好了 F-16 MVP,以前这些工作要 1 到 2 年时间才能完成。”