zoukankan      html  css  js  c++  java
  • 云上自动化:全球云上自动化编排系统比拼

    、领域澄清

    首先明确我们在讲什么,也就是本文描述的应用编排,资源编排是什么东西。

    在云上编排的含义一般有两种:

    1.云平台上自动化创建云服务,并部署应用。叫做资源编排or应用编排or服务编排。

    2. 容器应用,根据资源要求,调度到哪个节点上。叫做容器编排or资源调度。

    本文描述范围,为第1种。

     
     

    公有云编排服务介绍

    AWS Cloudformation

    Cloudformation文档地址:

    https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html

    AWS的Cloudformation基本属于云上自动化(编排)这个领域的领头羊,功能完备,支持的自动化场景丰富。

    在整体生态打造的也很成功,Cloudformation模板,与ServiceCatalog服务目录,与Marketplace应用市场,一条线从上到下都打通了。

    谷歌CDM:(CloudDeployment Manager)

    谷歌CDM文档地址:

    https://cloud.google.com/deployment-manager/docs/

    使用Jinja2语法(Yaml类)和Python语法,实现较为讨巧。大部分操作,主推通过命令行完成。虽然控制台界面也有,但功能主要在命令行里(意思是界面比较low)。

    谷歌CDM支持编排资源列表:

    https://cloud.google.com/deployment-manager/docs/configuration/supported-resource-types

    微软Azure-RMResourceManager)

    Azure-RM文档地址:

    https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-overview

    使用Json语法。且整体模板语法偏复杂,使用门槛比较其他家的还高一点。

    有两个比较有特点的功能:

    1.支持根据用户已经在Azure上创建好的资源信息,导出模板。实现类似的“备份”or“快照”的功能。

    2.支持任意对象,指定重复创建次数。实现批量复制的能力。

    Azure-RM编排提供的内置函数非常丰富:

    https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions

    阿里ROS

    ROS文档地址:

    https://www.alibabacloud.com/help/zh/doc-detail/28852.htm

    整体能力跟随AWS Cloudformation,但是还略有距离。可视化模板编辑器,目前并不是很稳定,使用体验一般。

    ROS支持编排的资源列表:

    https://www.alibabacloud.com/help/zh/doc-detail/48893.htm

    OpenStack Heat

    Heat文档地址:

    https://docs.openstack.org/heat/latest/template_guide/hot_spec.html

    整体能力跟随AWS Cloudformation,搞了一些Cloudformation语法兼容的活,连cfn-tools都照着AWS来。但是目前还略有距离。

    也没有图形化设计器。

    Heat可以编排的资源列表:

    https://docs.openstack.org/heat/latest/template_guide/openstack.html#

    华为AOS

    AOS文档地址:

    https://support.huaweicloud.com/usermanual-aos/aos_01_0000.html

    使用以应用视角为中心的编排,支持Kubernetes集群中的对象编排,并围绕应用支持编排基础资源+服务。与AWS的Cloudformation相比,发力角度从虚机应用转向容器应用。

    图形化的模板设计器,体验很好。特别是智能辅助对于编写模板确实很便捷。可以称作领域标杆。

    AOS支持编排对象列表:

    https://support.huaweicloud.com/tr-aos/aos_01_4013.html

    K8S Helm

    Helm文档地址:

    https://docs.helm.sh/

    Helm其实自己定位并不是编排,而是一个K8S的manifest包管理工具。不过它有自动化部署K8S对象的能力,所以加入比较。

    特点是只认识K8S集群里面的对象,基础的云服务不支持编排。使用范围有限。

    青云RO

    RO(Resources Orchestration)文档地址:

    https://docs.qingcloud.com/product/operation/topology

    青云的资源编排特点是,不开放模板语法,只提供图形化设计器。

    并且这个图形化设计器体验还不错,有所见即所得的感觉。

    但是由于没有开放模板语法,只靠图形化设计器,复杂场景编排能力不足。

     
     

    RedHat Ansible

    Red Hat在2015年收购Ansible,并用在OpenShift里面作为编排服务。

    Ansible定位是基于虚机的自动化运维管理工具,类似的系统还有Chef和Puppet。不过Ansible的特点是无需在目标机器上安装Agent,仅使用SSH远程执行命令就可以完成目标机器的软件安装配置,所以很容易在已有环境中使用。它的本质上是一个工具,而不是一个服务,因为它使用本地目录+文件的方式来管理“模板”。

     
     

    语法使用Yaml语言,可以和Jinja2配合,方便表达出复杂的逻辑。

    不过Ansible只支持任务按顺序单个依次执行,也就是无法设置复杂的有向无环图(DAG)依赖关系。

    所以对流程的编排能力弱了点,但好在支持的对象数量非常丰富,有超过400多种插件。

    腾讯无

    云上自动化能力是一个云平台的刚需,这里一首凉凉送给腾讯云。。。

    公有云编排服务对比

    我们直接给出分析结果,省去啰嗦的文字。(文字时效原因,如果有不正确的,及时联系更正哈)

    编排能力对比

     √表示“强/做得好”,O表示“一般/待增强”,X表示“没有此特性”。 

     
     

    设计器能力对比

     √表示“强/做得好”,O表示“一般/待增强”,X表示“没有此特性”。

     
     

    一张图对比

     
     

    总结

    亚马逊CFN与阿里ROS

    阿里的ROS的定位与AWS的CFN是一致的,功能上也是瞄着CFN追赶。当前情况为:ROS在虚机应用的支持能力远不及AWS-CFN。不过这个cfn-tools也是AWS的杀手锏,各大云厂商都没有。只有Heat做了一些努力去兼容。

    ROS的设计器能力需要增强。目前功能较弱,且在使用中有偶现异常。

    亚马逊CFN华为AOS

        从功能&语法层面,CFN与AOS基本属于第一阵营,各自互有领先。比如AOS在设计器上领先CFN。不过CFN在虚机应用,及复杂多服务组合场景下,领先AOS。所以AOS需要在后续用更多的场景去进一步催熟。

    阿里ROS华为AOS

    ROS在虚机应用部署,及可编排服务的多样性上优于AOS。而AOS在容器应用相关的能力上优于ROS。图形化模板编辑器能力则是AOS大幅度领先。

    青云

    设计器所见即所得的方式,大幅降低使用门槛,用户体验很好。建议将模板语法尽快开放出来,因为编排仅靠图形化设计器,支持的场景有限。

    腾讯云

    云平台上居然没有编排服务,毕竟目前为止,所有公有云都有的刚需服务。希望腾讯云的技术专家回家好好反省,并尽快补齐这个必备的能力。(比如挖一些华为AOS的专家,你看天下武功出少林,中国容器看华为,都一家人嘛)

    微软Azure

    微软的模板使用Json语法,函数的使用是混杂在Json内部,并不像aws-cfn那么简洁,整体体验并不好。感觉把复杂度都提高了很多。

    当然,天然的Visual Studio编辑器支持,是编写模板一个便捷之处。Infrastructureas Code嘛,写代码当然有好的IDE才行。

    谷歌CDM

    CDM(CloudDeployment Manager)使用了jinja2和Python作为模板语法,使得模板覆盖复杂场景的能力大大增强,算一种优势吧。

    然而没有合适的UI界面,我想你太不懂国人了。

    Helm

    语法层面的能力OK,足够支撑在单个K8S集群中,各种k8s对象的复杂编排场景。自身定位为K8S上的管理工具,一般不作为公有云独立服务,仅为容器服务的附属功能。

    没有图形化设计器,也不能将基础资源与K8S对象混合编排。目前进入CNCF的孵化项目,作为K8S生态一环。

    OpenStack Heat

    定位是与AWS的Cloudformation一致的,实际编排能力与效果与ROS相似,也就是与CFN还有些差距。根据CFN语法和能力做了很多兼容工作。

    没有图形化设计器,主要侧重OpneStack对象or生态的编排,其他服务支持一般。属于OpenStack生态一环。



    作者:程序员的那点事
    链接:https://www.jianshu.com/p/96047447f8ce
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    前端项目升级和降级依赖的最佳姿势
    如果你github提交代码,报错remote: Support for password authentication was removed on August 13, 2021.
    js将连接符命名和驼峰命名互转
    滚动条常用样式
    计算该浏览器中滚动条的默认宽度
    解决webpack-dev-server启动后localhost:port可以访问,IP:port不能访问的问题
    获取滚动条宽度的方法
    mysql中的数据类型
    数据库和表的操作
    mysql插入,删除,修改记录
  • 原文地址:https://www.cnblogs.com/mydriverc/p/13457747.html
Copyright © 2011-2022 走看看