美国国防部的 Kubernetes 实践

去年,美国空军首席软件官 Nicholas Chaillan 曾在 2019 年的 KubeCon 上对外透露,美国空军正在积极引入 Kubernetes 和容器技术,以加快整个军事部门的应用程序部署,包括在战斗机上运行应用程序。

向容器和 Kubernetes 迁移能够帮助美国空军在避免厂商绑定的前提下,使用抽象和开源项目来提高 IT 系统的灵活性和敏捷性,并从中获取价值。这不仅是财务上的优势,更是国际竞争上的优势。

近日,美国国防部在 CNCF 官网上发布了一篇案例文章,曝光了美军采用 Kubernetes 的更多细节:在 Kubernetes 部署上,除了美国空军,美国海军也已经就位

在美国国防部(DOD)引入 DevSecOps 之前,大型武器系统的软件交付可能需要三到十年的时间。这是因为所有团队都采用瀑布式开发,没有最低限度的可用产品,没有渐进式开发,也没有最终用户的反馈回路。

随着人工智能、机器学习的发展和网络安全形势的日益严峻,美国国防部开始意识到需要靠加速应用开发的整个流程来保障自身竞争力。

在这个背景下,2018 年夏天,Chaillan 为深陷传统开发方式的美国国防部带来了转型解决方案,很简单,也很具有革命性——他和 Peter Ranks 创建了 DoD Enterprise DevSecOps 参考设计,其目的是在整个美国国防部中兼容 CNCF 的 Kubernetes 集群和其他开源技术

Chaillan 表示,之所以选择 Kubernetes,是因为它提供的抽象、业务流程、弹性和自我修复能力符合整个 DevSecOps 参考设计的构想。在这个基础上,Envoy 和 Istio 提供了一个控制和数据平面,允许存在多个互相隔离的环境。

为了推动这一参考设计的采用,美国国防部开始使用云原生最佳实践来构建最低限度可行产品(MVP),他们选择的实验对象是武器系统。

2019 年秋天,美国犹他州希尔空军基地的 SoniKube 团队忙得热火朝天,他们和由 Jeff McCoy 领导的美国国防部“平台一号”团队紧密合作,希望能让 Kubernetes 在 F-16 战斗机的旧硬件上运行

我们必须要在两分钟内用 Istio 在战斗机上启动 Kubernetes,这是个必要条件,因为如果战斗机出现问题,它必须要能在两分钟内重启,这也是最大的挑战。

经过 45 天的试验,他们完成了这个目标,并为美国空军采购、技术和后勤助理部长 Will Roper 进行了现场演示。Chaillan 表示:我们在 Istio 上运行了集群,然后启动了五六个微服务。许多战斗机都使用较旧的编程语言运行,因此能在上面运行 Go、Python 和 Java 很令人兴奋。

目前,美军已有 37 个团队正在 Kubernetes 上构建应用程序,遍布空间系统、核推进系统和战斗机等武器系统的各个方面

尽管部分应用是独立开发的,但有些成果也是可以共享的,比如用于预防网络攻击的 Unified Platform。在过去的六个月中,美国国防部一直在用 Kubernetes 管理 Unified Platform 的堆栈并将其构建的工具容器化,实现了快速迭代。

海军的“24 小时战斗作战”计划是另一个例子。通过 Kubernetes,美国战舰能实现“断网不断开发”,满足了远洋航行时 IT 团队持续开发应用,并在几周内为海军提供能在 iPad 等终端设备上运行的最新版本应用的需求。

有了这些成功案例,Chaillan 创建了两个团队进一步推进企业 DevSecOps 参考设计在美军的采用:用于将云环境带入开发团队的 Cloud One 和用于在 Kubernetes 集群上设置 DevSecOps 环境的 Platform One。而基于这些团队的云原生技术和实践,美国国防部也节约了大量时间,以往需要 3-8 年才能发布的应用,现在只用一周就能有临时可用的版本,比如一周内开发可用的 cloud enclave,而且一天内可以推送多次。

此外,美国国防部现在可以总的对容器进行认证,无需对每个团队进行分别认证,如果算上已经开始进行的 37 个应用程序的开发周期,现在的开发方法能比瀑布式开发节省 100 多年

而结合零基础团队在 45 天内把 Kubernetes 部署在战斗机上的实践,Chaillan 的下一个目标是为从事美国国防部应用程序开发工作的10 万名员工提供 Kubernetes 培训。

