首先介绍下在本文出现的几个比较重要的概念:html
函数计算(Function Compute): 函数计算是一个事件驱动的服务,经过函数计算,用户无需管理服务器等运行状况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考。
Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它经过一个资源配置文件(template.yml),协助您进行开发、构建、部署操做。Fun 的更多文档 参考。
ROS: 阿里云资源编排服务(ROS)助您简化云计算资源的管理。您能够遵循ROS定义的模板规范,在模板中定义所需云计算资源的集合及资源间依赖关系。ROS自动完成全部资源的建立和配置,实现自动化部署和运维。更多文档参考。node
备注: 本文介绍的技巧须要 Fun 版本大于等于 3.0.0+。git
在 Fun 3.0 版本以前,Fun Deploy 功能只有一种部署方式,即直接使用 fun deploy
命令进行部署。github
随着用户的不断反馈,虽然咱们一直在加强 deploy 的功能,但咱们 Fun 依旧在某些场景下作的依旧不够好:服务器
为了解决这些问题,咱们在 Fun 3.0 引入了一种全新的部署方式:ROS。app
ROS 经过 Transform 宏实现了将函数计算的模板语法转换为 ROS 支持的语法。这意味着对于 Fun 规范文档 里描述的语法规则,ROS 是一样支持的。同时,ROS 支持的资源 也能在 Fun 模板文件中进行声明了,好比 RAM、函数工做流 等等。less
可使用 -h,查看 fun deploy 的帮助文档:运维
$ fun deploy -h Usage: fun deploy [options] [resource] Deploy a serverless application. use 'fun deploy' to deploy all resources use 'fun deploy serviceName' to deploy all functions under a service use 'fun deploy functionName' to deploy only a function resource with '--only-config' parameter, will only update resource config without updating the function code Options: -t, --template [template] The path of fun template file. -c, --only-config Update only configuration flags --use-ros Deploy resources using ROS --stack-name <stackName> The name of the ROS stack -h, --help output usage information
当部署 ROS 相关资源时,须要在 fun deploy 后面追加 --use-ros
以及 --stack-name
两个参数,--use-ros 表示使用 ROS 的方式进行部署,--stack-name 表示使用 ROS 部署时使用的资源栈
的名称。函数
如何理解资源栈呢?简单理解起来就是使用模板文件部署的一整套应用(云端资源集合)的 ID。即便同一个模板文件,也能够经过指定不一样的资源栈的名称,实现部署多套应用。当经过模板文件进行部署时,会将模板文件的资源属性与所指定的资源栈进行对比并计算差别,进而完成线上资源的建立、删除、更新等操做。工具
直接执行下面的命令便可初始化一个简单的函数示例:
fun init -n RosDemo event-nodejs8
在体验上,因为 ROS 部署,要求资源必须“云化”。也就是没办法直接使用本地的代码资源。必须先经过 fun package 命令将资源上传到 oss:
fun package --oss-bucket bucket-name
最后将资源经过 ROS 的方式进行部署:
fun deploy --use-ros --stack-name bucket-name
经过在部署时,指定不一样的 stackName,能够部署应用到不一样环境:
fun deploy --use-ros --stack-name test fun deploy --use-ros --stack-name staging fun deploy --use-ros --stack-name prod ... ...
从网上、模板或者官方文档看到相关示例,进行一些测试后,想要将这些资源所有清理干净。能够打开 ROS 控制台,找到想要删除的资源栈,点击删除后。咱们测试时建立的全部云资源,就都会被正确的清理掉了。
在部署过程当中,任何资源的操做失败,都会致使整个资源栈的回滚,经过这种机制,能够成功解决部署过程当中的服务不可用的问题。
除了原有的 Fun 定义的资源外,如今 ROS 支持资源也能够在 Fun 的模板文件里声明了,好比咱们能够经过下面的方式声明一个 oss 的 bucket 实例:
Bucket: Type: 'ALIYUN::OSS::Bucket' Properties: BucketName: 'oss-unzip-demo-bucket'
经过引入 ROS 的部署方式,解决了咱们在开篇提到的几个问题(除“部署差别查看”功能还在开发外,其余功能都可以在 Fun 3.0.0 版本中使用了)。
若是你们在使用 Fun 的过程当中遇到了一些问题,能够在 github 上提 issue,或者加入咱们的钉钉群 11721331 进行反馈。
本文为云栖社区原创内容,未经容许不得转载。