Serverless服务简介
采用 oracle 的开源项目 iron-io / functions 实现 serverless 服务
使用场景
- cron执行的脚本计划任务
- 无状态的API服务
基本原理
- 通过本地构建的执行代码
- 通过 fn 指令自动打包成 docker 本地镜像
- 上传至自有 registry ( )
- 在serverless管理服务上面注册新的app
- 在serverless管理服务建立url路由,绑定刚刚定制的app
- 通过url地址,随时随地执行指令
基本需求
- Docker 客户端,版本好像1.2以下都不行,包括1.2版本在内
- 自有 Docker 仓库 ( registry ),并开放public的权限访问image
搭建服务步骤
创建serverless管理服务
Serverless服务器IP:192.168.82.54
docker run --rm -it --name functions -v ${PWD}/data:/app/data -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 iron/functions
下载本地打包工具fn
- 这个地址我基本没有执行成功过,这个地方我是直接下载的fn可执行文件
curl -LSs https://goo.gl/VZrL8t | sh
客户端操作步骤
创建执行代码
mkdir demo && cd demoecho 'print hello oschina.net' > ./func.py
初始化脚本
初始化会成功会生成一个同名的yml文件,内容类似一个dockerfile文件
fn init hub.oschina.net/eric/hello # hub.oschina.net是自有仓库地址,eric是项目名字,hello是镜像名字
打包本地镜像
fn build
上传私有仓库
docker login hub.oschina.net export FN_REGISTRY=https://hub.oschina.netfn push
创建serverless接口地址
export API_URL=http://192.168.82.54:6666 # http://192.168.82.54:6666 是serverless服务的管理访问接口地址fn apps create demo # 创建接口appfn routes create demo /hello # 建立访问路径链接。/hello 是访问路径,最终访问路径:http://192.168.82.54:666/r/demo/hello
访问测试
第一种方式
curl http://192.168.82.54:666/r/demo/hello
第二种方式
fn call demo /hello
迭代更新步骤
fn bump # 自动迭代yml配置文件夹中的版本号,版本号是采用语义版本号模式来定fn build && fn push # 本地创建镜像,并上传到私有registryfn routes update demo /hello # 更新路径链接