對於一個公有云產品來講,同時運行和維護兩套架構(ASM和ARM),絕對算得上是前無古人後無來者的偉大壯舉了。在當初沒有完全弄清楚市場需求的狀況下,稀裏糊塗的推出了以Cloud Service爲核心的ASM架構,準備高舉高打,直接跳過IaaS去玩PaaS。結果...仍是不得不向IaaS低頭,在Cloud Service中笨拙的添加VM Role...
的確,ARM架構比ASM架構更先進,確切的說,有了ARM架構,Microsoft Azure纔算從奇葩走向了主流。在Microsoft國際版中,ARM架構在快速的演進。而Azure中國版的更新進度卻慢慢吞吞。這給用戶特別是開發者帶來很大的麻煩。java
全部Azure的SDK,包括.net,java,nodejs等,都是基於Azure RESTful API的。若是RESTful API的版本落後,或者某些API不存在,任何SDK都無法工做。以Java SDK爲例,其master版本已是1.0了,
由於這個本版本中用到了版本號爲:2016-04-30-preview的API,而這個版本的API在Azure中國版尚未發佈。若是想用Java SDK,而且還想用ARM模式管理Azure資源,辦法只有一個:回退到0.9版本。
總結下來就是:對於全部的Azure SDK來講,若是最新版沒法在Azure中國版上運行,那麼就只能降級。具體降級幾個版本,請查閱官方文檔或者源代碼。原則只有一個:SDK中不能夠調用在Azure中國版上不存在的API版本。node
所謂的ARM Template,能夠理解爲調用REST API的request body,所以,在ARM Template中,是會包含API版本信息的,例如:
顯然,這個template在Azure中國版上也是無法使用的。但更大的問題是:Azure官方的ARM Template,只要是持續更新的,無論是文檔裏面的,GitHub上的仍是blog上發佈的,都是與Azure國際版保持一致。所以,目前狀況是:大多數ARM Template已經無法直接在Azure中國版上使用了!
對於compute而言,除了上述提到的API版本號問題,還有一個就是:Managed Disk,Azure國際版已經全面過分到Managed Disk,而Azure中國版仍是傳統的storage磁盤。
例如:Azure國際版上VM的Disk定義是這樣的:api
"osDisk": { "createOption": "FromImage" }, "dataDisks": [ { "diskSizeGB": "1023", "lun": 0, "createOption": "Empty" } ]
而Azure中國版VM的Disk定義倒是這樣的:架構
"osDisk": { "osType": "Linux", "name": "cg-dev-t001", "createOption": "FromImage", "vhd": { "uri": "https://rgt01disks932.blob.core.chinacloudapi.cn/vhds/cg-dev-t00120170310132202.vhd" }, "caching": "ReadWrite" }, "dataDisks": []
因而可知,將Azure國際版的ARM Template翻譯成for Azure China的版本,工做量仍是挺大的。
Microsoft造就了全宇宙中體積最大,功能最強的IDE,但不知道爲何一直沒有給ARM Template作一個可視化編輯器,這方面,卻是AWS的Cloud Formation走在了前面。
Azure卻是有一個第三方的ARM Template工具,可是看起來最近都沒有怎麼更新了。其使用體驗也的確不咋滴。
編輯器