【编者的话】这篇文章简单的介绍了Nulecule的产生,特性,以及目标, 致力于构建一个统一的复合应用(基于多容器)的描述规范。笔者认为想法很好,但是要想实现这一目标不仅仅是一个技术问题,更多的是需要实现各个容器厂商的利益均衡,而做到这一点并不那么容易。不过还是应该肯定Project Atomic为此所做的事情。
为了帮助开发和管理人员创建和启动多容器组合的应用,在 Project Atomic ,我们正在起草一份平台无关的规范,叫做Nulecule(noo-le-kyul)。你可以在 RHEL Blog 找到关于此的明确解释和方案。
我们也已经创建了一个叫做 Atomic App 的应用,可以帮助我们运行使用Nulecule规范的应用。如果你想尝试一下,可以依照这些链接获取更多的信息。
那我们为什么要做这个呢?容器正在重塑IT版图,很快会摧毁之前那些根深蒂固的技术。这其实是很好的,如果不是这样的话,我们在做一项复杂工作总是会遇到相应复杂的障碍。但是我还不能期望docker的生态系统已经被定义的很完善了。还有很多鸿沟需要跨越,但是每个鸿沟都是一个机会。既然如此,这里就有这样一个机会:构建应用的可管理性,并且创建一个标准化的方法使得可扩展的,复合应用配置变的更容易。
在这个重塑IT版图的迭代中,我们遵循的是“MYSM(make your stuff manageable)”,就是“让你的东西可以管理”。Linux以及其他的一些组件组成了LAMP堆栈促成了大量开源软件的生态系统。但是他们在可管理性方面还是做的有所不够,但是这也为各种各样的配置管理工具创造了弥补这样鸿沟的机会。Java程序员总是对LAMP开发者不太满意,不断提醒他们缺少与管理工具的整合。不幸的是尝到了JMX以及WAR文件轻松部署带来的可管理性甜头之后,意味着你要强迫自己去学习java框架了。那么一个开源的程序员做了什么?
一个答案就是把应用装载到了容器中,并隔离了服务,从而你可以利用独立开发和更新的各个组件来构建应用。然而这对于管理单个容器相对容易,管理多个容器的应用就变得笨拙了。这就是为什么产生了Nulecule。
Nulecule定义了一个模式(pattern)和模型(model)来打包复杂的多容器应用,引用的所有依赖,编排的元数据(orcherstration metadata),都会在一个容器镜像中构建,部署,监控,以及管理。只要创建一个拥有Nulecule文件的容器,你的应用就有了。在Nulecule规范中,你要在一个图中定义编排提供者,容器位置和配置参数,Atomic App在Kubernetes和docker的帮助下会把他们拼凑到一起。Nulecule规范还支持多个复合应用的整合,它也是一个容器和编排工具的不可知者,可以使用任何容器和编排工具引擎。
Nulecule规范亮点:
我希望你能找到我们规范,实现和runtime。使用一下,然后告诉我们,特别是跟其他实现一起工作时的缺陷,我们很想知道这些。因为我们是想为开发者,工具创建者以及管理框架找到一个方案。理想地说,Nulecule应该是被开发和运维两方面的工具所支撑,从运维方面来说有,Apache CloudStack, OpenStack, ManageIQ, 以及Ansible。从开发者方面来说有,Visual Studio, Docker Compose, OpenShift和Eclipse。
考虑到现在有很多流行的容器格式,编排引擎和策略管理工具,我想应该是时候为用统一的定义和统一的语言去描述复合应用打基础了。很明显,将会有很多容器应用的框架实现出现。如果他们使用同样的语言,这会使开发者和运维人员生活变得更简单。
我们创建了 一些例子 帮助你开始。第一个,也是最简单的例子叫做‘ helloapache ’。是一个基于centos/httpd镜像的单个pod,但要使用它,你需要一个拥有Atomic CLI和kubectl的机器。 实例录像 。
这里还有个复杂点的例子,展示使用Docker部署OpenStack,以及使用answerfile.conf实现自动安装。 实例录像 。
另外一个例子是展示使用Atomic App, Docker和Kubernetes部署一个链接的,复合应用。 示例录像 。
我们在很短的时间内在Nulecule上面走了很长一段路,但是还有很多事情要做。我们非常激动可以分享我们到目前为止的工作,并且期望与大的社区合作,一起开发Nulecule,使得复杂容器话应用部署变得更容易。
社区交流:
原文链接: Announcing the Nulecule Specification for Composite Applications (翻译:左伟 校对:)
===========================
译者介绍
左伟,就职于IBM,软件工程师,现从事于DevOps,云计算相关的研究,实现和推广。