Openstack的Icehouse,4月17日发布,目前Horizon的所有Blueprint都已经发布。Icehouse,对于Horizon来说,大概完成了70%的工作量,很多重要的功能,都需要等待下一个版本去实现,如果全部都实现,其实还是非常酷的。
Openstack目前已经有10个项目,要对每个项目深入了解,其实都是需要花费大量的时间和精力,Horizon项目是比较简单,也是我最关注的,我整理一下。也希望国内的朋友一起努力,把其他项目的Blueprint都整理一下,方便大家对Openstack的新版本的理解。
基本把所有的Bueprint (BP)都过了一遍,应该算是看懂一大半以上吧。
BP看起来比较闷,就先八卦一下。
我特别喜欢蒋清野这句话:开放源代码作为一种新的商业模式,并不比传统的闭源模式具有更高的道德水准。同理,在道德层面上对不同的开放源代码实践进行评判也是不合适的。
目前Horizon项目是Redhat和HP在主导。以前HPcloud,自己开发了一个Dashboard,目前已经放弃,专用Horizon来对外提供服务。Redhat自己的Openstack版本,Dashboard也不会自己开发,会使用Horizon。所以他们两家投入大量的力气来修改Horizon。Redhat为了让Horizon的UI符合Redhat企业软件的需求,也就投入大量人手去改善Horizon的UI。
Router Rules Support for Horizon
这个功能看上去很酷,租户可以设置自己的路由器规则,不过我在router没有找到任何地方可以设置。详细看了一下Blueprint,原来这个功能,是需要Neutron BigSwitch plugin。你用ovs是没戏。
现在Openstack上很多功能,都是厂商增加的,很大程度都会和硬件捆绑。
Add support for public container
这是swift相关的功能,当你创建一个容器的时候,你可以设置他的用户的访问权限ACL。这个功能,其实Rackspace和AWS都是有,尤其AWS上的ACL控制,功能是非常强悍的。
Support for Live Migration
这个功能比较酷,国内关心这个的,实在太多。以前Dashboard里提供的迁移,其实是冷迁移,现在已经可以热迁移,不过我还没测试。
Openstack上现在的本地存储是支持,冷迁移和热迁移,只是如果是本地存储,迁移很慢而已。演示是比较酷的。
Allow users to create pseudo directories independent from object upload
这也是swift的功能,其实你在dashboard里看到swift上的文件夹,都是假的,对象存储是没有目录的概念。
Horizon reusable charts
Dashboard要看的比较好看,就需要有各种的图来显示相关数据。这里提供了柱状图和饼图。以后大家要创建图,就可以直接使用。
Horizon项目为了让所有的代码都符合License,付出很大的代价,凡是不满足License要求的都不用。
Inline editing for DataTables
如果我们希望编辑一些属性,我们需要点击edit的按钮,跳出一个页面进行编辑,这个显得有点不太友好。有些情况下,可以直接在显示的页面里,直接进行编辑。
Introduce AngularJS as Frontend Javascript Framework
以前Horizon对输入的数据是不进行前端的校验,经常造成提交后报错。最典型的一个案例,就是如果你的falvor小于你的镜像要求,那么就会出错,如何在前端去避免这个错误呢。
引入这个Blueprint后,前端就可以做的更加丰富,用户体验更好。不过目前页面里,还没很好使用这个功能,希望下一个版本,能全部实现。
Implement RBAC support for volume
RBAC,基于角色的访问控制(Role-Based Access Control),这个功能,对于一个租户下,多个用户,进行权限划分,就非常重要。
假设A用户是管理员,b用户只有查看的权限,C用户可以创建虚拟机,维护自己的虚拟机。这些企业比较需要的功能,都需要RBAC来实现。甚至某个用户只能看网络,存储。
所以Openstack所有的组件都需要RBAC,这样才算比较完善,目前只有几个组件支持,后续的完善需要到J版本。如果你想相信了解这块,可以去Rackspace看看,他们已经在Web端实现。
这个应该是和JS的代码要求。写代码和Js的朋友可以深入研究一下。
Introduce a plugin architecture for Horizon
引入插件的机制,让别的项目可以利用使用这个机制,扩展Dashboard。日后Openstack的其他项目,估计都会通过插件的方式,添加到Horizon里。
现在比较流行所谓的APP Store,我想比较类似,如果你启用某个插件,就会具备某个功能。
DataTable with support for Django Formset
这应该也是让表格的数据显示更加友好,和上面可以直接编辑表格数据比较类似。
Wizard UI for workflow modal dialog
这个功能很酷,引入的向导和工作流。例如虚拟机创建流程和网络创建过程。
这是一个很好的开始。虚拟机的创建流程需要到J版本,才能实现。
这个应该是代码清理,说明真的很多人真的在干活啊。
Dashboard里,你可以通过console访问linux的虚拟机,如果是windows的虚拟机,那么以前是没啥办法的,如果这个windows的虚拟机的RDP端口没有打开,那你就彻底没戏。
通过这个,你可以通过console访问到虚拟机,基本啥都可以做,类似你坐在机器前面,接显示器在干活。
Add cinder ‘extend’ volume functionality support
现在卷,已经可以扩大,这个功能,已经在Dashboard里实现。
Allow tables to be filtered based on criteria
当你虚拟机多了时候,页面如何显示和搜索,就是一个问题。增加了一个过滤条件,可以基于project来搜索。
这里其实还有点小问题,无法搜索全部。让同事提交一个bug。
Create a volume as a copy of a volume
这个倒是很好理解,看图
Enhance UX of Navigation
这个Blueprint,非常大,是Redhat主导,让Dashboard的风格,更加符合企业的使用习惯。
看起来非常爽,至少我是这样的感觉。
Extend the plugin-based config for Panel
这个功能我和同事验证了一遍,以后对Dashboard做减法,就更加方便。什么是Panel?
1级菜单:project,admin,setting
二级,admin下的:system Panel和Identity Panel
3级:就是system panel下的菜单。你可以通过配置,让这些菜单是否显示。
/opt/stack/horizon/openstack_dashboard/enabled
里面提供了一个例子
cp _60_admin_remove_panel.py.example _60_admin_remove_panel.py
重启apache,就会发现System info的那个菜单没有了。
Implement RBAC support for image
镜像服务的RBAC,和RBAC的功能,都是HP提交的。
Modals and supporting different screen sizes
现在的显示器分辨率大家差异还是不小。以前的做法就用大家最常用的1366×768来设计页面,那么在大显示器显示,效果并不太好。
这个功能我的理解是根据显示器分辨率来显示,改善显示的效果。不同分辨率效果图
Checks min requirements before trying to launch an instance
以前用户登录后创建虚拟机失败,很大一部分原因就是选择Flavor和镜像要求不一致,硬盘或者内存不满足需求。
如何解决这个问题呢?那就是你上传镜像的时候,设置好最小内存和最小磁盘,同时在创建虚拟机的流程里,加上各种判断。
填写完这两个参数,你就会发现虚拟机创建流程,当你选择image以后,Flavor会调整,并且小于需求的Flavor无法选择。
Preset the “Devize size” field in the “Launch Instance” form with the min_disk properties
看图就明白,这其实是对上面的BP一个完善
Provide an interface for managing host aggregates and availability zones
把以前需要命令配置的在Dashboard里实现,这些都是管理员设置的。
Support Cinder v2 in Horizon
Dashboard是根据keystone的endpoint来决定使用api的版本的。Horizon支持Cinder的最先版本的API。
支持不同的饼图,
这个就和测试,devstack有关。
以前只能管理员看到全部的使用情况,用户可以看到自己每天的使用情况,就是也有一个Overview的页面
就是创建完的heat 的stack,现在可以update。
这个和测试有关,AngularJS相关的测试,比较有学问,没搞懂。
VPN服务相关。可以对创建的vpn进行修改。
Add disk config option support
虚拟机创建的过程中,默认会根据你选择的Flavor,把虚拟机的硬盘的根分区调整到最大。不过有些用户并不希望这样,他们希望自己手工区分区。
假设一个镜像他的磁盘是20G,那么他选择一个40G的flavor,选择手动分区,那么你创建完的虚拟机,磁盘是20G,你需要手工的方式把剩下的磁盘20G,进行分区,添加到系统里。
这个和swift有关
经常有人问:如何限制虚拟机的磁盘IO和网络带宽,方法很多,不过最简单的就是通过Flavor。
你可以设置某个flavor的cpu,网络速度和磁盘IO。这个功能,大家要好好测试。
swift有关,可以update 对象的信息。
代码清理工作
前端的,就是让左边的导航,可以收缩起来,更加方便。
Django 1.6 support
现在最新的Django,应该是1.7,J版本,就会升级。Horizon项目更新还是很及时的。基本保证所有的组件都是最新的。
这其实是windows镜像的功能,把虚拟机创建随机生成的密码,可以进行加密。这个做法和AWS是一样的。
感觉着更多是一个bug fix。
如果只用AngularJS做个数据校验,还不如不用。这两个玩意怎么看怎么配不到一块去
前端的东西不太懂,感觉现在这个还很时髦。
我怎么感觉horizon进展不大,更新的东西都是边边角角
不是啊,现在Horizon项目受到的很多公司的重视。这个版本做的东西少,主要是因为圣诞和春节,另外还有一个事故导致。相信J版本,会有让人惊喜的变化。未来J版本的改进,在I版本,已经打好的基础。
恩,确实horizon越来越受重视,hpcloud就是完全基于horizon。
为什么不直接用angularjs作为前端加openstack的restful api作为后端调用的模式开发dashboard?
angularjs是刚刚引入,后续说不定会有大动作。
Angularjs和Horizon的理念相似,前者的directive和后者的控件封装都是遵循DRY,但是他们注定是水火不容的:
1 前者是浏览端渲染,后者是服务端渲染
2 前者只需关注数据如何pull/push、定义数据和布局的关系,剩下的都是Angularjs可以自动处理。 后者除了关注数据的pull/push,定义布局,每个数据的更改对布局影响都要人为干预。
3 Angularjs纯JS实现,非常符合UI开发的自由灵活理念,Horizon写个UI还要学python,写完python还要学如何封装。。
作为一名正在学习Horizon的Angularjs粉,非常希望这个框架把整个Horizon的python封装踢掉。。
社区以前曾用过 JS 写 Dashboard,后来才迁到 Python 写的 Django 上,再转为 Angularjs 可能性不大……
我也看不到这个希望,我司产品也在转型上Horizon,被逼离开JS的舒适区好难受 o(╯□╰)o
Horizon 的重度python是个很大的问题,不利于扩展。
实例显示还没不能搜索全部吗?
H版这个确实是个大BUG,只能搜索当前页面,当实例多了,很麻烦
现在只是增加项目过滤,也还是不能搜索这个项目所有实例?
PS一句,live-migration在命令行上是有的,若采用共享存储,如GlusterFS等,切换的速度是很快的。不过,切换的节点间,CPU架构要兼容,最好是一致,否则,可能会失败,切换前会进行校验的。
Horizon 还有很大的问题是,执行错误没有反馈日志,直接一个Error就算了。
迁移的要求,cpu相同,基本所有的虚拟化迁移的要求都是一样的。执行错误没日志,应该说是没把日志很好展现出来,到底错误的原因是啥。目前应该在努力改进中。
请问:
为什么非要登录控制器后才能调用restful api? 如何不登录也可以调用restful api?
请问如果要跨域调用openstack restful api,openstack该如何设置?