随着混合云战略的不断普及,美国军方也开始采用适合自己的独特发展方案。
根据美国空军首席软件官Nicholas Chaillan在本次于圣迭戈召开的KubeCon 2019大会上发布的报告,目前空军方面正在尝试利用Kubernetes及Istio等一系列开源云工具支持业务体系。这些工具往往会被部署在各类非常规平台之上,包括武器系统甚至战斗机当中。事实上,军方确实着手尝试在F-16喷气式战斗机的内置硬件上运行Kubernetes。
Chaillan表示,“对团队来说,目前的主要任务就是证明这种尝试的可行性。”他向空军及其合作伙伴提出一项挑战,要求在45天之内将Kubernetes运行在喷气式飞机上,并保证飞机仍能够正常运作。虽然听起来相当困难,但该团队成功完成了任务,目前这架F-16战机并发运行有三套Kubernetes集群。
说到这里,很多朋友自然会想到下一个问题:这么做的理由是什么?在KubeCon开幕日的简短主题演讲当中,Chaillan介绍了美国空军以及国防部其他几个部门如何在他的领导下大力推进容器技术实验,包括如何开展容器、Kubernetes以及Istio部署项目。这将是一套灵活的通用性开发平台,面向各军种的内部软件团队,能够有效防止供应商锁定问题的出现。
Chaillan介绍称,在空军启动此次项目约18个月之前,大部分军事软件团队还在利用陈旧的瀑布式流程进行软件构建,且新编写的代码往往需要数年时间才能得到实际应用。更可怕的是,更新、测试乃至安全性审查等在商业部门当中早已全面实现自动化的任务,军方仍在广泛依赖于人工执行。
考虑到肩负着重大国防安全职责,军事组织显然不能在技术层面长期落后于主流。一旦竞争对手投资发展软件功能,并在战场上占据优势,那么国家安全将很快面临挑战。此外,缓慢的关键应用程序更新速度,也会带来大量不容忽视的负面影响。
Chaillan指出,“因此,减少攻击面并降低威胁水平,已经成为我们必须面对的头等大事。”
国防部Enterprise DevSecOps计划
Chaillan和他的团队决定将开源软件作为新型开发平台的实现基础,并建立起国防部Enterprise DevSecOps计划。此项计划要求将Kubernetes、Istio、Knative以及一整套内部开发规范(用于强化容器技术,从而满足更为严格的安全要求)结合起来,共同构建起面向军方整体的默认软件开发平台。
来自不同分支机构或地区的软件团队,将在选择自有工具方面拥有一定的处置权,但前提是必须以空军Platform One团队提供的底层方案为基础。Chaillan强调,各方不得对该底层方案做出任何修改。
Chaillan在演讲后由云原生计算基金会召开的新闻发布会上,又就这一问题做出了进一步说明。他解释称,“我们希望破除一切束缚。”出于这一考量,该团队决定将Kubernetes与其他项目协同使用。Chaillan表示,Istio等项目可以为国防部技术栈的网络层提供安全保障,“我们希望确保Istio在军方的整体技术栈中持续运行。”
当然,整个过程也不乏各类实际挑战。Chaillan指出,Kubernetes在原始设计方面,并没有考虑到美国军方所面临的不连续应用场景,特别是长时间断网的使用环境。他暗示称,国防部将参与Kubernetes社区开发,向项目维护者提出相关建议,从而为Kubernetes向各类敏感运行环境进军的过程铺平道路。
他指出,“我们已经习惯于利用互联网进行软件更新,习惯于随时接入互联网,并下载需要的各类资源。但对我们来说,要把这一切技术栈转移到”喷气式战斗机或者武器系统上,就必须要考虑到无法与互联网连接的情况。
国防部建立的超大规模开源堆栈
国防部的业务规模超越几乎任何商业组织;Chaillan必须根据DevSecOps原则对10万军人进行培训,同时指导他们如何使用新型工具。他在新闻发布会上相当克制地表示,“这将是一场非常有趣的文化转变。”
如此庞大的规模,也反映出国防部势必会利用这套全新开发平台处理各类常规、非保密性应用:目前美国军方工作人员超过200万,其中大多数人显然没有接触过运行有Kubernetes的F-16战斗机。
Chaillan指出,“这架喷气战机非常有趣,但只是我们当前工作中的很小一部分。我们正着手将大量业务系统迁移至云原生环境,迁移至微服务架构,同时从零开始构建各类新型解决方案。”
整个国防部Enterprise DevSecOps计划将完全采用开源技术堆栈,可供任何军方工作人员使用。他指出,美国军方未来还将把更多工作交由开源社区处理,同时强调“我们不会对开源软件进行分叉。”