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工具,但是看起来最近都没有怎么更新了。其使用体验也的确不咋滴。

posted @ 2017-03-11 14:13  北漂的大尾巴老猫  阅读(501)  评论(0编辑  收藏  举报