基于IronFunction搭建的Serverless服务

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Serverless服务简介

采用 oracle 的开源项目 iron-io / functions 实现 serverless 服务

使用场景

  • cron执行的脚本计划任务
  • 无状态的API服务

基本原理

  1. 通过本地构建的执行代码
  2. 通过 fn 指令自动打包成 docker 本地镜像
  3. 上传至自有 registry ( https://hub.oschina.net )
  4. 在serverless管理服务上面注册新的app
  5. 在serverless管理服务建立url路由,绑定刚刚定制的app
  6. 通过url地址,随时随地执行指令

基本需求

  1. Docker 客户端,版本好像1.2以下都不行,包括1.2版本在内
  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 demo
echo '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.net
fn push

创建serverless接口地址

export API_URL=http://192.168.82.54:6666  # http://192.168.82.54:6666 是serverless服务的管理访问接口地址
fn apps create demo # 创建接口app
fn 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 # 本地创建镜像,并上传到私有registry
fn routes update demo /hello  # 更新路径链接

转载于:https://my.oschina.net/mesopotamia/blog/1556375

你可能感兴趣的:(基于IronFunction搭建的Serverless服务)