首页 > 开发 > 云计算 > 正文

DCOS 应用仓库之Universe

2016-07-12 21:12:03  来源:极客头条
  2016年4月,Mesosphere开源了他们开发的DC/OS(数据中心操作系统),作为一个数据中心操作系统而言,基于其之上的各种各样的应用是不可或缺的。在DC/OS系统中,Cosmos扮演了App Store的作用,Cosmos提供的API可以方便的通过DC/OS的UI以及DC/OS的CLI来完成应用仓库的管理,应用的部署,应用的卸载等功能。
  Universe简介:
  Cosmos的应用仓库管理是通过Universe和Cosmos共同完成的,Universe是mesosphere的一个开源项目,其目的是为DC/OS提供一个应用软件包仓库,目前在mesosphere github(https://github.com/mesosphere/universe) 上的应用包提供了一些能跑在Marathon之上的App以及一些mesos上层的framework。
今天我们就先从介绍universe开始。
  准备工作:
  首先,我们需要把mesosphere github 上的universe克隆到本地。
# git clone https://github.com/mesosphere/universe # ll universe-rw-r--r-- 1 hchenxa staff 10834 Jun 3 14:40 LICENSE-rw-r--r-- 1 hchenxa staff 583 Jun 3 14:40 Makefile-rw-r--r-- 1 hchenxa staff 11852 Jun 3 14:40 README.mddrwxr-xr-x 5 hchenxa staff 170 Jun 3 14:40 docker/drwxr-xr-x 3 hchenxa staff 102 Jun 3 14:40 hooks/drwxr-xr-x 6 hchenxa staff 204 Jun 3 14:40 local/drwxr-xr-x 4 hchenxa staff 136 Jun 14 15:32 repo/drwxr-xr-x 14 hchenxa staff 476 Jun 14 17:48 scripts/  在本机安装jsonschema的python包,这个包从https://pypi.python.org/pypi就能找到,或者你也可以通过以下命令进行安装。
#sudo pip install jsonschema  然后执行以下命令来完成pre-commit hook,你本地的universe开发环境就已经准备就绪了:
bash /universe_path/scripts/install-git-hooks.sh  应用包介绍:
  Universe的所有应用包都存放在repo 底下,repo下面有2个目录,meta里面存放了repo的meta用于Cosmos对包进行检索,以及定义应用包内容的schema; packages底下就是各种各样的应用,这些应用按照首字母分别归类到不同的目录下面,以nginx为例,它的应用包就会放到repo/packages/N/nginx 下面。
  Universe支持应用的多版本控制,不同的版本的相通应用放到不同的以数字0开始命名的文件夹里。如下面的组织图所示,一个nginx有2个版本并且每个版本的文件夹中包涵5个文件:
nginx├── 0│ ├── command.json│ ├── config.json│ ├── marathon.json.mustache│ ├── package.json│ └── resource.json├── 1│ ├── command.json│ ├── config.json│ ├── marathon.json.mustache│ ├── package.json│ └── resource.json  package.json:
  package.json里面主要是一些应用包的介绍,包括应用包的版本,维护着的email, 应用包名称,描述等信息,这些信息都会被Cosmos收集并且展示到DC/OS的UI上面。
  config.json:
  config.json里面主要是一些应用部署时候所需要的一些参数,不如应用所需要创建的Marathon instance的个数已经每个instance所占用的cpu和mem的大小等等。当然,在用户通过DC/OS 来提交应用的时候,这些参数都会作为应用的高级配置展示给用户,用户可以根据自己的需求来提交这些应用。
  command.json
  Command.json并不是每个应用都需要用到,这个文件只有当应用需要一些脚本完成按安装的时候才会被使用,而且目前只支持pip这一种方式。
  resource.json
  Resource.json里面定义了应用的在DC/OS上面所显示的图片,图标,帮助信息等等,
  marathon.json.mustache
  marathon.json.mustache是用来创建marathon APP所需要的App json文件,里面是对marathon app的定义,具体参数定义和格式可以参考marathon的rest-api文档(https://mesosphere.github.io/marathon/docs/rest-api.html),当然,cosmos会去合并config.json里面的一些用户自定义的属性最后在发给marathon去创建app.
  制作应用仓库
  上面说了这么多,怎么能够使DC/OS系统能够使用我本地的仓库呢?
当你完成了以上这些工作并且也创建好了自己的应用包,执行下面命令开始build属于你的应用仓库。
# bash scripts/build.shBuilding the universe!Validating version...OKValidating package definitions...- /N/ngnix/1/config.json- /N/nginx/1/package.json- /N/nginx/1/resource.json- /N/nginx/1/command.jsonOKBuilding index...OKValidating index...OK  Build会去校验版本以及应用包里面的文件,然后回去重新刷新index 并且对index进行校验。
  然后打包你本地的universe并且把它存放在一个http/https的服务器上面(universe的repositories目前只支持这两种协议)
  打开你的DC/UI, 点击System -> Overview -> Repositories 来开始添加你的repositories.
  图片描述
  点击Add,你的仓库就添加成功了,当然,如果你有dcos CLI的话,也可以通过下面的命令添加仓库。
  dcos package repo add Development http://your_universe_URI
  然后,在Universe -> Packages页面里面,你就能看到自己制作的应用了。
  图片描述
  作者简介:陈晖,供职于西安IBM, 主要从事云计算方面工作,涉及Openstack,Mesos等开源项目,在资源管理 ,资源调度等方面有比较丰富的经验 。
  OpenStack Days China将于7月14-15日在北京国家会议中心举办,届时包括OpenStack基金会的Jonathan Bryce、Mark Collier、Alan Clark等大牛都将来到大会现场和2000名参会者一起相互交流,共话OpenStack大势,现在报名票价优惠,欲报从速。