SmartCMP可视化的多云编排能力,和Terraform相较如何?发表时间:2021-01-22 11:19 作为国内云原生管理领域的公司,我们经常会被问起,你们SmartCMP的服务编排和Terraform有什么区别。下面,我们就来介绍一下IaC、服务编排等概念以及SmartCMP和Terraform的异同。
基础设施即代码(IaC)是一种通过机器可读的定义文件管理设备和服务器的方法。从根本上说,你要写下你希望的基础设施是什么样子,以及应该在该基础设施上运行什么代码。然后,按下一个按钮,说“部署我的基础设施”即可。
Terraform申请云资源Terraform 是 HashiCorp 推出的一个很棒的基础设施即代码工具( https://www.terraform.io/ )。Terraform相比传统人工操作,有如下好处:
•基于 IaC(基础设施即代码,Infrastructure as Code)的设计,可以将基础设施以一种领域特定语言描述出来,消除了在基础设施自动化时描述语义上的歧义,同时减轻了人为因素造成的不确定影响。
•Terraform 在执行编排动作前,会生成一份可读性良好的执行计划,关键基础设施的变更可以得到充分审查,保证了基础设施的可靠性。 谁来审计?是否有审批?
•基于 DAG(有向无环图,Directed Acyclic Graph)描述资源与资源之间的关系,由于 DAG 良好的拓扑性质,当资源属性与资源关系发生改变时,变更动作将被充分并行地执行。
首先,让我们来看看Terraform创建阿里云 ECS的一台VM的例子。
1. 需要先配置好环境,确保访问信息都已经在执行的系统设置完毕 2. 开发如下ECS创建代码 3. 运行terraform apply开始创建
简单吗?看上去很简单,其实一点不简单。我们来分析一下社区Terraform是否合适构建企业级的IaC平台: (1)每个执行环境都需要拥有云平台的Access Key (2)写ECS VM创建的脚本,需要记住一系列没有多大含义的ID,比如image id、区域名等等 (3)创建ECS VM后,只能本人来修改,没法做到团队合作
考虑到企业级的流程和合规,欠缺的问题就更多了。于是,有不少公司自研了不少系统,解决如下的通用问题: ·是否所有的阿里云区域,Image都可以符合IT的安全规范? ·ECS创建是否需要流程审核? ·ECS变更,删除是否有流程管控? ·云资源是否有明确的租期? ·是否每一位申请云资源的人,都需要成为terraform?
SmartCMP申请云资源
SmartCMP从4年多前的1.0版本,就一直把强大的服务编排和基础设施即代码能力作为平台的核心价值之一。平台的IaC能力是基于国际标准的TOSCA构建的。在我们分析SmartCMP的IaC技术细节前,我们来看看在我们平台上,用户是如何申请一台阿里云ECS主机的。
SmartCMP提供可视化的,自服务的申请
普通用户点击第一个服务卡片,就会进入到申请页面。整个页面分成三大块。 1. 申请服务的蓝图和申请人的组织信息。组织信息让平台能够根据申请人的背景提供可选择的资源环境。 第二部分 申请的基本信息,包括标签、租期等
第三部分: ECS的配置 通过和Terraform的比较,可以发现SmartCMP可以提供非常类似的配置,但都是通过策略限制和下拉的方式提供。 (SmartCMP平台可统一管理阿里云访问密钥,阿里云可用区等资源环境会根据用户进行动态调整,镜像也会以下拉的方式提供,以及完善合理的费用预估)
申请后,平台就开始执行云资源的创建。SmartCMP平台每次申请的结果都是服务部署。(因为一次编排可能产生一个或者任意多个云资源)
可以跳转到ali-Instance详情页面,看到ECS Instance的动态信息,并做变更操作。
看到这里,也许有人会认为,这些都是UI直接交互的,和IaC、Terraform有什么关系呢? 其实IaC,服务编排就是SmartCMP的核心基础。我们来看看SmartCMP的IaC能力是如何构建的?
骞云SmartCMP是基于云应用拓扑和编排规范(Topology and Orchestration Specification for Cloud Applications,简称TOSCA)开发的。TOSCA是一种用于描述在云计算平台上的服务和应用程序以及它们之间的关系和依赖性的语言规范。TOSCA可以描述云计算服务及其组件,并记录这些组件的组织方式以及使用或修改这些组件和服务所需的编排流程。这为管理员提供了一种管理云应用程序和服务的通用方法,从而使这些应用程序和服务可以跨不同云供应商的平台进行移植。其实Terraform可以说是TOSCA语法的一种实现方案。
下面介绍一下TOSCA在SmartCMP中的实现方案。 SmartCMP如何支持TOSCA规范?TOSCA本身是一个语言规范,本身不提供任何实现功能。骞云SmartCMP作为从产品设计初始,就采用TOSCA作为云服务描述语言的平台,提供了业界对TOSCA完美的支持。SmartCMP对TOSCA的支持也包括如下核心功能: 云组件 – 对应TOSCA的Node在最新的版本里面,平台将之前软件组件扩展成为任意云组件,进一步完善了对TOSCA的模型支持能力。
云组件的核心目标有如下几点。 1. 用户可以非常方便的添加任意云资源类型,包括IaaS,PaaS,SaaS等,更好的支持SmartCMP构建XaaS的能力。 2. 用户可以非常方便的扩充现有云资源类型的能力,包括添加组件额外的属性,额外的操作,操作的UI交互等。 TOSCA的组件是基于面向对象的,所以SmartCMP的云组件也一样。平台的组件也同意支持面向对象的核心能力,包括 · 对象类型定义,包括私有属性,操作 · 继承关系 · 多态 · 覆盖
下图展示了如何定义任意公有云上的MySQL PaaS服务。
Terraform也有每一个对象类型的定义,并且也是可扩展的,alicloud_instance就是一个Terraform的类型。 服务蓝图 – 对应TOSCA的Topology服务蓝图目前已经是面向服务,面向应用的云管理平台的核心能力之一。通过基于TOSCA的蓝图,我们可以构建一个面向目标的编排引擎,也就是我们画出来什么,最后就部署出来什么,变更出来什么。目前市场上更多的是基于流程的编排,用户需要自己定义每一步需要做什么,该怎么做。
SmartCMP有两种服务蓝图设计状态 1. 所见即所得的画布设计
2. YAML语言编辑,会根据可视化蓝图动态生产
大家可以看到,这个YAML里面并没有任何环境特殊的信息,包括云平台的访问,区域信息,操作系统镜像,安全组ID等。这是为什么呢?原因是我们希望蓝图是一个抽象的拓扑模板,可以在不同场景下复用,所以平台话提供了如下基础设施抽象。
SmartCMP把这些和云平台具体环境相关的内容,抽象出来后,提供用户将一个特定云应用,部署到任意云平台的任意区域的功能,申请人完全不需要了解在不同的云,不同的可用区。(其实存储,网络,操作系统镜像,规格其实都是不一样的。)我们认为,非专业运维人,不需要也没必要了解这些专业知识。 以一个更加复杂的完整应用蓝图设计过程为例,用户可以通过拖拽的形式轻松构建一个Wordpress完整应用,直观快速构建布局合理的清晰架构,而无需关心每台机器、安全组、VPC网络等细节配置。蓝图申请后,可以看到流畅的部署过程,一旦服务出现问题也便于快速发现和追溯。 Wordpress蓝图设计过程 蓝图申请后的动态部署
大家是不是觉得,SmartCMP的可视化蓝图、多云环境的封装、友好的申请体验、符合IT规范的自动化,比Terraform美丽多了呢?
Terraform是一个非常优秀的IaC和服务编排引擎,但它的定位更多是专业运维人员的自动化脚本,和它更匹配的是Ansible等工具。SmartCMP同样提供了IaC和服务编排能力,但其定位是一个面向企业所有用户的统一云服务中台,能够提供完善的流程管控,强化IT规范策略,简单易用的自服务能力等等。
各位小伙伴们来体验一下SmartCMP SaaS的强大服务编排能力吧!骞云官网即可注册SaaS账号,体验注册即用的便捷! |