全球公有云編排服務大比拼
領域澄清
首先明確我們在講什么,也就是本文描述的應用編排,資源編排是什么東西。
在云上編排的含義一般有兩種:
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:(Cloud Deployment 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-RM:(Resource Manager)
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
青云的資源編排特點是,不開放模板語法,只提供圖形化設計器。
并且這個圖形化設計器體驗還不錯,有所見即所得的感覺。
但是由于沒有開放模板語法,只靠圖形化設計器,復雜場景編排能力不足。
騰訊 無
云上自動化能力是一個云平臺的剛需,這里一首涼涼送給騰訊云。。。
公有云編排服務對比
我們直接給出分析結果,省去啰嗦的文字。 (文字時效原因,如果有不正確的,及時聯系更正哈)
編排能力對比
√表示“強/做得好”,O表示“一般/待增強”,X表示“沒有此特性”。
功能
特性
AWS
CFN
Aliyun
ROS
Huawei
AOS
OpenStack
Heat
K8S
Helm
Azure
RM
CDM
說明
編排能力
入參/對象/輸出
√
√
√
√
√
√
√
編排基本功能
查表參數
√
√
√
X
√
√
X
Mapping表語法,定義表格方式提前確認變量值
條件部署
√
√
√
√
√
√
X
Condition條件語法,靈活控制對象是否創建
編排對象
√
√
O
√
X
√
√
可編排基礎云服務的種類
Helm只支持K8S內部對象
K8S對象
X
X
√
X
√
X
X
直接編排Kubernetes集群中的對象,如deployment,Secret等
輔助對象
√
O
O
O
X
X
X
不代表真實云服務,但對象提供流程輔助
例如:WaitCondition對象
批量創建
X
O
√
X
X
√
X
指定某個對象的創建數量
刪除策略
√
√
√
√
X
X
X
如堆棧銷毀時,部分堆棧資源是否保留
內置函數
√
O
O
O
√
√
√
字符串拼接: Fn::Join
獲取屬性: Fn::GetAtt
內置變量
√
√
√
√
√
X
√
AWS中:AWS::Region
ROS中:ALIYUN::StackName
對象取值
√
√
√
√
√
√
√
A服務的屬性,從B服務的結果取值。
資源啟動順序
√
√
√
√
√
√
√
如 DependOn 依賴關系
頭文件引用
O
X
√
O
√
X
√
長模板文件拆分為多模板文件管理
Metadata定義
√
O
O
O
X
X
O
為對象填加自定義擴展屬性
例如VM的Userdata啟動腳本
堆棧嵌套
√
X
√
O
√
√
堆棧包含另一個堆棧,大型協作場景(如解決方案)需要
虛機應用輔助
√
X
X
O
X
X
X
如cfn-init/cfn-hup等,部署VM虛機應用的輔助工具
堆棧更新
√
O
O
O
√
O
√
1. 增加/刪除元素
2. 某個已有元素改變屬性
給出詳盡變更預覽,如ChangeSet
模板內注釋
√
X
√
√
√
X
√
ROS不支持Yaml語法,只支持Json。但是Json不能加注釋
訪問權限控制
√
O
O
X
X
√
√
控制不同用戶訪問模板or堆棧,例如通過tag標簽,Group等
模板設計器/IDE
√
O
√
X
X
O
X
圖形化模板設計器,
或者模板編輯IDE
自動生成模板
√
X
X
X
X
√
X
分析已經創建的已存在資源,生成模板文件。如aws的former
設計器能力對比
√表示“強/做得好”,O表示“一般/待增強”,X表示“沒有此特性”。
功能
特性
AWS
CFN
Aliyun
ROS
Huawei
AOS
說明
設計器
元素拖拽
√
√
√
依賴連線
√
√
√
縮放定位
√
√
√
圖文聯動編輯
√
X
√
ROS不支持IDE純文本編輯
圖片預覽
√
√
√
單元素編輯
√
√
√
編輯輸入聯想
X
O
√
光標自動聯想,給出元素可用屬性字段提示
元素屬性提示
X
√
√
復雜的屬性定義,免記編輯
元素復制
√
X
√
關聯刪除提示
√
√
√
中途放棄并新建
√
X
√
多元素同時選中
X
X
X
導入已有模板
√
X
√
全局縮略圖
X
√
X
視圖居中適配
√
X
√
連線取值
√
X
√
A元素的屬性,從B元素的結果取值
編輯撤銷&重做
√
X
√
ctr+z的undo功能
包含對象整體移動
√
√
√
異常關閉恢復
X
X
√
瀏覽器異常關閉情況,可重新恢復之前編輯內容
語法校驗
√
X
√
點擊校驗模板語法
函數快速插入
X
O
X
內置函數語法提示&插入
元素文檔提示
O
O
√
元素關聯文檔地址
一張圖對比
總結
亞馬遜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編輯器支持,是編寫模板一個便捷之處。Infrastructure as Code嘛,寫代碼當然有好的IDE才行。
谷歌CDM
CDM(Cloud Deployment Manager)使用了jinja2和Python作為模板語法,使得模板覆蓋復雜場景的能力大大增強,算一種優勢吧。
然而沒有合適的UI界面,我想你太不懂國人了。
Helm
語法層面的能力OK,足夠支撐在單個K8S集群中,各種k8s對象的復雜編排場景。自身定位為K8S上的管理工具,一般不作為公有云獨立服務,僅為容器服務的附屬功能。
沒有圖形化設計器,也不能將基礎資源與K8S對象混合編排。目前進入CNCF的孵化項目,作為K8S生態一環。
OpenStack Heat
定位是與AWS的Cloudformation一致的,實際編排能力與效果與ROS相似,也就是與CFN還有些差距。根據CFN語法和能力做了很多兼容工作。
沒有圖形化設計器,主要側重OpneStack對象or生態的編排,其他服務支持一般。屬于OpenStack生態一環。
應用編排服務 AOS 云計算
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。