sxyzy 发表于 2017-6-30 18:15:35

Microsoft Azure中国版的ARM Template和API版本

  对于一个公有云产品来说,同时运行和维护两套架构(ASM和ARM),绝对算得上是前无古人后无来者的伟大壮举了。在当初没有彻底弄清楚市场需求的情况下,稀里糊涂的推出了以Cloud Service为核心的ASM架构,准备高举高打,直接跳过IaaS去玩PaaS。结果...还是不得不向IaaS低头,在Cloud Service中笨拙的添加VM Role...
  
的确,ARM架构比ASM架构更先进,确切的说,有了ARM架构,Microsoft Azure才算从奇葩走向了主流。在Microsoft国际版中,ARM架构在快速的演进。而Azure中国版的更新进度却慢慢吞吞。这给用户特别是开发者带来很大的麻烦。

SDK
  所有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版本。

ARM Template
  所谓的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定义是这样的:
  

          "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工具,但是看起来最近都没有怎么更新了。其使用体验也的确不咋滴。
  
页: [1]
查看完整版本: Microsoft Azure中国版的ARM Template和API版本