https://www.cncf.io/case-study/dod/

本周其他资讯/博客推荐

Kubernetes 2020 年状态报告

上周,《Kubernetes 2020 年状态》报告发布,该报告对拥有大型开发团队的企业中的 247 位 Kubernetes 用户进行了调查,为我们了解开发者在项目实践中的经验和感受提供了一个独特的窗口。

Kubernetes 采用率呈指数级增长

本次调研最直观的发现是 Kubernetes 在受访大型企业采用上仍呈大幅上升态势,虽然没有覆盖所有应用实例,但整体采用率已经从 2018 年的 27% 上升到今年的 48%。有趣的是,报告显示本地 Kubernetes 的部署率非常惊人,高达 60%,远超在云中的部署(42%)。

Kubernetes 还有很大发展空间

本次调研曝光了一些关键数据:57% 的企业正运行少于 10 个 Kubernetes 集群;59% 的受访者已经开始在生产环境中运行 Kubernetes;只有 20% 的受访者拥有超过 50 个 Kubernetes 集群。这些数据都在表明,虽然 Kubernetes 采用率很高,但仍有很大的增长空间。

Kubernetes 带来的收益非常显著

95% 的受访者表示采用 Kubernetes 为企业带来了收益,其中最明显的是提高资源利用率(56%)和缩短软件开发周期(53%)。此外,受访者也提到了 Kubernetes 带来的其他助益,如应用程序的容器化、实现向云迁移和降低公有云成本。总体而言,参与调研的开发人员和运维人员对 Kubernetes 的评价整体比较积极。

采用 Kubernetes 面临的挑战

报告还揭示了企业采用 Kubernetes 时遇到的障碍。由于学习曲线非常陡峭,70% 的受访者认为团队在 Kubernetes 管理上缺乏相应知识和经验,67% 的受访者认为 Kubernetes 部署会成为一个比较严峻的技术难题。此外,如何将 Kubernetes 与企业现有基础架构集成并满足安全合规性要求,也是许多受访者遇到的一大挑战。

报告称,采用 Kubernetes 后所有行业都发生了一个明显变化:从关注基础设施转为关注应用程序开发。Kubernetes 在提高开发人员生产力和加快部署上的效果是立竿见影的,因此尽管存在痛点,但大多数开发人员和高管都认为采用 Kubernetes 是企业发展的必选项。

Vitess 6 新增 Kubernetes 拓扑服务

Vitess 是一个用于部署、扩展和管理大型 MySQL 实例集群的数据库解决方案,它源起于 Youtube,现在是一款开源产品。上周,Vitess 6 正式发布。

改进 SQL 支持。Vitess 现在支持更多 MySQL 语法,开发团队研究了通用应用程序和框架发出的 queries,并将它们直接放到端到端测试套件中。

Kubernetes 拓扑服务。在新版本中,Helm charts 默认使用 Kubernetes 作为拓扑服务,这有助于消除对 etcd-operator 的依赖。

基于 VReplication 的工作流步入 GA。虽然 VReplication 是在 Vitess 4 中出现的,但现在它已经步入一般可用性,相关文档现在在 MoveTables 和 Resharding 中。

https://vitess.io/blog/2020-04-29-announcing-vitess-6/

博客:Kustomize 和 Helm 结合使用

在这篇文章中,我们将以日志聚合系统 Loki 为例,演示如何把 Kustomize 和 Helm 结合在一起使用。它不仅能对开发者处理 YAML 带来启发,也是准备 CKA 考试的一种好方法。

https://povilasv.me/helm-kustomze-better-together/

博客:Kubernetes 中的 DNS 问题

DNS 在生产环境中以 postmortems 的形式出现。这篇文章可以帮助那些想要了解 postmortems 的人,帮助他们预防 DNS 问题。

https://medium.com/preply-engineering/dns-postmortem-e169efd45afd

案例:Tidepool 如何实现 IT 现代化

Tidepool 是一家非营利性组织,致力于通过大数据分析为 I 型糖尿病患者提供服务。近日,他们撰文介绍了自己进行基础设施现代化的各个领域的技术细节,包括迁移到 Kubernetes、API 网关、使用 GitOps 进行持续交付、secrets 管理、使用服务网格等。

https://www.solo.io/blog/case-study-it-modernization-at-tidepool-an-8-part-series/

原文请点击:https://mp.weixin.qq.com/s/xSX2YUcvkiMkvrXeyJUDVQ